1. 程式人生 > >Win8.1+Ubuntu雙系統(UEFI+GPT)

Win8.1+Ubuntu雙系統(UEFI+GPT)

前一篇關於BIOS+MBR分割槽實現雙系統的文章裡面,大家可以發現BIOS+MBR實現雙系統真的是很簡單,我們什麼都不需要做,不需要EasyBCD,不需要啟動助手,因為,Linux有自帶的強大的Grub,他會為我們做好一切。
但是很多朋友,特別是新買預裝了windows8.1(正版)的電腦,在做雙系統的時候出現了問題,這時候Grub就幫不上你了,各種啟動助手都幫不上你,但是別急,偶可以幫你(開個玩笑)。。。
好了言歸正傳,這篇關於UEFI模式實現雙系統或者多系統的文章,適用於以下朋友
1、電腦主機板支援UEFI啟動的,希望使用UEFI快速啟動,又希望使用多系統的
2、已經預裝了正版WIN8.1的系統的。
在開始安裝(倒騰)前,大體上講講,UEFI+GPT模式的啟動原理,首先我們來回顧下BIOS引導MBR分割槽的流程,BIOS開機自檢——》讀取硬碟MBR分割槽的主引導記錄—》控制權交給載入程式-》載入程式根據安裝時候的配置讀取各分割槽記錄—》根據各分割槽已經有的系統情況,列出啟動目錄—》根據使用者選擇,啟動選擇的引導檔案啟動使用者選擇的系統。
現在我們來說說UEFI的情況,主機板上的UEFI模組—》硬碟內的第一個fat分割槽,如果分割槽內有EFI這個檔案目錄,就根據EFI檔案目錄的引導檔案載入各型別的驅動和引導檔案,啟動系統同時完成自檢。(如果第一個fat分割槽沒有EFI目錄則選擇第二個,如果第一塊硬碟沒有,擇選擇第二塊,或者U盤以此類推),當然,UEFI的實際啟動過程,並不像我說的這麼簡單,我這裡也僅僅是簡單描述下跟傳統BISO引導的不同地點而已。現在我們還是來看看實際的情況。先來看看基於UEFI啟動的系統的硬碟結構例項:
這裡寫圖片描述


這是我目前使用的電腦的第一塊硬碟(120G的SSD)的分割槽結構柱狀圖。這塊硬碟上我一共做了6個分割槽(GPT分割槽結構不需要構建邏輯分割槽,所有分割槽都是唯一標識的分割槽)。硬碟頭部有兩個很小的分割槽,第一個ESP分割槽(這個就是放置EFI檔案的分割槽,這個分割槽非常重要,每次做好系統應該自覺備份裡面的所有檔案到安全的地方),第二個是MSR分割槽(微軟保留分割槽,無格式傳統軟體無法讀取),後面接下來就是NTFS分割槽(50G,安裝有WIN8系統和各類軟體)第四個分割槽也是NTFS分割槽(我保留了35G,專門留個放WOW的),第5個就是安裝好Ubuntu的Linux分割槽,最後一個是OSX的HFS分割槽。
必須說明的是ESP和MSR分割槽必須是FAT或者FAT32格式的檔案系統,否則主機板的UEFI初始化程式無法讀取上面的EFI資料夾。ESP分割槽即最重要的啟動分割槽(名字可以隨意)裡面儲存著整個計算機系統的所有啟動資訊。下面我們再來看看ESP分割槽下面的的檔案結構:
這裡寫圖片描述

這是一個我在UEFI環境安裝好的win8.1後儲存下來的ESP分割槽的目錄表(ESP分割槽根目錄下面是EFI,這個圖示EFI資料夾裡面的兩個檔案目錄)。
這裡寫圖片描述
Boot資料夾裡面是一個名字叫做bootX64.efi的檔案,這個檔案UEFI引導的必須檔案,而且必須是在ESP根目錄Boot資料夾裡面。
接下來再來看看Microsoft目錄下面的檔案結構。Mircrosoft目錄下面也是一個Boot資料夾,點開這個/mircrosoft/boot資料夾,可以看到如下圖所示的檔案:
這裡寫圖片描述
這個目錄類容豐富,包含了windows系統引導啟動的所有資訊,非常重要,資料夾是字型和語言部分,BCD包含了windows引導開始以後的資訊(例如安裝Hyper-v虛擬機器和恢復還原之類的就會更新裡面的資訊)。bootmgfw.efi 是 Windows預設引導檔案

efi\boot\bootx64.efi
efi\microsoft\boot\bootmgfw.efi
這樣的檔案結構就構成了UEFI系統引導啟動windows的大體結構了(有趣的是,在windows預設的安裝的EFI檔案結構中,bootx64.efi和bootmgfw.efi實際上是同一個檔案,名字不同而已,但是他們出現的位置不同,所起到的作用不同)

