web-dev-qa-db-ja.com

正しいGRUB 2デフォルトメニューエントリを正しく設定する方法は?

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

自分のカーネルを手動でコンパイルしてから、/bootmake 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コマンドと同じ順序で他のすべてのエントリ(リカバリエントリを含む)を含むサブメニュー

問題は、起動時にデフォルトでカーネルの5番目のリビジョン(vmlinuz-3.7.4-gentoo-5)ではなく、3番目のリビジョン(vmlinuz-3.7.4-gentoo-third)をロードすることです。また、ロードする適切なカーネルを選択するためにサブメニューにアクセスしないことも好みます。

この動作を変更するにはどうすればよいですか? GRUB古いバージョンの3番目のリビジョンではなく、カーネルの5番目のリビジョンを実行することをどのように伝えることができますか?一般的に、デフォルトのエントリ行をカーネルに一致するように変更するにはGRUBが選んだ一見ランダムなものではなく、欲しいですか?

また、次の行を/etc/default/grubに入れてみました。

GRUB_DEFAULT=saved
GRUB_SAVEDEFAULT=true

これで問題が解決しません。しかし、少なくともGRUB=は、起動した最新のカーネルを記憶し、サブメニューから自動的に選択するようです。サブメニューにアクセスしたくないだけです。

27
Francesco Turco

サブメニュー「詳細オプション」の下のメニューエントリを選択するには、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が最初のイメージになるようにする必要があります。 。

12
anaken78

Grub.cfgにサブメニューがある場合は、次のように2桁を使用する必要があります。

grub-reboot '1>3'

firstはメニューインデックスであり、secondはサブメニューインデックスです。

たとえば、次のように構成から最後のエントリを起動するには:

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'

そして再起動します。

7
AstraSerg

GRUB_DEFAULT=saved。この場合、使用します

$ grub2-set-default -h
Usage: grub2-set-default [OPTION] MENU_ENTRY
Set the default boot menu entry for GRUB.

  -h, --help              print this message and exit
  -v, --version           print the version information and exit
  --boot-directory=DIR    expect GRUB images under the directory DIR/grub2
                          instead of the /boot/grub2 directory

MENU_ENTRY is a number, a menu item title or a menu item identifier.

または、次の起動のみの場合:

$ grub2-reboot -h
Usage: grub2-reboot [OPTION] MENU_ENTRY
Set the default boot menu entry for GRUB, for the next boot only.

  -h, --help              print this message and exit
  -v, --version           print the version information and exit
  --boot-directory=DIR    expect GRUB images under the directory DIR/grub2
                          instead of the /boot/grub2 directory

MENU_ENTRY is a number, a menu item title or a menu item identifier.
5
Matthias Hahn

試す

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をメニューに追加します。そうしたら、 this リンクを読んでから、バックアップディレクトリ内のすべてのカーネルをvmlinuz以外のものに変更してください。

2
eyoung100

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)'
_
2
ari

望んでいた結果を達成するために私がしたことは:

  • をセットする GRUB_DEFAULT=savedgrub-set-default 助けて

    grub-set-default Menu entry not specified. Usage: grub-set-default [OPTION] MENU_ENTRY Set the default boot menu entry for GRUB. This requires setting GRUB_DEFAULT=saved in /etc/default/grub. -h, --help print this message and exit -V, --version print the version information and exit --boot-directory=DIR expect GRUB images under the directory DIR/grub instead of the /boot/grub directory MENU_ENTRY is a number, a menu item title or a menu item identifier.

  • デフォルト値を設定する

    grub-set-default "1>2"

    / boot/grubに、必要な情報を含むgrubenvという新しいファイルを作成します。

  • その後、構成ファイルを再作成します

    grub-mkconfig > /boot/grub/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

1
Alex

デフォルトの選択肢を数値で設定できます。設定した場合

`GRUB_DEFAULT=3` 

/etc/default/grub
デフォルトをgentoo-5エントリに設定します。
GRUB_DEFAULTはゼロオフセットなので、3を指定すると4番目のエントリが選択されます。

0
bsd

grub2-mkconfigは、カーネルが主に単調に増加するバージョン番号を含むと想定して、カーネルを逆順にソートします。そのため、その慣例に合うようにタグを選択してください。

0
cpugeniusmv

mv/bootの新しい/使用されていないバージョンファイルをバックアップディレクトリに/boot/backなどに

initrd.img-3.13.0-xx-generic  
vmlinuz-3.13.0-xx-generic 
config-3.13.0-xx-generic
System.map-3.13.0-xx-generic

システムをレスキューモードで再起動し、レスキューダイアログで「GRUB」を選択すると、すべてが正常になります。

私が思うに最適な方法です。私はubuntu 14.04を使用しています。

0
johnvuong1999

ubuntuで:

Sudo grub-pc

grub-pcを使用すると、メニューを選択できます。

Sudo update-grub

参照: https://askubuntu.com/questions/384388/how-to-select-option-in-configuration-grub-pc-men

0
johnvuong1999