GRUB2 是 Debian 默认的引导加载程序,负责加载系统内核并启动系统,支持 BIOS(Legacy) 与 UEFI 两种启动模式,配置核心是安装到正确位置、修改主配置文件并生成引导菜单。
一、安装前准备
1. 确认启动模式
BIOS(Legacy):传统启动,GRUB 安装到硬盘 MBR(主引导记录),对应包 grub-pc。
UEFI:现代启动,需 EFI 系统分区(ESP),GRUB 安装到 ESP,对应包 grub-efi-amd64(x86_64 架构)。
2. 安装 GRUB 软件包
# 更新软件源
sudo apt update
# BIOS 模式安装
sudo apt install grub-pc
# UEFI 模式安装(x86_64)
sudo apt install grub-efi-amd64
3. 挂载必要分区(修复/重装场景)
若从 Live 系统修复 GRUB,需先挂载系统分区与 ESP(UEFI):
# 挂载根分区(替换为你的根分区,如 /dev/sda2)
sudo mount /dev/sda2 /mnt
# UEFI 模式:挂载 ESP 分区(替换为你的 ESP,如 /dev/sda1,挂载到 /boot/efi)
sudo mount /dev/sda1 /mnt/boot/efi
# 绑定系统目录(进入 chroot 环境)
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
二、GRUB 安装(核心步骤)
1. BIOS 模式安装
安装到硬盘 MBR(不是分区,如 /dev/sda):
# 安装到硬盘 MBR(替换 /dev/sda 为你的目标硬盘)
grub-install /dev/sda
# 生成引导菜单(自动扫描内核与其他系统)
update-grub
2. UEFI 模式安装
需指定 ESP 挂载路径 与 启动项 ID:
# 安装到 ESP 分区(--efi-directory 为 ESP 挂载点,--bootloader-id 为启动项名称)
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=debian --recheck
# 生成引导菜单
update-grub
# 可选:修复 UEFI 启动项(ESP 无默认引导时)
# 复制 GRUB EFI 文件到默认路径,确保主板可识别
cp /boot/efi/EFI/debian/grubx64.efi /boot/efi/EFI/boot/bootx64.efi
三、GRUB 核心配置(/etc/default/grub)
⚠️ 切勿直接修改 /boot/grub/grub.cfg,该文件由 update-grub 自动生成,修改会被覆盖。所有自定义需修改 /etc/default/grub,修改后执行 update-grub 生效。
常用参数详解
# 编辑主配置文件
sudo nano /etc/default/grub
配置生效
# 更新 GRUB 配置,生成新的 grub.cfg
sudo update-grub
四、高级配置与优化
1. 自定义启动菜单项
通过 /etc/grub.d/40_custom 添加自定义菜单项(如启动 Windows、其他 Linux):
sudo nano /etc/grub.d/40_custom
示例(添加 Windows 启动项):
menuentry "Windows 11" {
insmod part_gpt
insmod fat
set root='hd0,gpt1' # 替换为 Windows ESP 分区
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
修改后执行 update-grub 生效。
2. 加密 /boot 分区(安全场景)
# 启用加密磁盘支持
echo "GRUB_ENABLE_CRYPTODISK=y" | sudo tee -a /etc/default/grub
# 重新安装 GRUB 并更新配置
grub-install /dev/sda # BIOS 模式
# 或 UEFI 模式安装命令
update-grub
3. 修复引导故障
BIOS 模式:从 Live 系统进入 chroot,重新执行 grub-install /dev/sda + update-grub。
UEFI 模式:检查 ESP 分区是否挂载,重新执行 UEFI 安装命令,必要时复制 bootx64.efi。
五、常见问题排查
GRUB 菜单不显示:检查 GRUB_TIMEOUT 是否为 0,或按 Shift/Esc 强制显示菜单。
找不到其他系统:确保 GRUB_DISABLE_OS_PROBER=false,执行 os-prober 手动探测,再 update-grub。
UEFI 启动项丢失:进入主板 BIOS,添加 debian 启动项,或复制 bootx64.efi 到默认路径。
内核启动失败:在 GRUB 菜单编辑启动项,移除 quiet splash,查看详细报错;修改 GRUB_CMDLINE_LINUX 添加修复参数。