💻 GRUB 安装失败(grub-install dummy)成因与解决方案
🚀 一、错误概述与主要原因
错误现象: 安装 Linux 系统(如 Debian, Ubuntu)时,在安装引导加载程序(GRUB)步骤失败,提示类似 "Executing 'grub-install dummy' failed. This is a fatal error."(执行 'grub-install dummy' 失败,这是一个致命错误)。
核心原因: 安装程序无法确定或访问应该写入 GRUB 的实际设备(如 /dev/sda),或被 UEFI/固件的安全设置阻止写入启动信息。
🛡️ 二、常见原因与修复方案
| 原因类别 | 具体问题描述 | 快速修复方法(BIOS/UEFI 设置) |
|---|---|---|
| UEFI/固件锁定 | 安全启动(Secure Boot) 开启,阻止未认证的 GRUB 写入 NVRAM。 | 禁用 Secure Boot(通常在 BIOS/UEFI 的 Security 或 Boot 菜单)。 |
| UEFI 配置写入保护 开启(可能是用户为了固定启动顺序而设置)。 | 检查 I/O 接口安全性、Firmware Write Protection 等选项,确保其处于禁用状态。 | |
| 管理员密码 锁定 UEFI 配置。 | 在 BIOS/UEFI 的 Security 菜单中,移除或清除管理员(Supervisor)密码。 | |
| 启动模式不匹配 | 安装介质的启动模式(Legacy/BIOS vs. UEFI)与目标系统不一致。 | 确保安装 U 盘是以目标系统模式(推荐 UEFI 模式)启动的。 |
| 分区配置错误 | 缺少或错误的 EFI 系统分区(ESP)。 | 确保存在一个 FAT32 格式、挂载点为 /boot/efi 的分区(通常 100-512MB)。 |
| 未设置 BIOS Boot 分区(在使用 GPT 分区表的 Legacy 模式)。 | 创建一个 1MB 左右、未格式化的分区,并设置 bios_grub 标志。 |
🛠️ 三、手动高级修复(适用于安装失败后)
如果安装程序反复失败,可以先选择跳过 GRUB 安装,完成文件系统安装,然后使用 Live USB 进入系统环境进行手动修复。
步骤 1: 挂载文件系统
启动进入 Live USB 环境,打开终端。
Bash
# 假设根分区在 /dev/sda2,EFI 分区在 /dev/sda1
# 1. 挂载根分区 (/)
sudo mount /dev/sda2 /mnt
# 2. 挂载 EFI 分区
sudo mkdir -p /mnt/boot/efi
sudo mount /dev/sda1 /mnt/boot/efi
步骤 2: 绑定伪文件系统
挂载运行系统所需的伪文件系统,为 chroot 准备环境。
Bash
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
步骤 3: 切换到新系统环境(Chroot)
进入您已安装的系统环境。
Bash
sudo chroot /mnt
步骤 4: 重新安装 GRUB
在 Chroot 环境中,运行 grub-install 命令,将 GRUB 写入硬盘。
Bash
# 针对 UEFI 系统
# 注意:只需指定设备,不要指定分区编号(如 sda,而不是 sda2)
grub-install /dev/sda
# 针对 Legacy/BIOS 系统 (较少用,但作为参考)
# grub-install --target=i386-pc /dev/sda
步骤 5: 更新 GRUB 配置
生成新的 GRUB 配置文件。
Bash
update-grub
步骤 6: 退出并重启
Bash
exit
sudo umount -R /mnt
reboot
⭐ 关键提醒: 在执行任何手动修复前,请务必优先检查和修改您的 UEFI/BIOS 设置(特别是 Secure Boot 和写入保护),因为这是最常见且最容易解决的“锁定”问题。