红联Linux门户
Linux帮助

EFI+GPT模式下修复GRUB2双系统引导

发布时间:2017-04-25 11:51:11来源:mintos.org作者:薄荷开源网
不是所有人都能够只用 Linux 单系统!
目前多数电脑自带的正版 Windows 8/10 都是 EFI 引导 + GPT 分区模式,那么 Windows + Linux 的双系统局面仍将长期存在,Linux 用户再不乐意也还是要适应。最近把常用电脑转换成 EFI 引导 + GPT 分区模式了,现将一些必要的知识分享出来,希望新手朋友少走弯路。
 
前文《EFI+GPT模式下Linux与Windows双系统要诀》(http://www.linuxdiyf.com/linux/29799.html)介绍了如何在 EFI 引导 + GPT 分区模式下安装双系统,本文可以算是姐妹篇,介绍如何在 EFI 引导+ GPT 分区模式下修复 GRUB2 双系统引导(以 Ubuntu/LinuxMint 为例)。
btw,关于在传统的 MBR 模式下如何修复 GRUB2 双系统引导,请参阅重装Windows后如何进入Ubuntu:
很多朋友都是Windows+Ubuntu/Linux双系统。一般而言,为了减少不必要的麻烦,小编建议还是先安装Windows,再安装Ubuntu。这样Ubuntu在安装过程中配置grub2引导程序时,会自动识别Windows,自动生成双系统启动菜单。
然而,电脑系统并不是可以一劳永逸啦,尤其是Windows下的病毒、垃圾软件、不当操作或系统自身等原因导致系统不稳定、慢如蜗牛甚至崩溃的时候,重装系统也是在所难免的。而Linux是健壮而稳定的,除了少数人为的严重误操作外,极少需要重装系统。
此时,问题就来了。虽然你的Linux仍运行的好好的,但Windows由于种种原因不行了。重装了Windows之后,原来Linux生成的grub2多系统启动菜单被覆盖了,该如何进入Linux呢?
这时,你需要一张Ubuntu的LIVE光盘或者LIVE U盘。用这个LIVE盘启动,进入LIVE系统后,在终端中依次执行如下命令,即可恢复重建grub2启动菜单:
cd /media(进入media文件夹)
sudo mkdir temp(在media下新建一个temp文件夹)
mount /dev/sda7 /media/temp(把Ubuntu的安装分区挂载到temp文件夹下。这里假设你的Ubuntu是安装在sda7这个分区的。)
grub-install --root-directory=/media/temp /dev/sda(运行grub安装程序,并指定安装在第一硬盘。)
然后重启电脑,就可以看到熟悉的grub2启动菜单了。
EFI+GPT模式下修复GRUB2双系统引导
什么?你不知道你的Ubuntu安装在哪个分区?
其实很多人没弄明白Ubuntu/Linux下硬盘分区的命名规则,小编就最常见的方式举例说明:
假如在安装Ubuntu之前,你的电脑有C、D、E、F四个盘,C盘安装的是Windows。后来你把F盘变为2个Linux分区(1个根分区,安装Ubuntu;1个swap交换分区)。安装了Ubuntu后,你的F盘在Windows下就看不见了。此时,各个盘与Ubuntu下分区的命名对应如下:
C========sda1;(s代表sata硬盘,如果是老式的IDE硬盘则用h代表;d代表磁盘;a代表第一块硬盘;1代表该硬盘上的第1个分区。这就是sda1的含义。如果有多个硬盘或者插上了U盘,则会有sdb、sdc等等,也是遵循前述命名规则的)
D========sda5;(为啥是第5个分区?因为Linux最多支持4个主分区,即sda1/2/3/4,从5开始属于逻辑分区。一般电脑上只有一个主分区)
E========sda6;
/=========sda7;(这个/分区(根分区)就是原来F盘的一部分)
swap=====sda8;(这个swap交换分区也是原来F盘的一部分)
如果可以进入Ubuntu了,却无法进入Windows了,则在进入Ubuntu后,在终端中执行sudo update-grub即可,或者运行图形化配置软件“启动管理器”,如果没有安装,可以在“Ubuntu软件中心”里搜索安装startupmanager;或者使用更高级的Grub Customizer对grub进行设置。
EFI+GPT模式下修复GRUB2双系统引导
 
对于双系统用户,一般而言,推荐先安装 Windows 8/10,再安装 Linux,并使用 Linux 的 GRUB2 作为双系统引导管理器。那么,重装 Windows 后,GRUB2 会被破坏,只能进入 Windows。如何再次找回 GRUB2 双系统引导,就是本文的主题。
 
首先,用 Linux 启动盘进入 Live 系统环境,在 Live 的终端里,创建修复 GRUB2 所需的文件夹:
sudo mkdir -p /mnt/system
EFI+GPT模式下修复GRUB2双系统引导
 
然后把 Linux 的 / 分区挂载到创建的文件夹:(注意:站长的是 sdb4,请确认自己的 / 分区所在,不可照搬)
sudo mount /dev/sdb4 /mnt/system
EFI+GPT模式下修复GRUB2双系统引导
 
随后把 EFI 分区(即 ESP 分区)也挂载:
sudo mount /dev/sdb1 /mnt/system/boot/efi
EFI+GPT模式下修复GRUB2双系统引导
 
然后用 efibootmgr 创建 ubuntu 的启动项:(注意:站长的主硬盘是 sdb,请确认自己的主硬盘,不可照搬)
sudo efibootmgr -c -d /dev/sdb -p 2 -w -L ubuntu
EFI+GPT模式下修复GRUB2双系统引导
 
然后重启,并在 BIOS 中选择刚才创建的 ubuntu 启动项,进入 Ubuntu:
EFI+GPT模式下修复GRUB2双系统引导
 
OK,已经进入本机硬盘上的 Ubuntu 系统了,但 GRUB2 修复并未完毕。打开终端,重新安装 GRUB2 到 EFI 分区:
sudo grub-install /dev/sda1
EFI+GPT模式下修复GRUB2双系统引导
 
最后,刷新一下 GRUB2 配置:
sudo update-grub2
EFI+GPT模式下修复GRUB2双系统引导
 
现在重启,即可看到亲切的 GRUB2 终于“夺回”双系统引导权了!
EFI+GPT模式下修复GRUB2双系统引导
 
小结:EFI 引导 + GPT 分区模式下的双系统问题稍微复杂一点,需要朋友们多实操、多领会,关键是搞清楚自己的硬盘分区(EFI 分区和 / 分区)的作用、在不同系统环境下的名称,切记切记!
 
本文永久更新地址:http://www.linuxdiyf.com/linux/30286.html