UEFI啟動模式安裝ubuntu指南


http://teliute.org/fw/win8insu2.html

 

 

UEFI啟動模式和傳統的Lagency啟動模式完全不同,因此很有必要先了解一下UEFI BIOS和UEFI啟動模式

 1 必須搞清的幾個UEFI問題

 (1) UEFI啟動模式 與 legacy啟動模式

 legacy啟動模式: 就是這么多年來PC一直在使用的啟動方式(從MBR中加載啟動程序),UEFI BIOS作為一種新的BIOS自然也應該兼容這種老的啟動方式;

 UEFI啟動模式: UEFI BIOS下新的啟動技術。如果你的PC在UEFI啟動模式下預裝了Win8,你會發現有兩個很小的隱藏分區。一個叫ESP(EFI系統分區),另一個MSR(Microsoft保留分區,通常為128MB)。MSR是windows要求的。ESP對UEFI啟動模式很重要,UEFI的引導程序是以后綴名為.efi的文件存放在ESP分區中的,ESP分區采用fat32文件系統。此外,可能還存在一個小分區叫WinRE Tools,這個是win8的恢復分區,體積也很小。所以千萬不要手賤把這三個分區刪了。但對我們有意義的是ESP分區,windows下想訪問ESP分區需用分區工具給它分配盤符並取消隱藏;而ubuntu則直接將這個分區掛載到/boot/efi,直接用文件夾瀏覽器進去就可以看到各種.efi文件了。

 因此第一個關鍵問題就是確定自己的啟動模式,方法是進入BIOS,然后你會發現有一項叫"boot mode",選中"UEFI boot"就是UEFI啟動模式,選中"Legacy boot"就是Legacy啟動模式。見過吭爹的UEFI BIOS:有着非常華麗的BIOS界面,還能使用鼠標,但卻只支持Legacy boot。

 (2) UEFI啟動模式只支持64位的系統,所以預裝的win8是64位的,ubuntu(kylin)也需要64位的。

 (3) UEFI BIOS 和 Legacy BIOS

 我們都知道可以在傳統的bios中調整設備的啟動優先級,UEFI BIOS在UEFI啟動模式下不但可以調整設備的優先級,還可以調整設備中引導程序的優先級,安裝完ubuntu之后,你再進BIOS就會發現多了一個可選擇的啟動項叫ubuntu。此外,UEFI BIOS也引入了一些新的技術,例如Fast boot和secure boot,當然后面一項完全是用來坑爹的。

 (4) UEFI啟動模式下如何從u盤或移動硬盤引導

 只要u盤或移動硬盤上有一個fat32的分區,分區的根目錄下有個文件夾叫EFI,UEFI就會自動去查找相應的啟動文件(.efi)

 如果你剛制作了ubuntu(kylin)-13.04-64位的啟動u盤,可以打開它,你會發現分區的文件系統是fat32,確實有一個EFI文件夾,進去看看就是各種.efi引導文件(這里再次強調64位,32位下你是找不到這個文件夾的)。因此現在想制作可啟動的u盤或移動硬盤就簡單了,只需要復制粘貼就行了。

 部分UEFI BIOS還支持從NTFS分區中查找啟動文件。

 2 安裝常見問題

 (1) PC買來時預裝了Win8,可是怎么按快捷鍵也進不了BIOS

 這個是Win8的啟動技術造成的,解決方法有二:

 <1> 將鼠標移動到屏幕右上角,在彈出的邊框中選"設置" → "電源",然后按住shift鍵選"重啟",等待一會,會彈出一個界面,選"疑難解答" → "高級選項" → "UEFI固件設置" → "重啟"

 等待片刻就來到BIOS。

 <2> 徹底關閉Win8的快速啟動,方法是按"win鍵"+x,選擇帶管理員權限的命令提示符,輸入命令powercfg -h off。這樣Win8的關機就不再是假關機了,重啟就可以按快捷鍵進BIOS了。然后在BIOS中將fast boot設為disable。

 我個人使用的是方法二,原因有二:一,如果開啟了BIOS中的fast boot,啟動時外接USB鍵盤不可用,因此也無法在grub啟動菜單中選擇進哪個系統,當然,筆記本內建的鍵盤是可用的,可是我經常懶得將筆記本打開,直接以平板模式放支架上工作,內置鍵盤是用不了的。二,Win8快速啟動是建立在休眠功能上的,休眠功能會額外占用75%左右內存容量的空間,8G內存就是6G多了,對於我128G的SSD太多了點,更何況我裝的還是雙系統。

 (2) 關閉secure boot

 這個坑爹的技術曾引發全世界范圍內對微軟的吐槽,如果你的BIOS不能disable,那很多Linux發行版你都無法安裝。據說ubuntu是買了微軟的key的,但是我安裝完ubuntukylin13.04-64位后同樣被這一坑爹技術華麗麗地阻止啟動。當然我的BIOS是可以關閉它的。

 (3) 安裝完成后如何啟動ubuntu

 安裝過程和以前完全沒有差異。但是安裝完成后拔掉u盤重啟,不出意外的話,會直接進win8。還記得1中提到的UEFI BIOS可以設置設備中系統的優先級嗎?這里Win8是第一優先級,當然很自然地就進win8了,進BIOS你會發現啟動項多了一個ubuntu,放在最前面就OK了。當然,還有一個辦法,啟動時按快捷鍵調出BIOS的啟動菜單,選擇ubuntu就可以進ubuntu系統了。

 (4) 像以前一樣從grub啟動windows

 切換系統時每次都要進BIOS或則調出BIOS啟動菜單,非常不方便,有沒有辦法像以前一樣可以從grub啟動菜單中進win8呢?答案是肯定的,只是步驟稍微有點長:

 <1> 先讓grub啟動菜單顯示出來

 不出意外的話,你啟動ubuntu時是看不到grub啟動菜單的。輸入下面命令打開/etc/default/grub

 sudo gedit /etc/default/grub

 把"GRUB_HIDDEN_TIMEOUT=0"這一行注釋掉(這一行的最前面增加"# "),變成這樣:

 # GRUB_HIDDEN_TIMEOUT=0

 此外"GRUB_TIMEOUT=10"控制着grub菜單的讀秒時間,這里是10秒,可以根據需要修改成其他值。

 <2> 增加win8的啟動項

 還記得剛才我們說的ESP分區嗎,現在安裝完了,也啟動了,你可以去/boot/efi下看看這個分區里面都有什么。你會發現這樣一個文件"/boot/efi/EFI/Microsoft/Boot/bootmgfw.efi",它就是win8的引導文件,所以增加的啟動項的方法就是去加載這個文件。

 首先,確定我們ESP分區的UUID是什么,先輸入下面命令。

 sudo grub-probe --target=fs_uuid /boot/efi/EFI/Microsoft/Boot/bootmgfw.efi

 返回結果:8AA5-3B52

 當然這個"8AA5-3B52"是我的ESP分區的UUID,別的電腦就會變成其他值了。分區的UUID在你的PC中的是獨一無二,也不會發生改變,因此經常用它來代表一個分區。

 用下面命令打開"/etc/grub.d/40_custom"

 sudo gedit /etc/grub.d/40_custom

 然后在最后面增加:

 #### #### #### #### #### #### #### ####

 menuentry "Windows x86_64 UEFI-GPT" {

 search --fs-uuid --no-floppy --set=root 8AA5-3B52

 chainloader (${root})/EFI/Microsoft/Boot/bootmgfw.efi

 }

 #### #### #### #### #### #### #### ####

 需要注意,8AA5-3B52要修改成你剛才得到的UUID哦。

 <3>改完之后記得讓修改生效

 sudo update-grub2

 此時重啟,看看是不是已經有grub啟動菜單了,而且還可以選擇進入win8。

 3 在移動硬盤或u盤中安裝ubuntu

 后來我又在移動硬盤中安裝了ubuntu12.04 64位,這里遇到了一個問題:

 SSD中的安裝ubuntu(kylin)-13.04 64位在UEFI BIOS出現的啟動項名稱是"ubuntu",對應的引導文件是"ESP分區/EFI/ubuntu/grubx64.efi"

 而如果再安裝一個ubuntu-12.04 64位,哪怕是安裝到移動硬盤或u盤中,也會在你的主硬盤的ESP分區中建立引導文件,而且這個引導文件同樣是"ESP分區/EFI/ubuntu/grubx64.efi"。這會把原先ubuntu(kylin)-13.04的引導文件給覆蓋掉。注意,安裝過程中選擇從哪個設備建立引導是無效的,無論你選什么,引導文件都會被安裝到主硬盤ESP分區中。因此安裝之前需要做點工作。

 (1) 修改SSD中ubuntu系統的引導文件路徑

 為了解決上述問題,可以嘗試修改路徑。

 sudo gedit /etc/default/grub

 找到這一行"GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`"

 在最前面加# 注釋掉,然后在它下面增加一句,修改后成這樣:

 # GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`

 GRUB_DISTRIBUTOR=ubuntukylin

 因為我裝的是ubuntukylin,所以我改成了ubuntukylin,你可以按自己的喜好修改成其他名字。

 修改完后

 sudo update-grub2

 sudo grub-install

 完成后,可以去/boot/efi/EFI下看看是不是產生了一個ubuntukylin的文件夾,同時里面也有一個文件"ESP分區/EFI/ubuntukylin/grubx64.efi",BIOS中也會出現一個啟動項叫ubuntukylin,別忘了進去設成第一啟動項。當然舊的ubuntu啟動項還是在的,此時你從ubuntukylin或ubuntu啟動的結果都是一樣的。所以此時我們可以把ubuntu這一項廢棄了。

 (2) 安裝

 按照1的描述,安裝前記得先給移動硬盤或U盤分區,其中一個分區是FAT32文件系統,然后安裝ubuntu到u盤或移動硬盤,安裝方法沒什么獨特,只是在選文件系統時掛載到u盤或移動硬盤的分區中就可以了。完成后,"/boot/efi/EFI/ubuntu/grubx64.efi"已經變成ubuntu12.04的引導文件了。此時我們只需要將這個文件搬到移動硬盤或u盤中的fat32分區中,方法如下:

 先將你的ubuntu-12.04 64位的啟動u盤(LiveUSB)打開,復制里面的EFI文件夾(或者到iso中去提取)到移動硬盤或u盤的FAT32分區中。再進到"/boot/efi/EFI/ubuntu/"中,用grubx64.efi覆蓋"EFI/BOOT/"下的文件。完成,是的,僅需復制粘貼就可建立移動設備上的引導了。

 (3) 刪除BIOS中殘留的啟動項

 步驟(2)完成后,移動硬盤或u盤就是可啟動的了,但會在BIOS中殘留啟動項"ubuntu"。可以使用工具efibootmgr刪除。

 首先,將引導文件刪除:

 sudo rm -r /boot/efi/EFI/ubuntu

 然后使用工具efibootmgr來查看我們需要刪除哪一項

 sudo efibootmgr

 你會得到類似下面這樣的信息

 BootCurrent: 0002

 Timeout: 0 seconds

 BootOrder: 0002,0000,0001,0006,0005

 Boot0000* Windows Boot Manager

 Boot0001* ubuntu

 Boot0002* ubuntukylin

 Boot0005* UEFI: IP4 Realtek PCIe GBE Family Controller

 Boot0006* UEFI: IP6 Realtek PCIe GBE Family Controller

 從信息中我們知道windows是第0項,ubuntu是第1項,顯然是將第1項刪除

 所以刪除命令是

 sudo efibootmgr -b 1 -B

 windows下也有類似工具EasyUEFI。

 其實,在UEFI啟動模式下,grub-install命令就用"efibootmgr -c"來為BIOS建立一個新的啟動項。新手建議別碰這個命令,有實力的玩家可以看看它的man手冊。

 UEFI很強大,可以在UEFI下開啟一個像Linux一樣的終端,然后運行命令:例如截屏工具等等。只需要你去下載一個UEFI shell的.efi文件,放入ESP分區中,用efibootmgr建立啟動項就可以進入了。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM