Fedora 34でEFI環境のgrub.cfgの場所が変わった
Fedora 34から grub.cfg
の構成に大きな変更がありました。
どう変わったか
Fedora Project Wiki: Changes/UnifyGrubConfig
Fedorra 33以前は
- EFI環境:
/boot/efi/EFI/fedora/grub.cfg
- 非EFI環境:
/boot/grub2/grub.cfg
だったのが、Fedora 34では /boot/grub2/grub.cfg
に統一されました。
EFI環境の /boot/efi/EFI/fedora/grub.cfg
は、$prefix
を設定して /boot/grub2/grub.cfg
をロードするだけの内容になりました。
従って、Fedora 34上でいままでのノリで
# grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg
をするとブートしなくなります!
自宅にはFedora 33と34が混在していて、34のマシンでうっかり上記を実行してしまい、起動しなくなって焦りました。(grubby使えよって言われたら、それはそう。)
復旧方法
/boot
の存在するパーティションのUUIDを調べて、以下のような内容で/boot/efi/EFI/fedora/grub.cfg
を書き直せばよいです。
search --no-floppy --fs-uuid --set=dev 579d5095-d274-4ecb-a66a-866ef9984aaf
set prefix=($dev)/@/boot/grub2
export $prefix
configfile $prefix/grub.cfg
が、最近Wikiが更新されてもっと簡便な方法が書いてありました。
Fedora Project Wiki: GRUB 2 - Reinstalling GRUB
# rm /boot/efi/EFI/fedora/grub.cfg
# rm /boot/grub2/grub.cfg
# dnf reinstall shim-* grub2-efi-* grub2-common
一度削除して、再インストールしてあげればインストール時のスクリプトが自動で再作成してくれます。