隨著虛擬機器管理軟體的廣泛使用,雙系統安裝場合越來越少了,但還存在這樣的地方,尤其是學習一些硬體的場合。本文針對UEFI時代的雙系統安裝進行了實驗和說明。
前一篇部落格已經對UEFI,GPT和安裝CentOS進行了詳細說明,見:http://blog.csdn.net/smstong/article/details/9408451。本文專門說明雙系統的安裝方式。
1 安裝步驟
(1)使用diskgen工具把硬碟修改為GPT格式。(可以通過帶有這個工具的光碟片、隨身碟等完成)。
(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確實非常好用。