随着虚拟机管理软件的广泛使用,双系统安装场合越来越少了,但还存在这样的地方,尤其是学习一些硬件的场合。本文针对UEFI时代的双系统安装进行了实验和说明。
前一篇博客已经对UEFI,GPT和安装CentOS进行了详细说明,见:http://blog.csdn.net/smstong/article/details/9408451。本文专门说明双系统的安装方式。
1 安装步骤
(1)使用diskgen工具把硬盘修改为GPT格式。(可以通过带有这个工具的光盘、U盘等完成)。
(2)光盘安装Window8,在建立分区时,安装程序自动建立额外的两个分区MSR和ESP。
(3)一步步点击完成。
此时,ESP分区有/EFI/Microsoft/Boot/文件夹,里面是Windows8的启动器,bootmgr.efi,bootmgfw.efi等。
(4)放入CentOS-EFI的光盘,重新启动机器
(5)安装程序能够识别ESP分区,我们需要做的只是把这个ESP分区挂载到/boot/efi。(注:ESP分区类型的GUID是固定的,据此识别之)
(6)在安装GRUB时,安装程序自动设置为安装到ESP分区,我们看清即可
(7)正常安装完成。
此时,ESP分区增加了/EFI/redhat/文件夹,里面是grub.efi和grub.conf。
2 双系统启动的方式
目前为止,只是安装了两个系统,UEFI的nvram启动菜单有了这两个菜单项,但是这款主板启动时,只显示一个微软的选项。这就导致了只能启动Windows8,不能启动CentOS。解决思路有如下几种
- 使用windows8的bootmgr.efi来链式启动grub.efi。在BIOS时代,ntldr是可以加载grub所在扇区的,现在我还没找到可行方式;(不可行)
- 把grub.efi修改路径及名称为bootmgfw.efi,然后通过grub.efi链式启动bootmgfw.efi。这在BIOS时代是相当常见的,但现在我实验证明Centos所带的grub.efi不能链式加载bootmgfw.efi,提示错误。(不可行)
- 升级主板固件,使得能按下F12时,同时显示CentOS和Windows两个启动选项。还没找到可行的途径。(不可行)
- 通过第三方启动管理器来代替bootmgfw.efi的位置,让后由这个管理器提供链式加载bootmgfw.efi和grub.efi。我选用的是rEFInd,实验证明完全可行。(可行!)
目前位置我还没找到可以修该这款主板UEFI的启动菜单的可行方式,所以采用把refind.efi改名为微软的bootmgfw.efi的方式。而微软的bootmgfw.efi则修改到其他位置。具体步骤:
(1)通过CentOS光盘recue模式,把/EFI/Microsft/Boot文件夹改名为 /EFI/weiruan;
(2)把refind文件夹拷贝到/EFI/Microsoft/,并改名为Boot;
(3)把refind_x64.efi改名为bootmgfw.efi;修改refind.conf.smaple文件名为refind.conf,并根据需要修改其中的内容,我修改后的内容如下:
timeout 20
showtools shell, mok_tool, about, reboot, exit, firmware
scanfor internal,external,optical,manual
dont_scan_files shim.efi,MokManager.efi,memtest.efi,bootmgr.efi
scan_all_linux_kernels
default_selection weiruan
至此,文件夹布局为:
EFI/weiruan (里面是Windows8的启动器)
EFI/Microsoft/Boot(里面是refind的文件)
EFI/redhat (里面是grub启动器)
完成后,重新启动机器,喜人的rEFInd界面出现,上图显摆一下:
3 UEFI时代的双启动思考
- 微软依旧很霸道,所以多系统安装时,Windows要首先安装,省的它在安装是破坏别的已安装系统;
- 这个时代的启动加载器尚未完全成熟稳定,grub就是个例子,它的链式加载有问题存在;
- UEFI主板功能还不完善,设置修改不方便,不好用;
- 理论上多启动更加简单;
- 目前作为启动管理器的rEFInd确实非常好用。