grub2のデフォルト起動を別のカーネルにする

grubが起動したときに、毎回Advanced options for Ubuntu>からクリックで選ぶのはめんどうなので特定のカーネルバージョンをデフォルトにしたい。

起動カーネルのエントリIDを調べる

grep 'menuentry ' /boot/grub/grub.cfgを実行する

aaa@laptop:~$ grep 'menuentry ' /boot/grub/grub.cfg
menuentry 'Ubuntu' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-simple-04cbf181-38e3-4824-b64a-47e8f256edf3' {
	menuentry 'Ubuntu, with Linux 5.15.0-41-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-41-generic-advanced-04cbf181-38e3-4824-b64a-47e8f256edf3' {
	menuentry 'Ubuntu, with Linux 5.15.0-41-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.15.0-41-generic-recovery-04cbf181-38e3-4824-b64a-47e8f256edf3' {
	menuentry 'Ubuntu, with Linux 5.13.0-52-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.13.0-52-generic-advanced-04cbf181-38e3-4824-b64a-47e8f256edf3' {
	menuentry 'Ubuntu, with Linux 5.13.0-52-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.13.0-52-generic-recovery-04cbf181-38e3-4824-b64a-47e8f256edf3' {
	menuentry 'Ubuntu, with Linux 5.11.0-27-generic' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.11.0-27-generic-advanced-04cbf181-38e3-4824-b64a-47e8f256edf3' {
	menuentry 'Ubuntu, with Linux 5.11.0-27-generic (recovery mode)' --class ubuntu --class gnu-linux --class gnu --class os $menuentry_id_option 'gnulinux-5.11.0-27-generic-recovery-04cbf181-38e3-4824-b64a-47e8f256edf3' {
menuentry 'Windows Boot Manager (on /dev/nvme0n1p1)' --class windows --class os $menuentry_id_option 'osprober-efi-E02C-B706' {
menuentry 'UEFI Firmware Settings' $menuentry_id_option 'uefi-firmware' {

全てのエントリが表示されるので目的のバージョンを探す。

今回はUbuntu, with Linux 5.11.0-27-genericを起動したいので、

$menuentry_id_optionの後ろのgnulinux-5.11.0-27-generic-advanced-04cbf181-38e3-4824-b64a-47e8f256edf3をコピーする。

/etc/defaut/grubを編集

/etc/default/grubを開き、GRUB_DEFAULTの値を先程コピーした値に変える
(初期状態はGRUB_DEFAULT=0)

GRUB_DEFAULT="gnulinux-advanced-04cbf181-38e3-4824-b64a-47e8f256edf3>gnulinux-5.11.0-27-generic-advanced-04cbf181-38e3-4824-b64a-47e8f256edf3"

/boot/grub/grub.cfgに変更を適応する

sudo grub-mkconfig -o /boot/grub/grub.cfgを実行して、変更を反映する

aaa@laptop:~$ sudo grub-mkconfig -o /boot/grub/grub.cfg 
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.15.0-41-generic
Found initrd image: /boot/initrd.img-5.15.0-41-generic
Found linux image: /boot/vmlinuz-5.13.0-52-generic
Found initrd image: /boot/initrd.img-5.13.0-52-generic
Found linux image: /boot/vmlinuz-5.11.0-27-generic
Found initrd image: /boot/initrd.img-5.11.0-27-generic
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings
done

トラブルシューティング

うまく行かない場合は以下を確認する

grub.cfgの場所が異なる

インストール環境によってgrub.cfgの場所が異なることがある。
以下の項目を参考にしてgrub.cfgの場所を探す。

カーネルエントリIDを正しく指定していない

GRUB_DEFAULTUbuntu, with Linux x.xx.x-x-genericを指定してもうまく行かない。

grub-mkconfig時に、下記のWarningが出現する

aaa@laptop:/etc/default$ sudo grub-mkconfig -o /boot/grub/grub.cfg 
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.15.0-41-generic
Found initrd image: /boot/initrd.img-5.15.0-41-generic
Found linux image: /boot/vmlinuz-5.13.0-52-generic
Found initrd image: /boot/initrd.img-5.13.0-52-generic
Found linux image: /boot/vmlinuz-5.11.0-27-generic
Found initrd image: /boot/initrd.img-5.11.0-27-generic
Warning: Please don't use old title `Ubuntu, with Linux 5.11.0-27-generic' for GRUB_DEFAULT, use `Advanced options for Ubuntu>Ubuntu, with Linux 5.11.0-27-generic' (for versions before 2.00) or `gnulinux-advanced-04cbf181-38e3-4824-b64a-47e8f256edf3>gnulinux-5.11.0-27-generic-advanced-04cbf181-38e3-4824-b64a-47e8f256edf3' (for 2.00 or later)
Found Windows Boot Manager on /dev/nvme0n1p1@/EFI/Microsoft/Boot/bootmgfw.efi
Adding boot menu entry for UEFI Firmware Settings
done

バージョンが2.00未満ならAdvanced options for Ubuntu>Ubuntu, with Linux 5.11.0-27-generic

バージョンが2.00以上ならgnulinux-advanced-04cbf181-38e3-4824-b64a-47e8f256edf3>gnulinux-5.11.0-27-generic-advanced-04cbf181-38e3-4824-b64a-47e8f256edf3を指定しろとの記載がある

grub-install --versionコマンドでバージョンがわかるので、適宜対応する

aaa@laptop:/etc/default$ grub-install --version
grub-install (GRUB) 2.04-1ubuntu26.13

コメント

タイトルとURLをコピーしました