Ubuntu 安装或修复时出现 grub-install 错误:UEFI 排查与恢复

在 UEFI 模式下排查 Ubuntu 22.04 的 grub-install 失败,并通过 Live USB 安全修复已有系统。

风险提示:分区名会因磁盘、NVMe、加密和 LVM 配置而不同。下面的 /dev/nvme0n1pX 仅是占位示例,绝不能原样套用。

grub-install 失败最常见的原因不是 GRUB 文件本身,而是启动模式或 EFI 挂载点不对:安装 U 盘以 Legacy/CSM 模式启动、系统磁盘是 GPT/UEFI 方案却没有挂载 EFI 系统分区,或目标分区识别错误。

安装前的三项确认

  1. 在固件中使用 UEFI 模式启动 Ubuntu 安装 U 盘;安装器终端中可用 test -d /sys/firmware/efi && echo UEFI 验证。
  2. Windows 11 的双系统通常应共享已有的 FAT32 EFI 系统分区,挂载为 /boot/efi,不要格式化
  3. 若设备有 NVIDIA 显卡,黑屏时可仅在本次启动的 GRUB 菜单临时添加 nomodeset;进入系统并安装合适驱动后应移除该临时参数。

用 Live USB 修复已安装的 Ubuntu

从 Live USB 以 UEFI 模式启动,先通过“试用 Ubuntu”进入桌面,使用 lsblk -f 确认 Linux 根分区与 EFI 分区。以下示例假设根分区是 /dev/nvme0n1p6、EFI 分区是 /dev/nvme0n1p1

1
2
3
4
sudo mount /dev/nvme0n1p6 /mnt
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
for dir in /dev /dev/pts /proc /sys /run; do sudo mount --bind "$dir" "/mnt$dir"; done
sudo chroot /mnt

进入 chroot 后再安装引导项:

1
2
3
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck
update-grub
exit

卸载并重启前先退出 chroot:

1
2
3
4
for dir in /run /sys /proc /dev/pts /dev; do sudo umount "/mnt$dir"; done
sudo umount /mnt/boot/efi
sudo umount /mnt
sudo reboot

如果 grub-install 仍失败,保留完整错误信息,并再次检查 Live USB 是否确实以 UEFI 启动、EFI 分区是否为 FAT32、是否已挂载到正确位置。不要编辑生成文件 /boot/grub/grub.cfg 来“永久修复”问题。

出处

本文保留原始问题出处,但采用 UEFI/Live USB 的通用恢复流程,避免修改自动生成的 GRUB 配置文件。