升级到Fedora 27之后内核安装后不更新grub问题处理

警告

本人实践中遇到问题,导致Mac / Fedora双启动无进入Fedora Linux系统。由于时间精力不足,暂时采用macOS工作,这个问题以后有时间或机会再排查。

请勿直接采用本文方法,仅供参考

使用dnf对Fedora进行系统大版本升级后,操作系统从Fedora 26升级到了Fedora 27,但是发现每次内核安装新版本之后都不更新grub,导致内核版本始终停留在原先Fedora 26所使用的内核。

解决的方法是重新安装grub2-tools,然后再次运行grub2-mkconfig -o /boot/grub2/grub.cfg:

  • 首先删除grub2-tools-minimal

dnf remove grub2-tools-minimal

上述操作会删除掉相关软件包grub2-pc以及grubby,以及没有使用的依赖grub2-tools

dnf install grub2-efi shim

安装grub2-efi会依赖安装grub2-tools,也就获得了grub2-mkconfig

  • 注意:对于UEFI系统的GRUB2,一定要确保有一个使用GPT label的EFI系统分区,UEFI firmware会从这个EFI系统分区启动。在gdisk中,类似如下分区:

Number  Start (sector)    End (sector)  Size       Code  Name
   1            2048          264191   128.0 MiB   EF00  EFI System
  • 如果需要修复grub则执行重新安装grub(如果无需修复,则跳过这步;我在Mac系统上双启动采用是Mac的bootloader,所以忽略这步)

grub2-install /dev/sda
  • 重新生成grub配置文件

对于普通的BIOS,使用如下命令

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

对于UEFI的系统,使用如下命令

grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg

grub2-mkconfig会扫描/boot目录查看内核并生成对应配置项。

  • 注意检查生成的配置文件/boot/efi/EFI/fedora/grub.cfg,看是否创建了对应的启动项。如果缺少启动项,则需要手工修改。

幸运的是shim会自动完成bootstrap。EFI程序/boot/efi/EFI/BOOT/fallback.efi将查看在ESP中的BOOT.CSV并加入相应的启动项。如果这个对象不存在,shim提供BOOT.CSV文件来为grub2-efi添加内容。所以只需要使用EFI脚本来调用fallback.efi

如果有错误的启动项,则需要修改BOOT.CSV删除它

参考

Last updated