Linux與Windows 10用grub引導教程

2021-09-07 19:33:58 字數 3687 閱讀 3999

在教程正式開始之前,先花一點時間說明 efi 分割槽的組成和作用。

首先,在你裝了 windows 之後,windows 在裝機過程中會將硬碟劃分出乙個約 100m 大小的分割槽,稱為 efi 分割槽這個分割槽就是起引導作用的。在資源管理器中是看不到的這個分割槽的,可以在磁碟管理中看到,管理則需要借助 dg 工具。便於說明,在裝好了 linux 之後,我將 efi 掛載至 boot 分割槽截圖:

可以看到,該分割槽包含 3 個資料夾(如果你沒有裝 linux 的話,就只有兩個),分別是 boot、microsoft 和 manjaro,其中 boot 資料夾就是 uefi 引導所必需的檔案。

我們繼續開啟microsoft/boot資料夾:

這些檔案就是啟動 windows 10 所必需的,包含了語言包、字型等,bcd 包含了 windows 引導開始以後的資訊。其中,bootmgfw.efi 是 windows 預設引導檔案

efi/boot/bootx64.efi

efi/microsoft/boot/bootmgfw.efi

以上是採用 uefi 啟動 windows 10 的檔案結構,也就是說,當你按下開機按鈕的時候,首先 uefi 找到 efi 分割槽的 boot 資料夾,然後載入bootx64.efi檔案,讀取檔案資訊,找到efi/microsoft/boot/bootmgfw.efi,按照bootmgfw.efi的要求,載入所需的啟動資訊,啟動 windows 10。

在正式裝系統之前,我們還需要做一些準備工作:

這個功能的作用是在於關機的時候不完全斷電,類似將系統處於「休眠」狀態,這樣可以讓開機更加迅速。但這也就導致了只能使用 windows 系統。

在預設情況下,uefi 韌體只會載入那些被簽名的引導程式。在缺少 secure boot 功能的傳統 pc 機上,惡意的後門程式可以載入自身,進而搖身一變偽裝成乙個引導程式。這樣的話,bios 就會在啟動的時候載入後門程式,這樣它就可以躲過作業系統,把自己隱藏得很深。

但是不得不說,這對我們安裝 linux 造成了很大的困擾,也是直接導致我們重啟到 windows 10 後進不去 linux 的原因。

首先我們要關閉這個功能:進入 bios 找到 secure boot,選擇 disabled,這樣就關閉了。當然,有些人進入 bios 會發現 secure boot 這個選項是灰色的(比如我的就是),這時你需要先給你的 bios 設乙個密碼,然後就能關 secure boot 了。

所有的準備都已經完成,這時就可以準備燒錄 u 盤了,不推薦 ultraiso,經親測,軟碟通僅燒錄 ubuntu 能成功,其它絕大多數發行版都會失敗。推薦「rufus」和「usbwriter」,這兩個軟體都可以。

燒錄完成後,重啟按f12,選擇從 usb 裝置啟動,對於絕大多數發行版來說一路回車就行了,只需要注意一點:在選擇掛載 boot 位置的時候,一定要掛載在 efi 分割槽,別的都不行。

重啟之後,不出意外的話,你會直接進入 windows 10,不要擔心,這時 linux 已經安裝成功了,我們只需要將引導檔案替換一下。

先用 dg 開啟 efi 分割槽,你會看到多了乙個資料夾,名稱取決於你安裝的是哪乙個發行版。我安裝的是 manjaro linux,名稱就是 manjaro,開啟之後會發現裡面有乙個名為 grubx64.efi 的檔案,這就是啟動 linux 的引導檔案。和 windows 10 的 bootmgfw.efi 類似,我們想要用 grubx64.efi 引導代替掉 bootmgfw.efi,這樣就可以用 grub 引導了。步驟:

進入管理員命令列。方法:win + x,再按 a

輸入bcdedit /set path \efi\manjaro\grubx64.efi。提示操作成功的話,就完成了。

注:經人提醒,如果輸入以上命令提示「引數錯誤」的話,將 改為 『』,原因是 powershell 和 cmd 語法的差別。

至此,如果你安裝的是除 arch 之外絕大多數發行版,那麼接下來就和你沒有啥關係了,你已經成功了,好好享受吧!

開機之後會發現進入 grub 的引導了,通常會包含至少三個選項(以 manjaro 舉例):manjaro、manjaro 高階選項和 windows manager。這就代表你已經完美的解決了 windows 和 linux 雙系統引導的問題。

這一點是我安裝 arch llinux 的時候發現的,arch linux 安裝過程是手動安裝的,在編寫 grub 的時候會掃瞄不到 windows manager 所在的分割槽(當然可能不是所有人都會遇到),所以在 grub 介面可能會看不到 windows manager 選項,導致進不去 windows 10,這裡就需要手動編輯 grub 資訊,我們開啟/boot/grub/grub.cfg檔案,發現裡面確實沒有 windows 10 的啟動資訊,在後面加上:

1

menuentry "microsoft

windows

10"

注意

這裡的$hints_string,代表的是終端執行命令:

1

sudo

grub-probe --target=hints_string /boot/efi/efi/microsoft/boot/bootmgfw.efi

後的輸出;

$fs_uuid代表的是:

1

sudo

grub-probe --target=fs_uuid /boot/efi/efi/microsoft/boot/bootmgfw.efi

的輸出。

然後儲存。在終端執行命令:sudo grub-mkconfig -o /boot/grub/grub.cfg,就 ok 了。

到此,arch linux 和 windows 10 雙系統也配置完畢了。

在使用這一年多的時間,遇到了以下的幾個問題:

在 windows 10 進行了乙個大更新後,會發現 grub 引導介面沒有了,還是直接進入了 windows 10,這時只需要按照替換引導檔案的方法重新輸入一遍命令就行。

使用 linux 某個發行版一段時間之後,難免會想嘗試一下另乙個發行版。這時請務必將之前的髮型版的引導檔案刪除,否則可能會出現無論怎麼設定都無法進入 grub 的情況。例如:我之前用的是 ubuntu,我現在換成了 manjaro,我就需要用 dg 刪除 efi 分割槽的 ubuntu 資料夾。

在我使用 manjaro 更新了一次 linux 的核心後,進不去 windows 10 了,這個時候千萬不要直接修復 windows 10 引導,這會格式化 efi 分割槽,只需要按上面 修復 windows 引導 的方法編輯一下 grub 就可以了。

最後:祝使用愉快。

本文採用:署名-非商業性使用-禁止演繹 4.0 國際協議進行許可,閱讀 相關說明

Linux 與 windows10 配置NFS服務

服務端 ip 192.168.1.10 linux 客戶端 ip 192.168.1.99 win 10 用 yum 安裝 nfs 以及rpcbind root bogon yum y install nfs utils rpcbind 編輯配置檔案客戶端訪問,內容如下圖 建立目錄 home xyl...

Windows10安裝Linux系統(WSL)

wsl是 windows subsystem for linux 的縮寫,顧名思義,wsl就是windows系統的linux子系統,其作為windows元件搭載在windows10周年更新 1607 後的windows系統中 1.linux單系統 2.win linux 雙系統 3.win 虛擬機器...

Windows 10意義何在?

1 windows 10正式版 從微軟公布的一些先階段測試版的測試人員數量看,可以發現,大多數消費者對新版的微軟作業系統充滿了更多的期待。開始選單與metro完美結合,更方便人性化的操作體驗和視覺感受 cortana語音的期待,雖然現階段的語音不夠完善,但以微軟的戰略布局不易看出對這一塊的重心之大 ...