硬件環境介紹
我的Win10
裝在固態盤,GPT
,啟動方式是UEFI
。
CentOS7
裝在另一個盤。這樣的方式最簡潔。
讀者先確定自己是否也是UEFI+GPT
,如果不是請略過這篇文章。
不過現在大多數電腦都是UEFI+GPT
,而網上一些2016年前的,標題未加UEFI
,大多數是BIOS
方式下的安裝,我們是不能參考的。
F12下選擇的Legacy
啟動方式就是BIOS
啟動。
不用擔心CentOS
不支持UEFI
,CentOS7
肯定支持。
搭建CentOS7
的起因
讀完黑客與畫家后,越來越覺得優秀的程序員應該能橫向發展,至少要有能橫向發展的能力,對整個計算機系統有個全面的理解。本身我是學習硬件出身的,如果出去說裝一個系統都不會的話,是多么尷尬。
正巧鳥哥的Linux私房菜是CentOS
入門的,于是開始搭建Windos10
和CentOS7
雙系統。
寫這篇博客的起因
寫這篇博客的原因是因為我被網上的"過時"文章坑了很久,免后人踩坑。
一開始我是對著這篇文章去做的 第一篇參考文章,踩了大坑。
首先這篇文章是寫在2016年的,另外雖然文章沒寫,但是根據他的步驟來看,他的電腦啟動方式是BIOS
啟動,磁盤是MBR
,區別我待會會講。另外不能拿EasyBCD
這個工具來修復引導,它只對BIOS+MBR
啟動有效。
UEFI+GPT 和BIOS+MBR啟動的區別
UEFI+GPT模式的啟動原理,首先我們來回顧下BIOS引導MBR分區的流程,BIOS開機自檢——》讀取硬盤MBR分區的主引導記錄—》控制權交給引導程序-》引導程序根據安裝時候的配置讀取各分區記錄—》根據各分區已經有的系統情況,列出啟動目錄—》根據用戶選擇,啟動選擇的引導文件啟動用戶選擇的系統。
現在我們來說說UEFI的情況,主板上的UEFI模塊—》硬盤內的第一個fat分區,如果分區內有EFI這個文件目錄,就根據EFI文件目錄的引導文件加載各類型的驅動和引導文件,啟動系統同時完成自檢。(如果第一個fat分區沒有EFI目錄則選擇第二個,如果第一塊硬盤沒有,擇選擇第二塊,或者U盤以此類推
基本的形式差別是:
BIOS把MBR讀出來交給CPU執行,做MBR做想做的事。
UEFI是查找磁盤里的\efi\boot\bootx64.efi文件,啟動這個可執行程序,讓這程序做想做的事。
UEFI更先進更快。
MBR分區:
MBR的意思是“主引導記錄”,它有自己的啟動器,也就是啟動代碼,一旦啟動代碼被破壞,系統就沒法啟動,只有通過修復才能啟動系統。最大支持2TB容量,在容量方面存在著極大的瓶頸,那么GPT在今后的發展就會越來越占優勢,MBR也會逐漸被GPT取代。
GPT分區:
GPT意為GUID分區表,這是一個正逐漸取代MBR的新標準,它由UEFI輔住而形成的,這樣就有了UEFI用于取代老舊的BIOS,而GPT則取代老舊的MBR。這個標準沒有MBR的那些限制。磁盤驅動器容量可以大得多,大到操作系統和文件系統都沒法支持。它同時還支持幾乎無限個分區數量,限制只在于操作系統,Windows支持最多128個GPT分區。通過UEFI,所有的64位的win0,win8,win7和Vista,以及所對應的服務器都能從GPT啟動
一般情況下GPT分區下的磁盤不僅有一個ESP分區還有一個MBR分區,說法是微軟自留,我猜測是為了兼容的一些原因。
過程
準備工作
現在我打算固態裝Win
,機械裝CentOS7
。這樣引導的時候最簡單。也可以都裝固態
1.HDD預留50G給CentOS7
安裝系統使用
2.關閉Windows
的快速啟動,不同主板不一樣,百度如何關閉
3.進入BIOS
設置關閉Security Boot
,不同主板不一樣,百度如何關閉,否則CentOS7
無法寫入引導程序
4 兩個U盤 分別刻錄CentOS7
和Win10
啟動盤
U盤刻錄CentOS7
的過程沒有過時也沒有疑問,可以根據第一篇參考文章走。
制作U盤啟動盤的時候要注意選擇支持UEFI
模式的,否則會讀不到U盤啟動盤。
我的電腦如果選擇傳統啟動U盤能略過這一步,沒必要把相對路徑改為絕對路徑。意味著這里我們可以直接install
。我也試過改為絕對路徑,當然也可以。如果你和網上大多數教程一樣直接install
不行,那就找到U盤的絕對路徑。
而UEFI下需要配置絕對路徑,不修改會找不到安裝路徑
作圖二的操作limuze /image/vmlinuz initrd=initrd.img linux dd quiet
可以看到你的U盤
可以看到,label
就是u盤名字,你的u盤名字已經在刻錄的時候被改成CentOS
了 ,所以絕對路徑是sdb4
。這里還要提一下的是UEFI
啟動下的進入編輯是E
不是Tab
。
接下來就去進入安裝選擇了。這里也沒什么疑問。
CentOS
安裝過程中要設置磁盤分區,這個需要注意下。
這里我遇到了創建分區一直提示Core.img無法寫入。
原因是在Windows下只需要分出一塊較大的未分配空間就行,記住不要去格式化,保證其“未分配”屬性(Linux的文件系統和Win是不一樣的,NTFS和FAT32都不適用)。
還有不同的是在進入分區創建的時候,記得要有一個/boot/efi
分區,這是在UEFI
下必須有的,它是在啟動的時候,去磁盤尋找啟動引導文件的。
- swap交換空間,這個也就是虛擬內存的地方,選擇主分區和空間起始位置。如果你給Ubuntu系統分區容量足夠的話,最好是能給到你物理內存的2倍大小,像我8GB內存,就可以給個16GB的空間給它,這個看個人使用情況,太小也不好,太大也沒用。(其實我只給了8GB,沒什么問題)
- 新建efi系統分區,選中邏輯分區(這里不是主分區,請勿懷疑,老式的boot掛載才是主分區)和空間起始位置,大小最好不要小于256MB,系統引導文件都會在里面,我給的512MB,它的作用和boot引導分區一樣,但是boot引導是默認grub引導的,而efi顯然是UEFI引導的。不要按照那些老教程去選boot引導分區,也就是最后你的掛載點里沒有“/boot”這一項,否則你就沒辦法UEFI啟動兩個系統了。
- 掛載“/home”,類型為EXT4日志文件系統,選中邏輯分區和空間起始位置,這個相當于你的個人文件夾,類似Windows里的User,如果你是個娛樂向的用戶,我建議最好能分配稍微大點,因為你的圖片、視頻、下載內容基本都在這里面,這些東西可不像在Win上面你想移動就能移動的。
總的來說,最好不要低于8GB,我Ubuntu分區的總大小是64GB,這里我給了12GB給home。
(這里特別提醒一下,Ubuntu最新發行版不建議強制獲取Root權限,因為我已經玩崩過一次。所以你以后很多文檔、圖片、包括免安裝軟件等資源不得不直接放在home分支下面。你作為圖形界面用戶,只對home分支有完全的讀寫執行權限,其余分支例如usr你只能在終端使用sudo命令來操作文件,不利于存放一些直接解壓使用的免安裝軟件。因此,建議home分支多分配一點空間,32GB最好……)
- 掛載“/usr”,類型為EXT4日志文件系統,選中邏輯分區和空間起始位置,這個相當于你的軟件安裝位置,Linux下一般來說安裝第三方軟件你是沒辦法更改安裝目錄的,系統都會統一地安裝到/usr目錄下面,因此你就知道了,這個分區必須要大,我給了32GB。
- 最后,掛載“/”,類型為EXT4日志文件系統,選中邏輯分區和空間起始位置,
因為除了home和usr還有很多別的目錄,但那些都不是最重要的,“/”就把除了之前你掛載的home和usr外的全部雜項囊括了,大小也不要太小,最好不低于8GB。如果你非要挨個仔細分配空間,那么你需要知道這些各個分區的含義(Linux(ubuntu)分區掛載點介紹)
不過就算你把所有目錄都自定義分配了空間也必須要給“/”掛載點分配一定的空間。
這里我嘗試了自動分區也沒有問題。
如何引導文件
這一步也是比較重要的,應該是所有步驟里最關鍵的。因為在各種情況下,這里的做法完全不同。
EasyBCD
可以引導BIOS
+MBR
,但是無法引導UEFI
。
方案1:而我這里采取的方式比較方便了 ,兩個系統安裝在不同硬盤,引導比較清爽 點擊參考
我在這次嘗試之后成功了。開機的時候默認開啟win系統,通過選擇不同硬盤啟動,更換系統。
方案2:也可以安裝在一個固態硬盤,我沒嘗試
這里要注意的是將EFI掛載在一個ESP分區下,不要再新建ESP分區了。
如果在 UEFI/GPT 系統上配置 雙啟動,請不要重新格式化 UEFI 分區,因為已有的分區上包含 Windows 啟動需要的 .efi 文件。不需要重新創建分區,只需要 #掛載分區.
其實也就是再選擇完硬盤之后,選擇不同系統啟動,即使第一種方法下選擇centos的磁盤啟動之后,也是有3個選項,類似這樣的選擇。我也不知道會不會出現win覆蓋linux的情況,如果有也可以選擇方案3解決。
方案3:這個我也沒嘗試,安裝在一個硬盤后,使用refind引導雙系統。成功之后會有一個界面選擇系統,不推薦如下
點擊參考
固態硬盤和機械硬盤
我也是愛搗鼓,把Win
也重裝了一遍,我的機械硬盤是磁盤0,固態硬盤是磁盤1,一度我以為要把機械硬盤先拔掉才能把系統安裝在磁盤1,其實無關,只要安裝系統的磁盤有EFI
分區即可,并且引導文件裝在這個分區。
系統裝0和1都可以,調皮的我甚至也嘗試過,將磁盤1刷成MBR
,機械盤刷成GPT
,也沒毛病,就是開機肯定慢了,變成BIOS
啟動了。
最后當然是刷回來的,兩個都是GPT
。
GPT
下一定要有ESP
和MSR
,我手動創建的時候忘記創建ESP
,會導致開機之后讀不到```UEFI``硬盤。
末尾
在計算機中無論做什么,我們都應當知道每一步操作背后做的事情以及原理;
在開發中每一件自己口中很神奇的事情,都是自己"照葫蘆畫瓢"的鍋。
至此我已經是一個優秀的"修機人員"了。電腦出問題請聯系我。
其他參考
小白win10下安裝centos7 uefi + refined 啟動
如何在已安裝 Windows 10 的情況下安裝 Linux(Ubuntu 15.04)雙系統?
親測UEFI啟動模式的電腦安裝Win10和Ubuntu雙系統
Unified Extensible Firmware Interface (簡體中文)
UEFI 固件
EFI_System_Partition
關于ESP分區和UEFI啟動的一些問題?
鳥哥linux私房菜 第四版
Windows和Ubuntu雙系統,修復UEFI引導的兩種辦法