UEFI啟動分割槽(本例為ESP分割槽)的檔案結構分析得差不多了,我們在來回顧一次UEFI啟動的Windows8.1的過程,UEFI控制找到硬碟掃描硬碟上的fat系統型別分割槽,找到EFI資料夾,讀取EFI資料夾類Boot資料夾的bootX64.efi檔案,然後根據其中的資訊找到需要載入的mircosoft資料夾,再次讀取mircosoft資料夾裡的Boot資料夾類的bootmgfw.efi檔案,以此按照bootmgfw.efi檔案的要求載入各種啟動資訊,完成Windows啟動。
到此為止,我們差不多對UEFI環境有個比較初步的瞭解了,對UEFI啟動也差不多有個簡單的理解了。現在我們開始迴歸這篇文章的主題,如何在UEFI環境下安裝WIN8.1+Unbuntu。本著對新同學負責的原則,我們還是從最基本的UEFI安裝WIN8.1說起。已經預裝好UEFI啟動Win8.1的朋友可以直接下跳到Ubuntu的安裝。
(一)windows8.1的安裝:
首先我們還是按老辦法,先規劃好磁碟分割槽在開始安裝系統。首先用PE啟動你的電腦
使用PE自帶的DG分割槽軟體對硬碟進行分割槽操作。
這裡寫圖片描述
這裡寫圖片描述
建立或者轉換成GPT分割槽表,DG軟體會提示你是否建立ESP分割槽,勾選上,分割槽大小100~300隨意(當然你也可以自己建立一個fat或者fat32格式的分割槽作為啟動分割槽),勾選對齊到4096(4k對齊,固態硬碟都懂得,不是固態也勾選吧)然後確定。
這裡寫圖片描述
先建立一個NTFS分割槽安裝Windows,接下來按部就班的建立Linux分割槽以及交換空間
這裡寫圖片描述
完整的分割槽圖如上圖,看看跟上一篇的MBR分割槽圖有什麼不同?多了兩個小黑頭對吧,這兩個小黑頭就是ESP啟動分割槽和MSR保留分割槽。特別說明的是ESP分割槽只是一個FAT或者fat32格式分割槽,可以再分割槽表的任意位置,名字大小隨意(100~3、500)都行,但是它對於UEFI系統的啟動必不可少。
國際慣例還是重安裝Win8.1開始,依舊選在原版映象的U盤或者光碟安裝。開機按Del,根據主機板的不同開始UEFI模式(固態硬碟的同學AHCI記得開啟來),儲存然後重啟。插入U盤或者光碟,開機按F11(或者其他根據主機板不同而異)選擇前面帶UEFI_字樣的啟動選項。
安裝沒什麼好說的愉快的一路NEXT。直到選擇自定義安裝。
這裡寫圖片描述
Win安裝程式讀出了我們剛才分好的5個分割槽,選擇30G的我們剛才規劃的要安裝Win8的分割槽,NEXT,又是愉快的等待,然後簡單的設定,再次愉快的等待,差不多半小時到40分鐘,Windows就算安裝好了。
這裡寫圖片描述
這樣就算是在UEFI模式下裝好了WIN8.1,開啟磁碟管理,可以看到windows只讀取了硬碟上的4個分割槽,並沒有讀取ESP分割槽,所以UEFI模式相對於BIOS模式是要安全很多,不會受到諸如以前恐怖的CIH病毒侵害的。
接下來,我們先不忙安裝Ubuntu ,繼續用PE啟動電腦,來看看我們這個硬碟的ESP啟動分割槽的情況(當然可以用windows自帶的Diskpart命令來檢視,並掛載,這裡主要是面對新手朋友,所以還是圖形見面直觀大方)。
接下來,我們先不忙安裝,先來看看我們的虛擬機器,點開虛擬機器設定-》韌體,
這裡寫圖片描述
我們可以看到UEFI模式安裝好的win8.1在安裝過程中自動的為UEFI控制添加了從檔案Bootmgrfw.efi 啟動。這個反映在實體機器上就是,你在UEFI模式下安裝好WIN8.1的時候,按住啟動選擇,就只有Windows Boot Manager和你插入的其他啟動裝置選項了。如果沒有其他裝置,UEFI會快速的找到Bootmgrfw.efi啟動windows。不會再出現原來按F11時候的選擇,什麼從光碟機啟動,從硬碟啟動的選項了。更不會再找到Bootmgrfw.efi啟動windows的情況下,繼續去找Grub或者是其他什麼傳統啟動助手軟體,然後再通過軟體,根據硬碟分割槽的啟動資訊,啟動多系統選擇。(另外,還需要說明的一點事,在GPT分割槽表上是不存在啟用的當前分割槽這種說法的,因為UEFI啟動系統只是找第一個FAT(fat32)分割槽,在分割槽中找到EFI資料夾和裡面的啟動資訊就停止了,如果沒找到繼續找第二個FAT分割槽,當前裝置沒有就換下一個裝置,以此類推)

