GRUBメニューをタイムアウトにできません(または消えます)。


18

Ubuntu 12.04を実行しています。

私は一生の間、grubメニュー(オプション付き)を廃止することはできません。

最初のオプションで自動起動するようにします。/ etc / default / grubを次のように編集しました。

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""

この後、sudo update-grubを実行しました。それから、grub 2があることに気づいたので、sudo update-grub2を実行しました(どちらもgrub.cfgファイルを正常に作成したように見えます)。

コンピューターを再起動すると、grubメニューに戻り、選択するまでそこに座ったままになります。電源が切れた場合、これは望ましくありません... :-)

また、sudo grub-install / dev / sdaを使用してgrubを再インストールしようとしました-また失敗しました


自動的に起動したい現在のパーティションを設定した後、Ubuntuをインストールした別のパーティションがありますか?
fabricator4

私はあなたが何を意味するのかよく分からない、私はLinuxにはちょっと新しい。以前のUbuntuインストールの上にインストールしましたが、アップグレードしませんでした。クリーンインストール。私はパーティションごとに何かをマックしたかもしれません...それは可能ですが、それを修正するアイデアはありますか?
エリック

sudo update-grubそしてsudo update-grub2、同じコマンドを実行します。だから、その部分を心配しないでください。
saji89

cat /boot/grub/grub.cfg via pastebin の出力を投稿し、ここでリンクを共有してください。これは、実際にgrub.cfg生成されたものを見るためです。
saji89

ここにペーストビンがあります:grub.cfgのpastebin.com/xxe2rLhg。ご助力いただきありがとうございます!
エリック

回答:


22

他の回答が指摘しているように、あなたは記録失敗状況の犠牲者かもしれません。/boot/grub/grub.cfg手動で編集することは、自動的に生成されるため、問題外です。周りに見られる別の提案は、編集することです/etc/grub.d/00_headerが、更新時にユーザーの介入を促すことができます。

最も簡単な解決策は、ドキュメント化されていない GRUB_RECORDFAIL_TIMEOUT変数をで定義することです/etc/default/grub。例えば:

GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=5
GRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT

編集

詳細については、この回答を参照してください。


本当にありがとう、これはまさに私が探していたものです!
Avio

変更を行った後、実行update-grubして更新/boot/grub/grub.cfgファイルを生成します
Colt

の機能を殺さないでくださいrecordfail!起動に失敗した場合は、より長いタイムアウトが必要です。手動でクリアするには、@ sniffskiの答えだけが必要ですgrub-editenv create。しかし、他の理由recordfailが設定されている可能性があります...
キャメロンタックリンド

6

使用する:

grub-editenv create

これにより、grub環境ファイルがクリアされ、次回から明確に起動するはずです。


共有していただきありがとうございます。これはSSH経由で機能し、grubヘッドレスサーバーで立ち往生することになりました。
Geppettvs D'Constanzo

grub-editenv - unset recordfail同様に機能し、設定される可能性のある他の環境には影響しません
Cameron Tacklind

2

GRUB_TIMEOUT=10をゼロに変更します

これは私の構成ファイルです:

GRUB_DEFAULT="Ubuntu, with Linux 3.2.0-30-generic-pae"
#GRUB_HIDDEN_TIMEOUT=10
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

最初に、直接起動するOSの名前を書きます。私はUbuntuです。だからあなたはそれをGRUB_DEFAULT="Ubuntu, with Linux x.x.x-xx-generic-pae"

次にGRUB_TIMEOUT=、デフォルトのOSを選択する前に1秒を与えて1秒を使用しました(たとえばXubuntuなどの別のOSで起動する必要がある場合)

用として、GRUB_CMDLINE_LINUX_DEFAULT=""あなたが削除した場合quite splash、それはあなたが(私それのようにこの方法:P)の代わりに、ブートプロセス中にUbuntuのロゴのテキストが表示されます


別の解決策があります。

GUIでの設定に役立つboot-repairと呼ばれるプログラムがあります。

ここに画像の説明を入力してください

ここに画像の説明を入力してください

画像からわかるように。というボックスがありますUnhide boot menu。ボックスのチェックを外してappyを押すだけです。これには、詳細オプションの矢印をクリックしてアクセスできます。

ブート修復をインストールする

sudo add-apt-repository ppa:yannubuntu/boot-repair

sudo apt-get update

sudo apt-get install -y boot-repair

そしてboot-reapir、ターミナルまたはダッシュから実行します。


3番目のソリューション:

ouは、grub-customizerと呼ばれる使いやすいGUIアプリを使用して、生活を少し楽にすることができます。名前が示すように、Grubメニューエントリを並べ替えるだけではありません。

次の方法でインストールできます。

sudo add-apt-repository ppa:danielrichter2007/grub-customizer
sudo apt-get update
sudo apt-get install grub-customizer

ここに画像の説明を入力してください

メニューからわかるように、show menuオプションがあります。unhceckとそれが機能するかどうかを確認します


変化なし。:-/ GRUB_DEFAULTはメニューのリストによると数値#であると思われましたか?GRUB_TIMEOUTを0に変更しても解決しませんでした。
エリック

@Ericでは、2つの方法を使用できます。GRUBリストでOSの場所がわかっている場合は、数字を使用できます。しかし、私には4つのLinuxディストリビューションと1つのWindowsに加えてmemTestとリカバリがあります。だから私は彼らの場所を覚えるのは難しい:)だけを確認するために(私はあなたがそれをやったかもしれないことを知っているが、ただ確認するために:P)。grub-update値を変更してから実行しましたか?
スハイブ

