歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Windows10+CentOS7雙系統(UEFI+GPT)

Windows10+CentOS7雙系統(UEFI+GPT)

日期:2017/2/28 13:50:38   编辑:Linux教程

前言

很想安裝Windows10+CentOS7雙系統,然而之前安裝失敗格盤的慘痛教訓歷歷在目。這幾天閒著沒事查閱了好多資料,慫了一個星期,終於決定再來一次嘗試。總的來說安裝過程還是挺順利的,但是後期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鍵先配置CentOS鏡像位置。
按下Tab之後可以看到一下三行英文:

setparams "Install CentOS 7" Install
    limuze /image/vmlinuz inst.stage2=hd:LABEL=CentOS\x207\x20x86_64 quiet  
    initrdefi /image/pxeboot/initrd.img

這個是用來選擇鏡像位置的,因為CentOS它不會自動定位到正確的位置。。。所以接下來要先修改上面的內容。
① 把第二句改成:

   limuze /image/vmlinuz initrd=initrd.img linux dd quiet

② 接下來按Ctrr+x執行,就可以看到所有盤符和編號了。類似於下面這樣:

可以看到,CentOS鏡像的位置(也就是我的U盤)是sdb4。記住這個sdb4,然後關掉這個界面重新再來一次。
③ 重新來一次又來到了步驟2的那個圖,還是按Tab鍵,這一次將第二行改成如下形式:

limuze /image/vmlinuz inst.stage2=hd:/dev/sdb4 quiet

接下來按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`

之後就開始漫長的安裝了。。。。

修復引導

CentOS安裝完畢時候會重啟電腦,這個時候你會看到系統選項有一個Windows10CentOS,選擇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

其中最重要的文件是grubx64.efi,開機時,BIOS先通過ESP分區找到相應的efi程序,然後加載啟動系統,這裡的grubx64.efi就是用來加載CentOS的。
② 以此類推,Windows下肯定也有類似的文件。的確,在裝Windows10的時候,會自動分配一個隱藏的ESP分區,盤符別名為SYSTEM_DRV:

BOOT/
EFI/

其中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

啟動分區選擇和Windows系統一樣的項。
最後把它移動到第二個,保存。
③ 使用PE把\EFI\centos從CentOS的ESP目錄移動到Windows的ESP目錄下。這一步是為了讓上面設置啟動文件:\EFI\centos\grubx64.efi生效。
不得不說,PE真是個好工具。

成功

通過上述步驟之後,重啟電腦,電腦應該還是自動進入Win10,因為BOOTICE工具是把CentOS添加到BIOS的啟動序列中= =
重啟,進入BIOS(Thinkpad是F12),可以看到BIOS啟動列表有Windows10CentOSUSB HDD等等,這個USB HDD就是U盤,點CentOS,就可以進入CentOS的引導了,然後啟動CentOS。到這裡就成功了。

心得

裝這個雙系統,修復引導花了我好長時間,不過也學到了很多東西,比如UEFI和傳統Legacy的區別、UEFI的工作原理、PE的作用等等,最終文件沒有發生丟失,也算是值了。下面是總結。
1. UEFI+GPT裝雙系統真麻煩
2. 微軟壟斷心態真可怕
3. Google搜索東西靠譜多了
4. PE真是個好工具(進入磁盤修改EFI文件)
5. 我裝的雙系統怎麼和大家的不一樣= =
(又要繼續干活了。。。)

參考資料

CentOS7安裝教程

  1. U盤安裝CentOS7全程筆記 http://www.linuxidc.com/Linux/2016-07/133646.htm

UEFI引導修復

UEFI主板GPT��式安裝CentOS6.4 http://www.linuxidc.com/Linux/2014-05/101574.htm

UEFI+GPT安裝Windows8和CentOS雙系統 http://www.linuxidc.com/Linux/2014-05/101575.htm

Windows10與CentOS 雙系統共存完美教程 http://www.linuxidc.com/Linux/2016-07/133716.htm

UEFI的兩種啟動模式 http://www.linuxidc.com/Linux/2016-07/133724.htm

在UEFI+GPT下使用rEFind實現Win10 + Kali2.0 雙引導 http://www.linuxidc.com/Linux/2016-07/133717.htm

更多CentOS相關信息見CentOS 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=14

Copyright © Linux教程網 All Rights Reserved