Windows10+CentOS7雙系統(UEFI+GPT)
前言
眼饞雙系統有一段時間了,然而之前安裝失敗格盤的慘痛教訓歷歷在目。這幾天閒着沒事查閱了好多資料,慫了一個星期,終於決定再來一次嘗試。總的來說安裝過程還是挺順利的,但是後期Windows引導的問題折騰了三天。。。
技術不好,最終搞出個另類的雙系統:默認啓動Windows10,同時支持Windows Quick Boot;BIOS下切換到CentOS。
設備信息
PC: Thinkpad E431,Microsoft Windows10 Pro 64Bit (10240)
CentOS版本:CentOS-7-x86_64-DVD-1511(這個版本的CentOS支持UEFI)
前期準備
1. 分配CentOS安裝盤符
直接使用Windows的磁盤管理,用磁盤壓縮切一個空間出來就好了。我是切了50G出來。
2. 關閉Windows Quick
執行Win+R
輸入gpedit.msc
,計算機配置->管理模塊->關機,雙擊右邊,選擇已禁用
。
3. 關閉Secure Boot
這個要在BIOS下執行。
安裝CentOS
1. UltraISO
製作CentOS啓動盤。
2. 設置CentOS鏡像位置
BISO選擇U盤啓動,接下來應該會看到黑色界面,如下:
將光標移到第一行,然後這裏不是直接點Install CentOS7
,要按Tab鍵(我的電腦是按e---滿滿的調試淚水啊)先配置CentOS鏡像位置。
按下Tab之後可以看到一下三行英文:
setparams "Install CentOS 7" Install
limuze /image/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet
initrdefi /image/pxeboot/initrd.img
- 1
- 2
- 3
- 1
- 2
- 3
---可能是版本的問題,我的顯示和上面的不一樣
這個是用來選擇鏡像位置的,因爲CentOS它不會自動定位到正確的位置。。。所以接下來要先修改上面的內容。
① 把第二句改成:
limuze /image/vmlinuz initrd=initrd.img linux dd quiet
- 1
- 1
② 接下來按Ctrr+x
執行,就可以看到所有盤符和編號了。類似於下面這樣:
可以看到,CentOS鏡像的位置(也就是我的U盤)是sdb4
。記住這個sdb4,然後關掉這個界面重新再來一次。
③ 重新來一次又來到了步驟2的那個圖,還是按Tab鍵,這一次將第二行改成如下形式:
limuze /image/vmlinuz inst.stage2=hd:/dev/sdb4 quiet
- 1
- 1
接下來按Ctrr+x
執行,CentOS就開始安裝了。記得要勾選一個桌面(如gnome桌面)。
4. 設置CentOS磁盤分區
進來安裝界面之後,選擇前面切出來的那個盤。
CentOS安裝過程中要設置磁盤分區,這個就涉及到Linux的磁盤分區。下面是我的設置情況:
/ :大小30G,設備類型`LAM`,文件系統`ext4`
/boot :大小200M,設備類型`標準分區`,文件系統`ext4`
/boot/efi:大小128M,設備類型、文件系統默認值(這個efi分區是放CentOS的uefi文件的,貌似最後也就佔10M左右的空間)
/swap :大小8G,設備類型`LAM`,文件系統`ext4`(據說swap分區要爲物理內存的兩倍,不過覺得我8G內存給它8G已經算多了)
/home: :剩下的空間都給它,設備類型`LAM`,文件系統`ext4`
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
--如果/boot分區總是在4096KiB時,看看分區的名是不是sda5如果是則再建一個/boot分區 把之前改名保留,就可以了
之後就開始漫長的安裝了。。。。
修復引導
CentOS安裝完畢時候會重啓電腦,這個時候你會看到系統選項有一個Windows10
和 CentOS
,選擇Windows10
,“臥槽!我的Win10居然沒事,網上那羣騙子,害我虛驚一場,重啓看看CentOS先”。選擇CentOS,然後就看到下面的東東:
“特麼我這個是Linux啊,你提示Windows未啓動是什麼意思?”
然後就開始了我的折騰之旅。。。。。
(這裏省略上萬字的心酸歷程)
下面是解決方案
1. 網友建議
網上說的在Windows下使用easybcd
添加CentOS的引導,反正我試了很多遍就是沒成功。事實上easybcd
只能添加CentOS的mbr引導,這個可以在easybcd
看出,然而我是通過UEFI來裝的,應該就不行。
2. 幾番折騰,新辦法
① 前面CentOS分區的時候實際上/boot/efi
是一個ESP
分區(UEFI
系統分區)。裏面放的是CentOS的EFI引導文件。
$ ls -R EFI/
EFI/:
BOOT/ centos/
EFI/BOOT:
BOOTX64.EFI* fallback.efi*
EFI/centos:
BOOT.CSV gcdx64.efi* grub.cfg.bak grubx64.efi* shim.efi*
fonts/ grub.cfg grubenv MokManager.efi* shim-centos.efi*
EFI/centos/fonts:
unicode.pf2
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
其中最重要的文件是grubx64.efi
,開機時,BIOS先通過ESP分區找到相應的efi程序,然後加載啓動系統,這裏的grubx64.efi
就是用來加載CentOS的。
② 以此類推,Windows下肯定也有類似的文件。的確,在裝Windows10的時候,會自動分配一個隱藏的ESP分區,盤符別名爲SYSTEM_DRV
:
BOOT/
EFI/
- 1
- 2
- 1
- 2
其中EFI/Microsoft/Boot
目錄裏面放的就是加載Windows系統的efi文件。即EFI/Microsoft/Boot/bootmgr.efi
。
由上可知,整個硬盤共有兩個ESP分區,常理上講好像有點不科學,具體我也不知道可不可以。我覺得可能是不可以的,測試了下,發現BIOS每次都是從SYSTEM_DRV
裏面搜索efi程序,而CentOS的efi又不在SYSTEM_DRV
目錄下,這應該就是CentOS無法啓動的原因。
③ 所以接下來我就把CentOS的ESP分區裏面的EFI/centos
整個文件夾都拷貝到SYSTEM_DRV
盤下的/EFI
目錄下。重啓電腦發現還是不行,原因很簡單
a.如果想要出現兩個系統的選擇項,那就要使用Win10引導CentOS或者有個程序來專門引導兩個系統,前者我查了很多資料還是沒弄出來,好像是要修改Windows的BCD
文件,有點麻煩。至於後者,有個叫rEFind
的程序(rEFind下載)可以達到目的,不過弄出來界面太醜了,我放棄了。
b.如果想要使用BIOS引導,就要把EFI/centos
裏面的路徑寫到一些特殊的文件,這個要用到一個叫BOOTICE
的工具BOOTICE下載。
3. BOOTICE
使用教程
① 打開BOOTICE,選擇UEFI,點修改啓動序列
② 選擇左邊的添加,先隨便選一個本地磁盤的efi文件,然後把左邊的啓動文件
改爲
\EFI\centos\grubx64.efi
- 1
- 1
啓動分區
選擇和Windows系統一樣的項。
最後把它移動到第二個,保存。
③ 使用PE把\EFI\centos
從CentOS的ESP目錄移動到Windows的ESP目錄下。這一步是爲了讓上面設置啓動文件:\EFI\centos\grubx64.efi
生效。
不得不說,PE真是個好工具。
成功
通過上述步驟之後,重啓電腦,電腦應該還是自動進入Win10,因爲BOOTICE
工具是把CentOS添加到BIOS的啓動序列中= =
重啓,進入BIOS(Thinkpad是F12),可以看到BIOS啓動列表有Windows10
、CentOS
、USB
HDD
等等,這個USB HDD
就是U盤,點CentOS
,就可以進入CentOS的引導了,然後啓動CentOS。到這裏就成功了。