Fedora 34でEFI環境のgrub.cfgの場所が変わった

1 分で読める

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

一度削除して、再インストールしてあげればインストール時のスクリプトが自動で再作成してくれます。

comments powered by Disqus