其中最重要的文件是grubx64.efi,开机时,BIOS先通过ESP分区找到相应的efi程序,然后加载启动系统,这里的grubx64.efi就是用来加载CentOS的。
② 以此类推,Windows下肯定也有类似的文件。的确,在装Windows10的时候,会自动分配一个隐藏的ESP分区,盘符别名为SYSTEM_DRV:
其中EFI/Microsoft/Boot目录里面放的就是加载Windows系统的efi文件。即EFI/Microsoft/Boot/bootmgr.efi。
由上可知,整个硬盘共有两个ESP分区,常理上讲好像有点不科学,具体我也不知道可不可以。我觉得可能是不可以的,测试了下,发现BIOS每次都是从SYSTEM_DRV里面搜索efi程序,而CentOS的efi又不在SYSTEM_DRV目录下,这应该就是CentOS无法启动的原因。
③ 所以接下来我就把CentOS的ESP分区里面的EFI/centos整个文件夹都拷贝到SYSTEM_DRV盘下的/EFI目录下。重启电脑发现还是不行,原因很简单
a.如果想要出现两个系统的选择项,那就要使用Win10引导CentOS或者有个程序来专门引导两个系统,前者我查了很多资料还是没弄出来,好像是要修改Windows的BCD文件,有点麻烦。至于后者,有个叫rEFind的程序(rEFind下载)可以达到目的,不过弄出来界面太丑了,我放弃了。
b.如果想要使用BIOS引导,就要把EFI/centos里面的路径写到一些特殊的文件,这个要用到一个叫BOOTICE的工具BOOTICE下载。
① 打开BOOTICE,选择UEFI,点修改启动序列
② 选择左边的添加,先随便选一个本地磁盘的efi文件,然后把左边的启动文件改为 \EFI\centos\grubx64.efi
启动分区选择和Windows系统一样的项。
最后把它移动到第二个,保存。
③ 使用PE把\EFI\centos从CentOS的ESP目录移动到Windows的ESP目录下。这一步是为了让上面设置启动文件:\EFI\centos\grubx64.efi生效。
不得不说,PE真是个好工具。
通过上述步骤之后,重启电脑,电脑应该还是自动进入Win10,因为BOOTICE工具是把CentOS添加到BIOS的启动序列中= =
重启,进入BIOS(Thinkpad是F12),可以看到BIOS启动列表有Windows10、CentOS、USB HDD等等,这个USB HDD就是U盘,点CentOS,就可以进入CentOS的引导了,然后启动CentOS。到这里就成功了。
装这个双系统,修复引导花了我好长时间,不过也学到了很多东西,比如UEFI和传统Legacy的区别、UEFI的工作原理、PE的作用等等,最终文件没有发生丢失,也算是值了。下面是总结。
1. UEFI+GPT装双系统真麻烦
2. 微软垄断心态真可怕
3. Google搜索东西靠谱多了
4. PE真是个好工具(进入磁盘修改EFI文件)
5. 我装的双系统怎么和大家的不一样= =
(又要继续干活了。。。)