重装Win10并删除ESP分区后,修复Ubuntu16在UEFI的双系统引导

介绍

最近笔记本的win10一直无法升级到最新版本,查看原因后发现是ESP分区太小了,只有不到100M,而win10推荐的大小是至少500-700M的空间。为了扩大处于分区表开头位置的ESP分区,我删除了ESP以及在ESP之后的win10系统分区。现在硬盘上还存在于Ubuntu的两个分区,一个是挂载点 / ,一个是 /home

由于ESP分区直接被删除并且在Win10的重新安装中被彻底重置,原先Ubuntu的EFI启动文件已经被删除。经过多方查找资料。修复的方法如下。

首先,我们用一个Ubuntu的live cd(刻录的U盘也是可以的)启动系统。如果你想先启动你之前的Ubuntu系统内核,请遵循下面的步骤,如果想直接用live cd修复,请直接到修复部分。

启动原Ubuntu内核

在GURB页面按c进去命令行模式,接着输入 ls 命令。屏幕中会显示目前所有识别的硬盘以及分区。比如 (hd0,gpt1), (ht0,gpt2) 之类的。接下来,使用命令 ls (hd0,gpt1)/ 查看这些分区下面的文件夹,找到原先Ubuntu系统 / 挂载点所在的分区。用上面的命令尝试所有的分区(更改命令中的 gpt1 为对应的序号),找到含有 /boot 文件夹的分区。

找到之后(比如我们确定了是 gpt3 ),我们输入 set root=(hd0,gpt3)

然后,我们输入 set pager=1 来确保分屏显示。

然后,输入 cat /boot/grub/grub.cfg 来查看原grub的配置文件。找到第一个 menuentry 的启动项。

记录上面以 linux 开头这一行的命令,注意可能有折行,要一直抄到尾部,UUID不能错。

然后,稍微上面几行,记录以 initrd 开头这一行的命令。

然后,我们依次输入上面记录的两个命令,注意不要出错。最好拍照片拍下来,除了UUID,其他路径部分都是可以用tab补全的。

最后,我们输入 boot 命令,启动系统。

修复引导

如果你是使用live cd,请先输入下面的命令进入root用户

然后,我们添加 boot-repair 的ppa源并安装,我们需要使用这款软件进行修复。

然后,我们使用 sudo boot-repair 命令运行这个工具,然后选择第一个选项。然后按照该工具的提醒进行修复即可。最后这个工具会生成一个报告,可能会花一点时间,耐心等待就好。

显示下面这样的提示证明修复成功,可以重新启动系统进入BIOS调整UEFI的启动顺序为ubuntu即可。

博主在使用 boot-repair完成修复后,发现编辑 /etc/default/grub 的自定义设置不生效了,并且 boot-repair生成的启动菜单项目太多。如果你也遇到上面的问题,你可以在上面的所有操作完成后,进入到你的Ubuntu系统,运行下面的命令重装你的GRUB2

然后再重启系统即可。