說了這麼多大概很多在UEFI模式下安裝了Windows再安裝Ubuntu系統的朋友會多少明白一點,為什麼裝好雙系統,第一次進入了Grub,可以看到多重引導,但是一旦選擇進入了Windows8.1,接下來,再重新啟動就會直接進入Windows,不會再去啟動Grub了吧。
我們再一次用PE啟動電腦,現在我們讀取到了ESP啟動分割槽,即我標示的F盤(這個碟符是PE啟動系統隨機分配的)
這裡寫圖片描述
開啟這個F盤,看看裡面的結構式是不是
/efi/boot/bootX64.efi
/efi/mircosoft/boot/ bootmgfw.efi
這樣的檔案結構吧。
這裡寫圖片描述
這樣我們就算不僅僅在UEFI模式下安裝好了Win8.1,並且還大體明白了,Win8.1在UEFI模式下是怎麼啟動電腦的。接下來就是在UEFI模式安裝Ubuntu了。
(二)UEFI模式安裝Ubuntu
Unbuntu14.04的發行版ISO,已經支援UEFI模式安裝了,所以,我們還是選擇最簡單的辦法就是寫到U盤或者是光碟安裝,啟動的時候照例選擇有UEFI_字首字樣的啟動項。因為安裝過程跟上一篇BIOS+MBR的安裝差不多,相同的地方我就不一一詳細介紹了,只是針對不同的地方。
開始一路NEXT,到選擇安裝的時候仍然選擇其他選項(這個很重要,建議以後折騰電腦的時候,均採取自定義,這樣你才明白程式會對自己的電腦做些什麼,做了些什麼)。
這裡寫圖片描述
接下來出現我們在上一篇安裝裡面說得比較詳細的自定義安裝介面,分割槽安排還是跟BIOS安裝的時候差不多,只是多了兩個分割槽而已(編號方法仍舊是/dev/sda12345)
值得注意的是,我們現在在選安裝啟動器的裝置位置時,選擇/dev/sda1 不要遺漏數字1,這樣就是把Ubuntu的EFI啟動資訊安裝到我們的ESP啟動分割槽上了,而且,Ubuntu很聰明小心謹慎,只是新增,不會去動微軟大爺的原來的。
這裡寫圖片描述
接下來又是愉快的NEXT,NEXT。。。大概20~30分鐘的愉快等待,機器重啟,進入熟悉的Grub介面,UEFI的雙系統安裝就算完成了!
當然到這裡大多數的朋友都會遇到,用Grub啟動到Ubuntu,愉快的玩耍了幾下,然後再回到Windows再次愉快的LOL了兩把或是其他神馬,然後又想起了,去Ubuntu看看,結果再次啟動電腦的時候,直接就近Windows了,微軟大爺就是這麼霸氣。。。等下我們再來說怎麼解決這個問題。
同樣,我們先不忙配置雙啟動,先再來看看裝好雙系統的的情況下的ESP啟動分割槽的情況,啟動裝好的Ubuntu,開啟檔案管理器,點選計算機,進入/BOOT目錄(ESP啟動分割槽的EFI資料夾是預設掛載到這個目錄的)開啟EFI資料夾
這裡寫圖片描述
看到沒有,ESP分割槽根目錄下面是不是比剛才裝好WIN8.1的時候多了一個Ubuntu資料夾。
這樣我們大概也明白了,安裝玩UEFI模式的Ubuntu,安裝程式會低調的在ESP啟動分割槽的根目錄下面新增一個自己的啟動資訊資料夾。
(三)配置refind完成UEFI下的雙系統啟動

