如果你在安装了 Ubuntu 和 Windows 双系统后,又重装了 Windows 系统。那么 Grub 引导 项大概率会被 Windows Boot Manager 覆盖,这时候你就进不了 Ubuntu 了。但不要慌,按 照下面的步骤可以修复 grub2 引导,而且不需要安装额外的软件。

制作 Ubuntu 的 U 盘启动盘

为了修复引导项,我们需要用到 Ubuntu 系统提供的软件工具。虽然我们暂时进不去原来的 Ubuntu 系统,但是我们可以使用写在 Ubuntu U 盘中的镜像来获得一个可用的基本 Ubuntu 环境。 在Ubuntu 官网下载镜像文件。 制作 U 盘启动盘可以使用免安装、小巧好用的rufus。你可以使 用 rufus 快速创建一个 U 盘启动盘,注意选择 GPT 模式。

引导 U 盘启动盘

重启电脑,在 BIOS 引导设置中引导 U 盘,然后进入 Ubuntu 引导安装程序后,在安装界 面选择 Try Ubuntu 进入 Ubuntu Live。

执行 Grub2 重建操作

使用 fdisk,找到 EFI 分区,/boot 挂载点所在的分区(如果你没有设置/boot 挂载点则 为/挂载点)。 挂载/boot 挂载点所在的分区到/mnt 下(我的分区在 nvme 固态硬盘 上)。

% sudo mount /dev/nvme0n1p6 /mnt/

挂载 EFI 分区,在这里你需要知道在你的硬盘中那一个分区是 EFI 系统分区(我这里是第 五个分区)。

% sudo mount /dev/nvme0n1p5 /mnt/boot/efi

连接其他必要的目录

% sudo mount --bind /dev /mnt/dev
% sudo mount --bind /dev/pts /mnt/dev/pts
% sudo mount --bind /proc /mnt/proc
% sudo mount --bind /sys /mnt/sys

转换根目录到/mnt 下

% sudo chroot /mnt

修复 Grub2 引导

对于 32 位系统和 64 位系统,在这里你需要运行的命令是不同的。下面分别给出了它们对 应的命令。 32 位系统

% sudo grub-install --target=i386-efi /dev/nvme0n1

64 位系统

% sudo grub-install --target=x86\_64-efi /dev/nvme0n1

执行完上面命令当中的一条后,再执行一下 Recheck

% grub-install --recheck /dev/nvme0n1

后续清理步骤(可要可不要)

% exit
% sudo umount /mnt/sys
% sudo umount /mnt/proc
% sudo umount /mnt/dev/pts
% sudo umount /mnt/dev
% sudo umount /mnt

然后重新启动,你会发现已经能够成功进入 grub2 界面,并且 grub2 已经识别到了 Ubuntu 系统和 Windows Boot Manager。

重建 Grub2 中的 Windows Boot Manager 引导项

重启电脑,通过 Grub 进入 Ubuntu 系统,运行以下命令重新生成配置文件

% sudo update-grub