Ubuntu双系统重装Windows后修复grub2引导 UEFI

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

制作Ubuntu的U盘启动盘

为了修复引导项,我们需要用到Ubuntu系统提供的软件工具。虽然我们暂时进不去原来的Ubuntu系统,但是我们可以使用写在Ubuntu U盘中的镜像来获得一个可用的基本Ubuntu环境。

在Ubuntu官网下载镜像文件https://ubuntu.com/download/desktop。

制作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
en_USEN