From Fedora Project Wiki

介绍

GRUB 2 是 GNU GRUB (GRand Unified Bootloader) 的最新版本。bootloader(引导程序) 是计算机开机时第一个运行的软件程序。它负责加载操作系统内核并把控制权交给操作系统内核(Fedora 下就是 Linux 了)。反过来,内核初始化操作系统的其余部分。

GRUB 2 已经取代了之前的 GRUB (即,0.9x 版本),使 GRUB 成为了 GRUB Legacy 。

从 Fedora 16 开始,GRUB 2 就是 x86 BIOS 系统下默认的引导程序了。对于 BIOS 系统的升级也是默认安装 GRUB 2,但是您完全可以选择跳过配置引导程序。

使用 Grubby 管理内核引导参数

Grubby 可用于更新引导相关的配置文件,我们推荐你使用它更新内核引导参数和设定默认内核。

下面我们简单介绍 grubby 的用法:

  • 为单个引导项添加一个内核参数:
# grubby --args=<NEW_PARAMETER> --update-kernel=/boot/vmlinuz-5.11.14-300.fc34.x86_64
  • 为单个引导项添加多个内核参数:
# grubby --args="<NEW_PARAMETER1> <NEW_PARAMETER2 <NEW_PARAMETER_n>" --update-kernel=/boot/vmlinuz-5.11.14-300.fc34.x86_64
  • 为所有引导项添加内核参数:
# grubby --args=<NEW_PARAMETER> --update-kernel=ALL
  • 从当前和以后的所有引导项中删除内核参数:
# grubby --remove-args=<PARAMETER_TO_REMOVE> --update-kernel=ALL
  • 设置默认内核:
# grubby --set-default=/boot/vmlinuz-5.11.12-300.fc34.x86_64

更新 GRUB 2 主配置文件

/boot/grub2/grub.cfg 是默认的 GRUB 配置文件。通常来说你不需要去改动这个静态文件,除非你对磁盘进行了更换或并行安装了其他系统。

探测使用中的固件

执行下面的命令:

  • 在 UEFI 系统:
# ls -ld /sys/firmware/efi
  • 在 BIOS 系统:
# ls -lrt /etc/grub2.cfg

输出的结果即为你使用的固件。

grub2-mkconfig -o /boot/grub2/grub.cfg 将探测其他的操作系统并更新引导选单,这是通过 os-prober 实现的。

使用 Fedora 32 或更早版本的用户可能需要使用 grub2-mkconfig -o /boot/efi/EFI/fedora/grub.cfg.

修复 GRUB 2

如果你的系统无法引导,尝试进入恢复模式以对引导进行修复,详见 Fedora Docs 的相关文章

然后,执行下面的命令挂载根分区:

# chroot /mnt/sysimage

重新安装 GRUB 2

GRUB 2 软件包包含了安装引导器和生成 grub.cfg 配置文件的相关脚本。

grub2-install 会在 MBR 安装引导器,引导器的相关文件会储存在 /boot/ 目录。

要重装 GRUB 2:

  • 在 UEFI 系统:
# dnf reinstall shim-* grub-efi-*
  • 在 BIOS 系统:
    • 查看 /boot/ 目录位于哪个分区上:
# mount | grep "/boot "
/dev/sda4 on /boot type ext4 (rw,relatime,seclabel)

就如上面的例子,目录位于 /dev/sda4.

    • 重新安装引导器:
# grub2-install /dev/sda
Installing for i386-pc platform.
Installation finished. No error reported.
Do not use the grub2-install command on UEFI systems. On those systems, bootloaders are in the shim and grub-efi packages. By reinstalling those packages, the bootloaders are reinstalled to their proper location in /boot/efi/ (the EFI system partition).

深入阅读

http://www.gnu.org/software/grub/manual/grub.html

http://fedoraproject.org/wiki/Features/Grub2

http://fedoraproject.org/wiki/Anaconda/Features/Grub2Migration