在網上找了很多方法都失敗了,原因是大多數方法都是用mbr方式安裝的,如grub4dos,easybcd。以至於連自己都懷疑win8能不能用硬盤安裝,差點就去買個u盤來安裝了,就在打算放棄的時候在ubuntu論壇里看到了一個置頂的帖子,對win8硬盤安裝講的很詳細,終於按照他的方法把ubuntu裝上去了,現在講講自己安裝中遇到的坑。
參考:http://forum.ubuntu.org.cn/viewtopic.php?f=77&t=467746
在Win8基礎上加裝Ubuntu,得先搞清楚Win8是以何種方式安裝的
Win8的正規安裝方式有4種,ubuntu的正規安裝方式也是這4種:(雙系統理論上提供4*4種正規安裝方式)
A、BIOS+MBR 傳統安裝方式
B、CSM+MBR 注:CSM是指UEFI主板,且開啟CSM,這種辦法就感覺UEFI不存在一樣
C、CSM+GPT 本文重點討論的部分,難度不低
D、純UEFI+GPT 注:純UEFI是指UEFI主板,且關閉CSM,或者主板沒有CSM
Apple、DELL、HP、Thinkpad等部分機型為應對16種正規安裝方式,提供了陣容強大的混合啟動方案,包括完善的CSM支持模塊、GPT+MBR雙硬盤混合啟動。
台系主板顯得功能少一些:
華碩UEFI主板Z97-DELUXE不提供A方式,僅提供B、C、D三種方式。
華擎UEFI主板B85 Killer不提供A方式,僅提供B、C、D三種方式。
技嘉UEFI主板GS-B85-HD3_v2.1_c不提供D方式,能夠提供A、C兩種方式,特點:技嘉安裝比較容易。
微星UEFI主板Z87 MPOWER MAX不提供B或C方式,僅提供A、D兩種方式,缺點:微星UEFI安裝方式難度過高。
在Win8基礎上加裝Ubuntu,最為關鍵的是:你得知道Win8是裝在MBR上還是裝在GPT上?
在Win8下安裝傲梅分區助手5.6.1專業版或服務器版,一打開它就可以見到GPT或者MBR字樣。
a.如果分區助手查出原有Win8系統盤是安裝在MBR字樣上,那么,建議ubuntu裝MBR方式,見2樓。b.如果分區助手查出原有Win8系統盤是安裝在GPT字樣上,那么,建議ubuntu裝GPT方式。
其次,在Win8基礎上加裝Ubuntu,你得知道電腦本身有沒有開啟UEFI功能?或者根本就是老式BIOS主板。
第一檢查方法:如果查出原有Win8系統盤是安裝在GPT上,那么,基本可以確認為UEFI主板,並且已經開啟UEFI功能。
第二檢查方法:進一步確認,需要進入主板固件設定界面,看一下它有沒有UEFI字樣。如果沒有UEFI字樣就是老式BIOS主板。如果有UEFI字樣,還需要確認它有沒有開啟這個功能,並且檢查CSM是否開啟。
關鍵的UEFI預備知識
U1:開機進入Windows 8,第一時間關閉Fast Startup!如果不關閉它,裝Ubuntu+Win雙系統會害死Windows 8。Fedora不關閉Fast Startup,會封鎖NTFS分區。
U2:關閉主板的快速啟動,可能會叫Fast Boot或者Ultra Fast之類,關閉Intel Smart Response Technology (SRT)
U3:現在是2015年,當前超過90%以上的獨立顯卡不支持UEFI GOP。
a.如果你的獨立顯卡不支持UEFI,請不要關閉CSM,否則,Win8跟ubuntu都不能啟動。
b.如果你的獨立顯卡不支持UEFI,請不要開啟Secure Boot,否則,Win8跟ubuntu都不能啟動。
這是因為UEFI規定CSM與Secure Boot互相沖突,不能同時開啟。
U4:ubuntu官方強烈建議單塊硬盤不要做兩個EFI分區(又叫ESP分區),It is strongly recommended to have only 1 EFI partition per disk.
GPT時代硬盤安裝思路
預裝Win8電腦不帶光驅,且確定Win8建基於純UEFI+GPT方式,且安裝者手頭上沒有U盤,直接安裝Ubuntu14.04.1 x64
講一下我的預裝環境,安裝的是正版Windows 8.1 update x64,請注意:當你建立一個50G分區的時候,微軟會幫你建立四個分區(在真正的純EFI模式)。
Step1:第一時間關閉Fast Startup快速啟動。
Step2:下載ubuntu-14.04.1-desktop-amd64.iso,將其復制到C盤,Grub2理論支持NTFS。
Step3:安裝前,通過傲梅分區助手,可以看到C盤排第4,FAT格式的D盤排第5,(排第幾不能通過微軟自帶的磁盤管理查看,因為它隱藏了MSR分區)。
Step4:以管理員身份,利用mountvol命令掛載ESP分區,將EFI分區設定為M盤,此時,ESP分區仍未能直觀顯示。(注:如果不超過兩個ESP分區,不需要動用diskpart。)
代碼:
1 mountvol M: /s
Step5:打開任務管理器->詳細信息,記下explorer.exe名稱,選中explorer並把它結束。
Step6:在任務管理器上,點文件->運行新任務explorer,必須勾選“系統管理權限”,確定,打開“這台電腦”即可看到esp分區。此時已經具備寫權限,我在efi目錄下新建了一個文件夾,重啟后它會自動消失。請不要刪除或替換任何文件,否則,Win8將無法啟動。
Step7:下載最新的Grub2 for Windows 8 ,將其解壓存放至C盤下,並更名為grub2
Step8:通過cd命令跳轉到grub2目錄下,
代碼:
1 cd c:\grub2
Step9:安裝命令部分比較艱辛,主要參考archlinux中文維基解釋,后來,又參考了無憂上的一位高人寫的方法,現在用的就是1698寫的安裝方法。
超過90%的UEFI主板為64位固件,我的主板就是64位,使用如下安裝命令,M: 表示掛載的盤符號,此方法僅適用於64位主板:
代碼:
1 grub-install --target=x86_64-efi --efi-directory=M: --bootloader-id=Boot --boot-directory=M:/EFI --modules="part_gpt fat normal"
命令執行成功之后,打開ESP分區,可以看到EFI文件夾下多了一個grub文件夾(需要做一個grub.cfg存放在這里),Boot文件夾下多了一個grubx64.efi。
Step10:需要手動配備開機選擇菜單grub.cfg文件,因為Windows版本缺少grub-mkconfig.exe這個文件。
講到第10步,需要手動配備開機選擇菜單grub.cfg文件,存放位置見上篇。本以為成功進入Grub2敲兩條命令就ok了,但UEFI的安裝命令不一樣,而且,還需要考慮顯卡的問題,否則,將會進入 Blind Mode摸黑狀態!
代碼:
1 menuentry "14.04.1 LiveCD (hd0, gpt5) insmod efi_gop efi_uga cyberfung is Here"{ 2 insmod efi_gop 3 insmod efi_uga 4 set isofile="/ubuntu-14.04.1-desktop-amd64.iso" 5 loopback loop (hd0,gpt5)/$isofile 6 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- 7 initrd (loop)/casper/initrd.lz 8 }
萬能grub .cfg.txt”改為"grub .cfg"代碼:

