正しいGRUB 2メインメニュー項目を正しく設定するには?

正しいGRUB 2メインメニュー項目を正しく設定するには?

私はGentoo LinuxシステムでGRUB 2.00を実行しています。

私のカーネルを手動でコンパイルして/bootからインストールしましたmake install/bootこれで、次のカーネルがあります。

# ls -1 /boot/vmlinuz*
/boot/vmlinuz-3.7.4-gentoo-5
/boot/vmlinuz-3.7.4-gentoo-first
/boot/vmlinuz-3.7.4-gentoo-fourth
/boot/vmlinuz-3.7.4-gentoo-third

実行grub2-mkconfig結果は次のとおりです。

# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub.cfg ...
Found linux image: /boot/vmlinuz-3.7.4-gentoo-third
Found linux image: /boot/vmlinuz-3.7.4-gentoo-fourth
Found linux image: /boot/vmlinuz-3.7.4-gentoo-first
Found linux image: /boot/vmlinuz-3.7.4-gentoo-5
done

今作成されたファイルを読むと、/boot/grub2/grub.cfg次の項目が作成されたことがわかります。

  • スタートアップの基本基本項目vmlinuz-3.7.4-gentoo-third
  • grub2-mkconfigコマンドと同じ順序で他のすべての項目(回復項目を含む)を含むサブメニュー

vmlinuz-3.7.4-gentoo-5問題は、起動時にデフォルトで3番目のバージョン()ではなく5番目のカーネルバージョン(vmlinuz-3.7.4-gentoo-third)をロードしようとしていることです。また、ロードする正しいカーネルを選択するためにサブメニューにアクセスしたくありません。

この動作をどのように変更できますか?デフォルトでは、以前の3番目のバージョンの代わりに5番目のカーネルバージョンを実行したいとGRUBにどのように通知できますか?通常、GRUBが選択する任意のカーネルではなく、私が望むカーネルと一致するようにデフォルトの入力行をどのように変更しますか?

私も次の行を入れてみました/etc/default/grub

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

これは私が望む方法で問題を解決しません。しかし、少なくともGRUBは私が起動した最新のカーネルを覚えており、サブメニューから自動的に選択するようです。ただサブメニューにアクセスするのが好きではないからです。

答え1

「詳細オプション」サブメニューからメニュー項目を選択するには、GRUB_DEFAULT = "1> 3"を設定してください。 grub2-mkconfigを実行してgrub構成ファイルを生成できるようになりました。次に再起動すると、vmlinuz-3.7.4-gentoo-5を起動する必要があります。

ノート:grub メニューのデフォルト項目は変更されません。つまり、基本項目はまだ現在と同じ項目を表します。ただし、デフォルトのブートイメージは詳細オプションの下の4番目のイメージになります。 vmlinuz-3.7.4-gentoo-5 を grub メニューの基本項目にするには、イメージの順序は次のようになります。 grub2-mkconfigを実行するときは、vmlinuz-3.7.4-gentoo-5が最初のイメージでなければなりません。

答え2

お持ちの場合サブメニューgrub.cfgでは、次のように2桁の数字を使用する必要があります。

grub-reboot '1>3'

これ最初メニューインデックスであり、第二サブメニューのインデックスです。

たとえば、構成の最後の項目を実行するには、次のようにします。

grep menu /boot/grub/grub.cfg

menuentry 'Debian GNU/Linux' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
submenu 'Advanced options for Debian GNU/Linux' $menuentry_id_option 'gnulinux-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.6.0-0.bpo.1-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (sysvinit)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.6.0-0.bpo.1-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 4.6.0-0.bpo.1-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-4.6.0-0.bpo.1-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-advanced-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64 (sysvinit)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-init-sysvinit-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {
    menuentry 'Debian GNU/Linux, with Linux 3.16.0-4-amd64 (recovery mode)' --class debian --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-3.16.0-4-amd64-recovery-1ffa16a9-fda2-43b5-91b9-c91a08ff190f' {

以下を使用する必要があります。

grub-reboot '1>5'

そして再起動してください。

答え3

centos7(またはRHEL7)とgrub2の使用:

grubはgrubenvの "saved_entry"エントリをデフォルトのブートとして使用します。 /boot/grub2/grub.cfg のフラグメントは次のとおりです。

if [ "${next_entry}" ] ; then
   set default="${next_entry}"
   set next_entry=
   save_env next_entry
   set boot_once=true
else
   set default="${saved_entry}"
fi

現在のビルドで「saved_entry」が何であるかを確認してください。

grub2-editenv list

saved_entry=CentOS Linux (3.10.0-693.2.2.el7.ari.x86_64) 7 (Core)

これを私のデバッグバージョンに変更しました。

grub2-editenv - set saved_entry='CentOS Linux 3.10.0-693.2.2.el7.ari.x86_64.debug) 7 (Core)'

答え4

努力する

mkdir -p /boot/grub/backup
mv -v /boot/grub/vmlinuz-3.7.4-gentoo-{first,third,fourth} /boot/grub/backup

これで、未使用のすべてのコアがバックアップディレクトリに移動されます。

grub2-mkconfig -o /boot/grub/grub.cfg

r5これにより、メニューにオプションのみが追加されます。終わったら、この記事を読んでください。 これバックアップディレクトリのすべてのカーネルを接続し、名前を変更します。カーネルを維持するには、vmlinuz以外のものを使用できます。

関連情報