我在設定啟動順序時遇到問題,因為我希望它位於包含 Windows 10 - Ubuntu 15.10 - Fedora 23 的多重啟動電腦上。
這是我所做的:我過去只使用 Windows 10 和 Ubuntu 15.10 的雙重啟動,並且按預期工作:
- 我可以配置它,例如設定主題。
- 我可以輕鬆地透過 USBLive 啟動。
由於我想嘗試其他 Linux 發行版,所以我安裝了 Fedora 23。
Fedora 在啟動時就獲得了權力。我首先需要更改 Fedora 啟動配置,用 linuxefi 和 initrd 替換 linux 和 initrd 以便在 Ubuntu 上啟動,如所解釋的這裡。
然後我可以存取我的電腦上安裝的所有作業系統。但我想把啟動權還給Ubuntu。
所以我先嘗試從Ubuntu啟動啟動修復,但效率不高。
然後我嘗試使用 efibootmgr :
$ sudo efibootmgr
Mot de passe [sudo] pour xavier :
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0004,0006,0000,0007,0001,0002,0003
Boot0000* Windows Boot Manager
Boot0001* ubuntu
Boot0002 UEFI: IP4 Qualcomm Atheros PCIe Network Controller
Boot0003 UEFI: IP6 Qualcomm Atheros PCIe Network Controller
Boot0004* Fedora
Boot0006* grub
Boot0007* ubuntu
然後我嘗試在 Ubuntu 和 Fedora 上更改順序:
$ sudo efibootmgr --bootorder 0006,0004,0000,0001,0007,0002,0003
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0006,0004,0000,0001,0007,0002,0003
Boot0000* Windows Boot Manager
Boot0001* ubuntu
Boot0002 UEFI: IP4 Qualcomm Atheros PCIe Network Controller
Boot0003 UEFI: IP6 Qualcomm Atheros PCIe Network Controller
Boot0004* Fedora
Boot0006* grub
Boot0007* ubuntu
但是在重新啟動時,我使用 efibootmgr 所做的更改並不適用,如果我再次向 efibootmgr 詢問引導順序,它會給我 Fedora 的引導順序...
我認為問題可能來自我不太理解的不同參數,例如:
- efi引導、grub和grub2有什麼差別
- secureboot 有什麼影響?
- 什麼是傳統啟動?
感謝任何可以給我一些幫助以獲得乾淨設置的人。
編輯:羅德史密斯的回答讓我意識到我可以透過 -v 參數獲得更多資訊:
$ sudo efibootmgr -v
BootCurrent: 0004
Timeout: 2 seconds
BootOrder: 0004,0006,0000,0007,0001,0002,0003
Boot0000* Windows Boot Manager HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\MICROSOFT\BOOT\BOOTMGFW.EFI)WINDOWS.........x...B.C.D.O.B.J.E.C.T.=.{.9.d.e.a.8.6.2.c.-.5.c.d.d.-.4.e.7.0.-.a.c.c.1.-.f.3.2.b.3.4.4.d.4.7.9.5.}...3................
Boot0001* ubuntu HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\UBUNTU\SHIMX64.EFI)
Boot0002 UEFI: IP4 Qualcomm Atheros PCIe Network Controller PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(448a5b4783b6,0)/IPv4(0.0.0.0:0<->0.0.0.0:0,0,0)..BO
Boot0003 UEFI: IP6 Qualcomm Atheros PCIe Network Controller PciRoot(0x0)/Pci(0x1c,0x3)/Pci(0x0,0x0)/MAC(448a5b4783b6,0)/IPv6([::]:<->[::]:,0,0)..BO
Boot0004* Fedora HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\FEDORA\SHIM.EFI)
Boot0006* grub HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\GRUB\SHIMX64.EFI)
Boot0007* ubuntu HD(2,GPT,e0e2d47c-9086-47d6-b1e5-0ec248d9d6f0,0x12c800,0x96000)/File(\EFI\UBUNTU\GRUBX64.EFI)
多虧了這個郵政從 Rod Smith 那裡,我了解了這兩個 ubuntu 條目的作用。但 grub 似乎是不需要的,因為該檔案不存在:
$ ls -a
. .. Boot fedora Microsoft MSI ubuntu
我也許應該刪除它?
然後我嘗試了不同的順序:
$ sudo efibootmgr --bootorder 0001,0004,0000,0006,0007,0002,0003
但遺憾的是,這些改變並沒有發揮作用。
那麼,如果我很好地理解羅德史密斯的答案,唯一的解決方案是擦除 Fedora 條目?如果有一天我只想保留 Fedora,這可能會導致一些問題,但在那之前,它允許我在 USBLive 上啟動?
再次感謝!
答案1
我將首先回答您帖子末尾的問題:
- EFI 模式引導使用韌體的本機開機模式,而 BIOS/CSM/傳統模式則引導使用相容性支援模組,該模組允許引導較舊的 BIOS 模式引導程式。看這個問題以及我在 superuser.com 上的回答有關此主題的更多資訊。
- GRUB 是其中之一幾個適用於 Linux 的 EFI 模式引導程式。(還有用於 BIOS 和其他韌體類型的 GRUB 版本。) GRUB Legacy(又名 GRUB 1)從未得到 EFI 的正式支持,儘管 Fedora 確實有一個經過大量修補的版本,該版本現已被廢棄。因此,在 EFI 上下文中大多數對 GRUB 的引用都是指 GRUB 2。
- 安全啟動是一項可選的 EFI 功能,旨在透過阻止 EFI 啟動未經可信任機構加密簽章的二進位檔案來提高系統安全性。原則上,這個權威可以是你;或者可能是其他人。實際上,Microsoft 擁有唯一常用的安全啟動金鑰,因此可以控制該過程。幸運的是,微軟將簽署第三方二進位文件,Ubuntu 已經使用它讓微軟簽署了一個名為墊片反過來,它又包括 Canonical 的金鑰,該金鑰用於在 Ubuntu 中簽署 GRUB 和 Linux 核心。請注意,當雙重開機兩個 Linux 發行版時,兩個發行版的 Shim 都不會包含另一個發行版的金鑰。因此,您必須使用機器所有者金鑰 (MOK) 清單註冊其他發行版的金鑰,您可以使用
MokManager.efi
EFI 下的公用程式來完成此操作。我認為該sb-updatevar
實用程式也可以在 Linux 中執行此操作,但我對此的經驗較少。看這裡將多把鑰匙集中在一個方便的地方;你需要.cer
或.der
鑰匙。看我的安全啟動頁面有關此主題的更多資訊。
至於你的主要問題,efibootmgr -o
(或efibootmgr --bootorder
) 命令應該控制您指定的任何啟動程序。但請注意,您可能打算將控制權交給Boot0001
或Boot0007
,而不是Boot0006
- Ubuntu 使用名稱ubuntu
,而不是grub
來描述它自己的引導條目。您可以透過鍵入 來更好地識別其中的每一個,這會產生引導條目的完整路徑(使用EFI 路徑標識符進行識別,該標識符又長又複雜,並且除其他外,還引用分區的GUID 號,您可以透過或其他方式sudo efibootmgr -v
取得該號))。因此,在執行其他操作之前,您可能需要嘗試將引導順序更改為正確的值,而不是.gdisk
blkid
Boot0004
在實踐中,efibootmgr
由於 EFI 有問題或機器 NVRAM(efibootmgr
顯示和調整資料的儲存位置)中的資料損壞,變更有時會失敗。通常採用三種解決此類問題的方法:
- 擦除不需要的條目-- 有時刪除不需要的或重複的條目(如
sudo efibootmgr -b 0004 -B
刪除Boot0004
)可以解決問題。 (不過,您可能實際上想刪除此條目,也可能不想刪除。)有時您可能需要刪除多個引導條目才能使系統再次工作。不要不過,請刪除啟動所需的項目。此外,大多數電腦都有韌體本身建立的條目,例如Network Controller
輸出中的兩個條目。通常不建議刪除這些條目。 - 將韌體重設為預設值-- 大多數 EFI 提供了一個選項,可將韌體設定公用程式中的所有設定重設為其預設值。 (有些人稱之為「BIOS 設定畫面」或類似的東西 - 儘管 EFI 在技術上不是 BIOS,儘管事實上許多人,甚至製造商經常這麼稱呼它們。)這種方法的缺點是它可能會被消滅全部EFI 條目,導致系統無法啟動,直到您使用緊急磁碟復原至少一個工作條目。
- 將開機載入程式搭載在另一個條目上-- 此方法涉及複製或移動/重命名所需的引導程序,以使用 EFI 堅持啟動的任何檔案名稱。它通常在 EFI 拒絕啟動 Windows 開機載入程式之外的任何內容時使用,因此在您的情況下沒有必要。
不過,退一步說,您使用哪種 GRUB(Fedora 或 Ubuntu)並不重要;您可以使用 GRUB。它們基本上是相同的軟體。如果您在設定 Fedora 的 GRUB 來執行您想要的操作時遇到問題,您可以隨時調整其設定——但是,一旦您超越了一些非常基本的事情,GRUB 2 配置就會變得非常困難。出於這個原因,許多雙重引導多個 Linux 發行版的人更喜歡擁有一個獨立於發行版的引導程式——要么是他們自己的 GRUB,要么是其他東西。我自己的rEFInd 啟動管理器這種配置有幾個優點,例如不依賴配置檔案來檢測核心更新以及它獨立於任何給定作業系統的配置腳本。也就是說,如果您在efibootmgr
從一種 GRUB 切換到另一種 GRUB 時遇到問題,那麼在啟動 rEFInd(或任何其他開機載入程式)時也可能會遇到問題。此外,如果您使用安全啟動,則可能需要使用 MOK 註冊至少一個安全啟動金鑰才能使 rEFInd 正常運作。就此而言,如果您想要切換到 Ubuntu 的 GRUB 的原因是 Fedora 的 GRUB 無法啟動 Ubuntu 的內核,那麼問題很可能是安全啟動;新增 Canonical/Ubuntu 的安全啟動金鑰應該可以解決這個問題。
編輯:
Boot0001
是最有可能執行您想要的操作的條目,因此它應該位於啟動清單的開頭;但聽起來這不適合你。
如果您可以接受讓 Fedora 負責啟動過程,那麼最好這樣做,以免最終造成一系列新問題。當然,徹底刪除 Fedora 條目是有風險的,因為如果您無法讓其他任何東西工作,您可能會無法啟動任何東西。
你可以嘗試禁用安全啟動,假設它目前已啟用,因為該功能可能會導致問題,特別是在複雜的設定上。
答案2
感謝羅德史密斯的幫助,我終於找到了選擇我想要的啟動順序的解決方案。
正如他提到的禁用安全啟動,我已經訪問了 BIOS 設置,並且正如預期的那樣,安全啟動已經被禁用,但我藉此機會在 BIOS/uefi 設定中更改了引導順序,而無需 efibootmgr 。
然後我選擇先在USB設備上啟動,然後我設定了在硬碟上啟動的順序,首先是ubuntu,並且它工作了!
因此,我清楚地認為,當 efibootmgr 無論出於何種原因無法更改順序時,直接進入 BIOS/uefi 設定可能是最好的選擇,而不是真正困難的選擇。
我希望這可以幫助其他人。
再次感謝你的幫忙。
澤維爾