参考博客:http://blog.csdn.net/zrf2112/article/details/71042782
参考文章:https://wiki.deepin.org/index.php?title=%E4%BF%AE%E5%A4%8D%E5%90%AF%E5%8A%A8
问题阐述:本人机型是Dell游匣15-7567笔记本,128gSSD+1T机械,装了win10+ubuntu16.04双系统,win的引导放到了SSD中,ubuntu的引导放到了机械硬盘中。由于win10系统出现cpu占用率一直处于100%的情况,找了客服检测半天也没查出什么问题后,我立马重装个了个win10系统,但重装后ubuntu引导失败,进入 bios发现ubuntu的efi启动文件丢失。
试了很多方法一直失败,搞了一整天最后打算重装ubuntu的时候发现了一个论坛,按照里面的方法试了下结果成功了,下面写写总结 。
首先确定两点:
1、电脑使用的是UEFI启动。
2、bios中Secure Boot处于关闭状态,并关闭了快速启动功能。
原因分析:
UEFI启动时需要有一个ESP分区(EFI 系统分区),这个分区的EFI目录下有三个目录(安装Ubuntu后),一个是BOOT目录,一个是Microsoft目录还有一个是Ubuntu目录,我是将系统启动项分别放到了两个硬盘中分别是sda(SSD)与sdb(机械硬盘)。UEFI方式时会找到BOOT目录下的bootx64.efi启动文件并运行,及默认启动文件。而Microsoft目录下有一个bootmgfw.efi,对比发现这两文件一样的,也就是说UEFI找到的bootx64.efi就是Microsoft下的efi文件,因此系统默认启动的就是windows系统,而在ubuntu启动界面中我们可以选择进入ubuntu和windows系统,因此我们可以,将ubuntu文件夹中的grubx64.efi文件替换掉bootx64.efi,并重命名为bootx64.efi即可让系统默认启动ubuntu系统,或者我们可以在BIOS中新建一个ubuntu16.04的启动项,将其链接到grubx64.efi的启动文件上,但由于重装win10并更新了bios后ubuntu启动文件丢失因为我们需要重新生成启动文件。
解决方法:
主要思路
找到grub启动程序,grubx64.efi,放到ESP分区的ubuntu目录下即可。
进入ubuntu的live模式:
sudo -i (取得root特权)
fdisk -l (找到你ubuntu“/”和“/boot”所在的磁盘区号,如我的是在sdb8和sdb9中)
解决过程:
EFI+GPT模式下修复GRUB2双系统引导:
对于双系统用户,一般而言,推荐先安装 Windows 8/10,再安装 Linux,并使用 Linux 的 GRUB2 作为双系统引导管理器。那么,重装 Windows 后,GRUB2 会被破坏,只能进入 Windows。如何再次找回 GRUB2 双系统引导,就是本文的主题。
-
用 Linux 启动盘进入 Live 系统环境,在 Live 的终端里,创建修复 GRUB2 所需的文件夹:
$ sudo mkdir -p /mnt/system
-
把 Linux 的 / 分区挂载到创建的文件夹:(注意:站长的是 sdb4,请确认自己的 / 分区所在,不可照搬)
$ sudo mount /dev/sdb9 /mnt/system
-
把 EFI 分区(即 ESP 分区)也挂载:
$ sudo mount /dev/sdb8 /mnt/system/boot/efi
-
用 efibootmgr 创建 ubuntu 的启动项:(注意:站长的主硬盘是 sdb,请确认自己的主硬盘,不可照搬)
$ sudo efibootmgr -c -d /dev/sdb -p 2 -w -L ubuntu
-
重启,并在 BIOS 中选择刚才创建的 ubuntu 启动项,进入 Ubuntu。
-
OK,已经进入本机硬盘上的 Ubuntu 系统了,但 GRUB2 修复并未完毕。打开终端,重新安装 GRUB2 到 EFI 分区:
$ sudo grub-install /dev/sda1
-
刷新一下 GRUB2 配置:
$ sudo update-grub2
- 现在重启,即可看到亲切的 GRUB2 终于“夺回”双系统引导权了!
修订: 站长另外介绍一种更简便的方法。用 Linux 启动盘进入 Live 系统环境,在终端中依次执行如下命令:
$ sudo su # mount /dev/sdb9 /mnt(注意先确认自己的 / 分区是 sdaX) # mount /dev/sdb8 /mnt/boot/efi # mount -t proc proc /mnt/proc # mount -t sysfs sys /mnt/sys # mount -o bind /dev /mnt/dev # mount -t devpts pts /mnt/dev/pts/ # chroot /mnt # grub-install /dev/sdb8 # update-grub2
重启:sudo reboot
按F2进入bios界面
添加在uefi处添加ubuntu16.04的启动选项,并将启动文件连接到efi/ubuntu/grubx64.efi上,可参考我前面的博客。
小结:EFI 引导 + GPT 分区模式下的双系统问题稍微复杂一点,需要朋友们多实操、多领会,关键是搞清楚自己的硬盘分区(EFI 分区和 / 分区)的作用、在不同系统环境下的名称,切记切记!