値を変更した後、grub-updateを実行しました。:-/
エリック

提供したブート修復アプリをインストールして使用しましたが、最初の再起動時に機能します。その後、GRUBメニューに戻り、キーを押すまでそこにあります。すべてのあなたの助けをありがとう、私は本当に感謝しています。ここからどこへ行くかわからない
エリック

私は3番目の解決策は、それを確認した@Eric OK
Suhaib

2

GRUB_HIDDEN_TIMEOUTおよびGRUB_HIDDEN_TIMEOUT_QUIETオプションは廃止されました。これらをコメントアウトしてください。

メニューをスキップして、を押しているときにのみ表示するにはESC、以下を追加します。

GRUB_TIMEOUT_STYLE='countdown'
GRUB_TIMEOUT=1

サンプル /etc/default/grub

GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
#GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=1
GRUB_TIMEOUT_STYLE=countdown
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT=""
GRUB_CMDLINE_LINUX=""

'GRUB_TIMEOUT_STYLE':このオプションが 'countdown'または 'hidden'に設定されている場合 、メニューを表示する前に、GRUBは 'GRUB_TIMEOUT'で設定されたタイムアウトが期限切れになるのを待ちます。場合はESCはその時に押され、それがメニューを表示し、入力を待ちます。


それはすべきではなく、それがないすべては、1秒間のショーの標準的なメニューです。少なくとも真新しい16.04
frnhr

1

次の行を追加することでその問題を解決できます /etc/default/grub

GRUB_DISABLE_OS_PROBER=true

...そして実行しsudo update-grubます。

説明:ファイル/boot/grub/grub.cfgupdate-grub/etc/grub.dおよびのファイルを使用して実行することにより生成されます/etc/default/grub。したがって、を編集しないでくださいgrub.cfg。ただし、タイムアウトが設定されている理由を見つけることが役立つ場合があります。で始まる行を検索してから、set timeout=で始まる次の行を検索し ### END /etc/grub.d/ ...ます。これにより、どのスクリプトがタイムアウトを設定するかのヒントが得られる場合があります。私の場合、os-proberスクリプトがタイムアウトの原因でした。/etc/grup.d/30_os-proberによって設定されていない10秒のハードコードされたタイムアウトがあることがわかりGRUB_TIMEOUTます。os-proberを無効にするかGRUB_DISABLE_OS_PROBER=true、を編集できます。他の人が指摘したように、別の理由はrecordfailであるかもしれません、この場合セットです。/etc/grup.d/30_os-proberGRUB_OS_PROBER_SKIP_LIST proberをにするか、一部のハードディスクパーティションをまたは使用してスキップます(30_os-proberは、別のOSが見つかったときに使用されます)。詳細については、このQ&Aを参照してくださいGRUB_RECORDFAIL_TIMEOUT=$GRUB_TIMEOUT


0

ルートファイルシステムを読み取り専用に設定するためにAUFS(unionfs)を使用した後、常にgrubメニューが表示されるという問題がありました。起動するたびにサーバーでEnterキーを押す必要がありました。ここの指示に従いました:grub 2メニューを無効にします。以来、私はまったく問題がありませんでした。

/boot/grub/grub.cfgを編集して変更します。

if [ ${recordfail} = 1 ]; then
  set timeout=-1
else
  set timeout=10
fi

if [ ${recordfail} = 1 ]; then
  set timeout=1
else
  set timeout=10
fi

ソリューションの前と後はまったく同じです。
RawwrBag 14

set timeout=-1はと同じではありませんset timeout=1。前者は「永遠に待機」であり、後者は「1秒間待機」です。
ジェフマクジャンキン

0

私のUbuntuには常に値が設定されているかどうかに関係なく、常に30秒のタイムアウトがありました。ここで、recordfailが欠損値であることがわかった方法を次に示します

1.実際のgrubスクリプトを確認します /boot/grub/grub.cfg

私見、Grubが何をするかを確認する最良の方法は、を開くこと/boot/grub/grub.cfgです。grub-mkconfigからのテンプレートとからの/etc/grub.d設定を使用して自動的に生成されるスクリプト/etc/default/grubです。

109行目付近に、次のようなものが表示されます。

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=30 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

私の場合、その生成されたスクリプトの助けを借りて、recordfail変数が設定されていないことがわかりました。

2. recordfail変数が設定されていない場合は、設定します

/etc/default/grubお気に入りのテキストエディター(vimなど)で開き、変数GRUB_RECORDFAIL_TIMEOUTを指定の値(5秒など)に設定します。

設定ファイルは次のようになります。

GRUB_DEFAULT=0
GRUB_TIMEOUT=3
GRUB_TIMEOUT_STYLE=hidden
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""
GRUB_RECORDFAIL_TIMEOUT=5

3.構成を更新して実行します update-grub

最後の手順では、構成を更新してで実行しupdate-grubます。今のところ、GRUB2は設定されたタイムアウトを使用します。このコマンドは/boot/grub.cfgファイルを再生成します。

4.生成されたスクリプト結果を検証する

ここでも、/boot/grub.cfg109行目付近の結果を開いて確認します。

108 if [ "${recordfail}" = 1 ] ; then
109   set timeout=5 # Note here this value
110 else
111   if [ x$feature_timeout_style = xy ] ; then
112     set timeout_style=hidden
113     set timeout=3
114   # Fallback hidden-timeout code in case the timeout_style feature is
115   # unavailable.
116   elif sleep --interruptible 3 ; then
117     set timeout=0
118   fi
119 fi

行109の値は、以前の30ではなく5になりました。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.