起動時にGRUBメニューを非表示にして、ShiftキーまたはEscキーで非表示のGRUBメニューを表示する方法


10

私はUbuntu 16.10を実行しています。電源オン/ブート時にGRUBメニューを非表示にしようとしています。またShiftEscキーまたはキーを押したときにのみメニューが表示されるようにしたいと思います。

で適切なオプションを変更し/etc/default/grubても、メニューが非表示になりません。

これを調査したところ、2013年のこのGRUB隠しメニューが機能しいないというこの投稿が機能しいないことがわかりました。これは、問題がしばらく続いていることを示しており、変更し/etc/grub.d/30_os-proberない方がよいと示唆しています。このコードは、複数のOSが見つかったので、GRUB_TIMEOUT=10とにかく設定することを示唆しています。

ここに私が今持っているもののスニペットが/etc/default/grubあります... 10秒のカウントダウンを持つメニュー...

GRUB_DEFAULT = saved
GRUB_SAVEDEFAULT = true
GRUB_HIDDEN_TIMEOUT_QUIET = true
#GRUB_HIDDEN_TIMEOUT = 0
GRUB_TIMEOUT = 10
GRUB_DISTRIBUTOR = `lsb_release -i -s 2> / dev / null || Debianのエコー `
GRUB_CMDLINE_LINUX_DEFAULT = "静かなスプラッシュ"

私のコメントを外した場合は#GRUB_HIDDEN_TIMEOUT=0、その後、sudo update-grub私も設定することを主張GRUB_TIMEOUT=10しますGRUB_TIMEOUT=0。私はそうしますが、それでもGRUBメニューが表示されます。

ではterminal、タイピングinfo -f grub -n 'Simple configuration'はさまざまなオプションを説明しており、情報の最後には、現在のコマンドの一部が廃止されていることを示しており、新しい置換がより良いことを示唆しています。

私は16.10で非表示にするには、私のGRUBメニューを取得することができますどのように誰でも知っている、それは認識していShiftたりEsc、起動時にキーは?


これを聞いてよかった。私も動作しませんでした。これは、ボックスがデュアルブーターであることが原因であることが確認されました。
オーガニック大理石

1
@OrganicMarble問題は複数のOSに関係しています。テストするために、/ etc / grub.d / 30_os-proberのコードのその部分を変更しました。メニューを取得できませんでしたが、起動時にシフトまたはEscでメニューを強制することができませんでした。まだそれに取り組んでいます。
heynnema

私はあなたのバグに関連するバグに関するいくつかの情報を私の答えに追加しました、それらはあなたが問題の性質をより完全に理解するのを助けるかもしれません。私もGrub2コードを見ています-助けようとしています:)
xtrchessreal 2017

Grubカスタマイザを使用していない場合は、次の順序で一般設定タブを使用してみてください。それをテストし、「Shift」がメニューを表示するかどうかを確認し、何も押されない場合にどうなるかを確認します。
xtrchessreal 2017

変更/etc/grub.d/30_os-proberしないほうがいいと思いますが、害はありません。必要に応じて変更を元に戻すことができるように、コピーをバックアップしておくか、#コメントに変更を加えることができます。この問題を回避するあなたがたが、現時点で最も合理的な解決策と思われます。
オタク長老2017

回答:


7

OK皆さん、これが答えです...デュアルブート構成で非表示のGRUBメニューを取得するには... 2つの編集...とsudo update-grub...

#1を編集

マルチブート構成で非表示のGRUBメニューを取得するには、最初にを編集する必要があります/etc/default/grub。以下のコマンドを使用してこのファイルを開きます。

sudo editor /etc/default/grub

ファイルが開いたら、これらの行を置き換えます

GRUB_HIDDEN_TIMEOUT_QUIET=true
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=10

これらと:

GRUB_HIDDEN_TIMEOUT_QUIET=false
GRUB_TIMEOUT_STYLE=countdown
#GRUB_HIDDEN_TIMEOUT=0
GRUB_TIMEOUT=3

