http://teliute.org/fw/win8insu2.htmlhtml
UEFI啓動模式和傳統的Lagency啓動模式徹底不一樣,所以頗有必要先了解一下UEFI BIOS和UEFI啓動模式ios
1 必須搞清的幾個UEFI問題shell
(1) UEFI啓動模式 與 legacy啓動模式ubuntu
legacy啓動模式: 就是這麼多年來PC一直在使用的啓動方式(從MBR中加載啓動程序),UEFI BIOS做爲一種新的BIOS天然也應該兼容這種老的啓動方式;windows
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位的。ui
(3) UEFI BIOS 和 Legacy BIOShtm
咱們都知道能夠在傳統的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創建啓動項就能夠進入了。