1 menuentry "Boot Windows 8.1_update x64 with GPT" --class windows --class os { 2 search --no-floppy --file --set=root /EFI/microsoft/boot/bootmgfw.efi 3 chainloader /EFI/microsoft/boot/bootmgfw.efi 4 } 5 menuentry "System restart" { 6 echo "System rebooting..." 7 reboot 8 } 9 menuentry "System shutdown" { 10 echo "System shutting down..." 11 halt 12 } 13 menuentry "14.04.1 LiveCD (hd0, gpt2) insmod all_video" { 14 insmod all_video 15 set isofile="/ubuntu-14.04.1-desktop-amd64.iso" 16 loopback loop (hd0,gpt2)/$isofile 17 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- 18 initrd (loop)/casper/initrd.lz 19 } 20 menuentry "14.04.1 LiveCD (hd0, gpt3) insmod all_video" { 21 insmod all_video 22 set isofile="/ubuntu-14.04.1-desktop-amd64.iso" 23 loopback loop (hd0,gpt3)/$isofile 24 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- 25 initrd (loop)/casper/initrd.lz 26 } 27 menuentry "14.04.1 LiveCD (hd0, gpt4) insmod all_video Huggo is Here" { 28 insmod all_video 29 set isofile="/ubuntu-14.04.1-desktop-amd64.iso" 30 loopback loop (hd0,gpt4)/$isofile 31 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- 32 initrd (loop)/casper/initrd.lz 33 } 34 menuentry "14.04.1 LiveCD (hd0, gpt5) insmod all_video Huggo is Here" { 35 insmod all_video 36 set isofile="/ubuntu-14.04.1-desktop-amd64.iso" 37 loopback loop (hd0,gpt5)/$isofile 38 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- 39 initrd (loop)/casper/initrd.lz 40 } 41 menuentry "14.04.1 LiveCD (hd0, gpt2) insmod efi_gop efi_uga"{ 42 insmod efi_gop 43 insmod efi_uga 44 set isofile="/ubuntu-14.04.1-desktop-amd64.iso" 45 loopback loop (hd0,gpt2)/$isofile 46 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- 47 initrd (loop)/casper/initrd.lz 48 } 49 menuentry "14.04.1 LiveCD (hd0, gpt3) insmod efi_gop efi_uga"{ 50 insmod efi_gop 51 insmod efi_uga 52 set isofile="/ubuntu-14.04-desktop-amd64.iso" 53 loopback loop (hd0,gpt3)/$isofile 54 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- 55 initrd (loop)/casper/initrd.lz 56 } 57 menuentry "14.04.1 LiveCD (hd0, gpt4) insmod efi_gop efi_uga cyberfung is Here"{ 58 insmod efi_gop 59 insmod efi_uga 60 set isofile="/ubuntu-14.04.1-desktop-amd64.iso" 61 loopback loop (hd0,gpt4)/$isofile 62 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- 63 initrd (loop)/casper/initrd.lz 64 } 65 menuentry "14.04.1 LiveCD (hd0, gpt5) insmod efi_gop efi_uga cyberfung is Here"{ 66 insmod efi_gop 67 insmod efi_uga 68 set isofile="/ubuntu-14.04.1-desktop-amd64.iso" 69 loopback loop (hd0,gpt5)/$isofile 70 linux (loop)/casper/vmlinuz.efi boot=casper iso-scan/filename=$isofile quiet noeject noprompt splash -- 71 initrd (loop)/casper/initrd.lz 72 }
不過我筆記本明明只安裝了一個硬盤,結果只有用(hd1,gpt5)才能找到c盤。
進入linux后,輸入命令sudo umount -l /isodevice卸載ISO鏡像文件后,即可跟光盤安裝一樣了。
總結
這樣安裝很麻煩,還不如用usb安裝,上面僅僅給沒有u盤的同學提供一個硬盤安裝的方法。