これにより、GRUBは画面に3秒のカウントダウンタイマーを表示します。これにより、ユーザーはEscキーを押してデフォルトのメニューを表示できます。それ以外の場合は、デフォルトのOSが起動します。

デフォルトのOSを最後に起動したOSに設定する場合は、上記の「GRUB_TIMEOUT = 3」の下に次の2行を追加します。

GRUB_DEFAULT=saved    # change an existing line to this
GRUB_SAVEDEFAULT=true # add this line

#2を編集

次に、quick_boot機能を無効にするためにOSプローバーを更新する必要があります。これを行うには、開いて/etc/grub.d/30_os-proberお好みのエディタでと交換することにより(17.04で23行)行の下に変更10

quick_boot="1"

完了すると、行は次のようになります。

quick_boot="0"

ファイルを保存し、次のコマンドを実行してブートローダーを再構成し、変更を適用します。

sudo update-grub

やった!+1。
Organic Marble

良い解決策のように見えます:)今、私はそれについて簡単な質問があります。GRUB_TIMEOUTを「3」から「1」に変更すると、起動が速くなりますか。そして、もしあれば、このコードがどのように機能するかを読むことができるリンクを提供できますか?このコードが何をしているか、そしてその関数呼び出しのシーケンスなどを理解したいと思っています。あなた自身の質問を解くことができるときそれは素晴らしいです-それで良い仕事。
xtrchessreal 2017

@xtrchessrealはい、3を1に変更すると、2秒短くなります。必要に応じて、3秒でEscキーに手が届くのに十分な時間だと思いました。info -f grub -n 'Simple configuration'詳細については、をご覧ください。
heynnema

Qの+1とAの+1。最後の2晩は、あらゆる種類の髪の毛を30_os-properに変更して、31_blah_blahを作成し、40_customをすべて作成して無駄にしてきました。これはAU、ArchLinux、Fedoraなどの多くの場所にあります。投票を増やしたい場合は、AUで間違った回答をすべて追跡し(たくさんあります)、投票してこの回答の複製として閉じ、pingを実行します( @ me)複製へのリンクを含むAUの一般的なチャットルームで、私も投票します。この素晴らしい研究と実用的なソリューションをありがとう!:)
WinEunuuchs2Unix 2017

@ WinEunuuchs2Unix素敵なコメントと投票に感謝します!私自身、多くの研究を行いましたが、エレガントな解決策や解決策は誰にもないことに
気づきました

3

この問題は、Grub2 wikiからのこの抜粋によると、複数のOSが原因である可能性があると 思います

他のオペレーティングシステムが検出されない場合、GRUB 2はデフォルトのオペレーティングシステムで直接起動し、メニューは表示されません。別のオペレーティングシステムが検出されると、GRUB 2メニュー表示されます。

そして

OSの保存は、/ etc / default / grubでGRUB_DEFAULT = savedが設定されている場合にsudo grub-set-defaultを実行することで実現できます。/ etc / default / grubでGRUB_SAVEDEFAULT = trueも設定されている場合も保存されます。この場合、デフォルトのOSは、新しいOSがGRUB 2メニューから手動で選択されるか、grub-set-defaultコマンドが実行されるまで残ります。

Grub2 Wikiにも次のように記載 されています注:GRUB 1.97からGRUB 1.99の非表示メニュー機能には、長年確認されているバグがあります。このページの説明で指定されているように、メニューが非表示にならない場合があります。30_os-proberスクリプトを編集してこの問題を修正できますが、このページの範囲を超えています。

回避策として、を設定するGRUB_TIMEOUT="1"と、メニューが1秒間だけ表示されます。別のOSに切り替える必要がある場合は、その秒以内に下矢印キーを押すだけで、選択するまでメニューが表示されます。

バグに関連する潜在的な構文の問題がある可能性があります。私はGrub2のエキスパートではありませんが、私のgrubファイルでは、すべてのコマンドラインが= "some quoted setting"で終了しています。私はないですUP新しいコード技術インチ たとえば、私のgrub出力の一部を次に示します。

# If you change this file, run 'update-grub' afterwards to update
# /boot/grub/grub.cfg.
# For full documentation of the options in this file, see:
#   info -f grub -n 'Simple configuration'

GRUB_DEFAULT="Ubuntu"
#GRUB_HIDDEN_TIMEOUT="0"
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=""

# Uncomment to enable BadRAM filtering, modify to suit your needs
# This works with Linux (no patch required) and with any kernel that obtains
# the memory map information from GRUB (GNU Mach, kernel of FreeBSD ...)
#GRUB_BADRAM="0x01234567,0xfefefefe,0x89abcdef,0xefefefef"

詳細とこのバグについては、このGrubbug :)を調べています。どちらもGrub2に関連する2歳です。この一部は、Grub2へのハンドオフ前のMBRコードに関連している可能性があります


お返事をありがとうございます。すでにSAVEDEFAULTメソッドを使用しています。TIMEOUT = 1は確かにメニューの表示時間を短縮します。問題は複数のOSに関係しています。テストするために、でコードのその部分を変更しました/etc/grub.d/30_os-proberが、メニューが表示されませんでしたが、起動時にシフトまたはEscでメニューを強制することができませんでした。
heynnema

リンクしたこれらのバグは関連性がないと思われるか、何か不足していますか?
オタク長老2017

バグ#1401318に関して@ElderGeekは、バグがTJに割り当てられている人が、MBRからGrubへの動作を説明しています。問題の少なくとも一部が何であるかがわかります。また、問題が類似しているバグ#425979にも割り当てられています。非表示に設定されている場合、Shiftキーを押しながらGrubメニューを表示することに関する両方のバグが機能しません。これもOPが理解しようとしていることです。これにより、リンクが私の投稿された回答に含まれている理由が明確になれば幸いです。
xtrchessreal 2017

私の混乱を許してください。「GRUBメニューを非表示にするにはどうすればよいですか」という質問を読みました。明確にしていただきありがとうございます。そのコメントを見逃していたに違いない。
オタク長老2017

@ElderGeekは実際には、質問は「どのように私は私のGRUBメニューを非表示にするために得る、ことができ、あるシフトまたはESCキーがブート時に隠されたGRUBのメニューを表示してい」。隠してもらいました。シフトキーまたはEscキーが機能していません。どうやらこの問題は2013年以前にまでさかのぼり、マルチブート構成にのみ影響します。
heynnema

3
  1. を介して利用可能な「すべて」を試してみたいと思います/etc/default/grub。このリンクを読みましたか、

    help.ubuntu.com/community/Grub2/Setup#Configuring_GRUB_2

  2. 私はあなたから次の行を削除しようとすることを示唆しています/boot/grub/grub.cfg

    ...
    set timeout_style=menu
    if [ "${timeout}" = 0 ]; then
      set timeout=10
    fi
    ### END /etc/grub.d/30_os-prober ###
    

    はい、わかっていupdate-grubます。実行するたびに実行する必要がありますが、そのためのスクリプトを作成できます。


お返事をありがとうございます。そのリンクを見てみましょう。また、毎回grub.cfgを編集する必要がないように、/ etc / grub.d / 30_os-proberを変更する方法も見つけました。
heynnema

これは....このコードが敗北HIDDEN_TIMEOUTに思える0から10までのタイムアウトバックを変更するように見えるマルチブートシステムのように、私には理にかなって
エルダーオタク

@heynnema変更をos-proberに投稿できますか?私があなたの質問のリンクを見て、それを私のos-proberのコードと比較したとき、行番号が意味をなさなかったので、それ以来os-proberが変更されたと思い、それをいじることを恐れていました。
オーガニック大理石、

1
@OrganicMarble私の質問の更新を参照してください。多分あなたは私のモッドのいくつか/すべてを試して、あなたが思いつくものを見ることができます。
heynnema

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