GNU GRUB

本文默认都是 GNU GRUB 2

os-prober

os-prober 可以扫描所有硬盘里可用的操作系统,并加入到 Grub 的启动项里。 如果要使用这个功能,先在系统里安装 os-prober,然后编辑 /etc/default/grub,设置 GRUB_DISABLE_OS_PROBER=false (默认为 true)。

grub-install

执行 [ -d /sys/firmware/efi ] && echo UEFI || echo Legacy 检测当前系统 BIOS Boot Mode 是 UEFI 还是 Legacy。

当 BIOS Boot Mode 是 UEFI

你的引导分区 Disklabel type 必须是 gpt。

grub-install --target=<TARGET> --boot-directory=/boot --efi-directory=/boot --bootloader-id=GRUB /dev/sda 代表把 grub 安装到 sda 硬盘的引导扇区。这里的 /dev/sda 根据你的实际情况修改。

<TARGET> 的取值:

  • Intel 32 位: i386-efi
  • Intel 64 位: x86_64-efi
  • Arm 32 位: arm-efi
  • Arm 64 位: arm64-efi

当 BIOS Boot Mode 是 Legacy

你的引导分区 Disklabel type 必须是 dos。

grub-install --target=<TARGET> --boot-directory=/boot /dev/sda 代表把 grub 安装到 sda 硬盘的引导扇区。这里的 /dev/sda 根据你的实际情况修改。

<TARGET> 的取值:

  • Intel 32 位: i386-pc
  • Intel 64 位: i386-pc
  • Arm 32 位:
  • Arm 64 位:

grub-install /dev/sda1 代表把 grub 安装到 sda 硬盘的第一个分区。如果是这种方式,需要由主引导分区的 bootloader 引导至这个分区。

grub-install 默认安装 GRUB 镜像到 /boot 目录。你可以使用 --boot-directory= 参数指定目录位置,比如当你在 USB 安装环境时,--boot-directory=/mnt/boot

/boot/grub/grub.cfg

使用 grub-mkconfig -o /boot/grub/grub.cfg 生成 /boot/grub/grub.cfg,无须手动修改。

设置 grub

set pager=1