大概是由於微軟大爺的霸氣,UEFI雙系統做好以後,進入了Win8.1就再也無法看見,引導Grub的介面了。好了現在接下來說說如何解決UEFI模式下,可以愉快的啟動切換Win或者Ubuntu,我們可以採取用其他管理引導的方式,例如,Clover和refind,因為Clover是在OSX下配置引導安裝的,我們就選擇refind(這個可以到官網直接下載,目前的最新版本是0.83版實際上剛才有吧友在回覆中提到了,可以使用refind)。那麼我就來說說怎麼使用refind配置雙系統吧。首先下載refind包,解壓後得到一個資料夾。
這裡寫圖片描述
現在,我們需要用PE啟動電腦(當然也可以直接使用Diskpart掛載ESP分割槽,為了方便新同學,直觀的瞭解就直接使用PE了)開啟我們安裝好的雙硬碟的ESP分割槽,首先完整備份EFI資料夾及資料夾裡面的所有內容到一個你認為安全的地方然後開啟EFI資料夾,現在你看到的結構內容是
/efi/boot
/efi/Microsoft
/efi/Unbuntu
這裡寫圖片描述
現在,開啟我們下載並解壓好的refind-bin-0.83資料夾,選中其中的叫refind的資料夾,全部複製到ESP分割槽的根目錄下面,下面是複製好的,ESP檔案結構,如下圖所示:
/efi/boot
/efi/Microsoft
/efi/Unbuntu
/efi/refind
這裡寫圖片描述
現在,我們可以開始配置refind了,首先選擇,Microsoft資料夾,隨便改個名字,叫做Win81,然後把refind資料夾改名字為Microsoft,改好後的檔案結構為:
/efi/boot
/efi/Microsoft
/efi/Unbuntu
/efi/Win81
這裡寫圖片描述
現在我們進入win81資料夾,進入裡面的Boot目錄,全選所有的檔案,拷貝到Win81中來,然後再刪除掉Win81中的這個空的Boot目錄。現在Win81的目錄結構大體上就是
/efi/Win81/bootmgfw.efi(等等檔案和語言資料夾)。

然後我們在進入那個假的Microsoft資料夾(實際上是我們的refind目錄更改而來的),新建一個Boot資料夾,剪下原來該檔案中的類容,到我們新建的這個Boot目錄中來。完成後這個偽裝的Mircosoft資料夾的結構為:
/efi/Mircosoft/boot/refind_x64.efi等檔案及一些資料夾
這裡寫圖片描述
選中其中的refind_x64.efi,檔案更改名字為bootmgfw.efi,得到這裡為止,大體工作就完成了,剩下來的就是改變配置選單。這個等下再說,為了確保不出錯,我們現在來看看修改好的ESP分割槽裡面的檔案結構:
/efi/Boot
/efi/Microsoft/boot
/efi/Win8.1
/efi/Ubuntu
確保你的檔案結構如上面所示,並且在假Microsoft資料夾的Boot目錄下面的refind_x64.efi已經更名為bootmgfw.efi。
現在剩下最後一步工作寫refind的配置檔案了,實際上下載的軟體包裡面,已經有寫好的模板了(即名為refind.conf-sample),我們只需要更改其中的類容就可以安全的愉快的啟動雙系統了。

廢話不多說,進入/efi/Mircosoft/bott目錄,開啟其中的refind.conf-sample檔案,然後另存為refind.conf 。(開啟方式可以選擇寫字板,這樣可以看到清晰的分行和格式)
這裡寫圖片描述
這是一個指令碼檔案,“# ”後的類容表示註釋,我們仔細瀏覽這個檔案找到下面這段:
這裡寫圖片描述
這是一個refind為我們寫好的定義的啟動選單指令碼,啟動選單叫Ubuntu ,使用的啟動檔案為/efi/ubuntu/Grubx64.efi,另外載入的圖示是icon/efi/refind/icons/os_linux.png
現在我們按照選單指示的路徑開啟,發現Grubx64.efi,確實存在於我們的目錄裡面保持不變,
但是圖示路徑發生了變化,這個原來寫好的refind目錄已經變為Microsoft/boot了,所以我們更改下這個選單圖示路徑為 /efi/Microsoft/boot/icons/os_Ubuntu.png (其實icons目錄下面已經有了Linux各種發行版的圖示了,所以我直接改成了Ubuntu的)
改好的Ubuntu選單指令碼:
menuentry Ubuntu {
loader/EFI/ubuntu/grubx64.efi
icon/EFI/Microsoft/Boot/icons/os_ubuntu.png
disabled
}
然後再繼續找到下面欄位,也就是WINDOWS的選單指令碼
這裡寫圖片描述
這段程式碼寫的win7 ,我們可以更改為Win8.1,按照我們自己的ESP分割槽的目錄結構,修改好windows選單指令碼,修改好的選單指令碼如下:
menuentry “Windows 8.1” {
loader\EFI\Win81\bootmgfw.efi
icon/EFI/Microsoft/Boot/icons/os_win.png ///這裡我添加了圖示路徑
disabled
}
這樣我們就弄好了我們雙系統的引導選單,但是refind的功能遠不止於此,實際模板提供了包括OSX在內的選單引導指令碼,由於我們電腦上只有Win8.1和Ubuntu,那麼我們就把其他模板禁用了以保證我們的啟動選單清清爽爽(直接在不需要的選單引導指令碼前面加上“#”就可以了)
好了,儲存退出,大功告成了。
總算寫完了,最後發一張喜聞樂見的refind引導開機圖片!
這裡寫圖片描述
這樣,就可以愉快的在UEFI模式下,愉快的使用Windows+Ubuntu雙系統了。另外提醒下大家,在剛才 的工作做完以後記得儲存ESP分割槽下面的EFI資料夾到安全的目錄裡面去