我正在嘗試在獨立模式下使用 Grub2 作為 EFI 系統上的啟動管理器。 (唯一的永久硬碟上有 OS X;Linux 和 Windows 磁碟機有時可能存在,也可能不存在,因此是獨立模式。)
我使用的是SuperGrub2Disk,它是一個EFI 可執行文件,據我所知,Grub2 在這種模式下的可執行文件有一個嵌入的磁碟映像,它為其根分區安裝,其中包含其自己的配置文件的副本。
我想使用外部 grub.cfg 覆寫或修改此設定檔。我嘗試將其放置在 grub EFI 可執行檔旁邊或 ESP 分割區的根目錄中,但它未被識別。我還嘗試透過以下命令從 grub 命令列加載它:
configfile (hd3,gpt1)/grub.cfg
除了清除螢幕之外,這似乎沒有任何效果 - 即使設定檔已由 ls 確認存在。
誰能告訴我是否有辦法將外部設定檔與 EFI 獨立 blob 一起使用?
答案1
GRUB 2 二進位檔案包含對其設定檔的硬編碼參考。我並沒有真正追蹤所有的細節,但據我了解,AMD64/x86-64 系統上有兩個適用於 Ubuntu 的 EFI GRUB 2 二進位檔案:
grub2-efi-amd64
-- 這是 GRUB 2 的版本,用於支援以下功能的計算機:不是使用安全啟動。據我了解,二進位檔案本身連結在你的電腦由套件中包含的預編譯組件組成。產生的二進位檔案引用grub.cfg
Linux 安裝/boot/grub
目錄中的檔案。因此,您無法grubx64.efi
在一台電腦上使用從此套件安裝的二進位檔案到另一台電腦上,因為該二進位檔案是針對建立它的電腦進行自訂的。grub2-efi-amd64-signed
-- 此版本的 GRUB 2 在 Canonical 系統上編譯和鏈接,以便可以使用安全啟動金鑰對其進行簽署。要求grubx64.efi
對二進位檔案進行簽名的一個副作用是它無法針對您的系統進行自定義,因此,此版本的grub.cfg
.在 Ubuntu 系統上,此grub.cfg
文件搜索/boot/grub/grub.cfg
,但原則上可以對其進行自訂以執行其他操作。
因此,在您的情況下,您不能使用未簽署的 GRUB 2 二進位檔案;如果您想使用現有的 Ubuntu GRUB 2 二進位文件,則必須使用已簽署的二進位檔案。或者,您可以建立自己的二進位文件,如下所述這裡,除其他地方外。
不過,就您而言,我認為 GRUB 2 並不是真正最佳的。兩個都改裝(現已廢棄)和我的叉子,rEFInd,具有動態掃描可用引導程式的功能。因此,如果您將 rEFIt 或 rEFInd 安裝到您的內部磁碟的 EFI 系統分割區 (ESP)並將作業系統的開機載入程式放在各自的可移動媒體上,當且僅當插入適當的磁碟時,rEFIt/rEFInd 將為您提供引導這些作業系統的選項。的正確管理載入器,將每個載入器放置在其各自磁碟的 ESP 上;如果您的開機載入程式全部儲存在內部磁碟的 ESP 上,則 rEFIt/rEFInd 將始終顯示非功能性作業系統選項,就像 GRUB 2 一樣。無論哪種情況,使用 rEFIt 或 rEFInd 都可以避免深入研究手動 GRUB 2 配置的麻煩。
答案2
我希望放置在同一目錄中的 grub.cfg 由 GRUB UEFI 映像讀取並執行,它們通常都儲存在 ESP 上,但我對 Mac 設定不太了解。 (另一方面,嵌入式配置的功能非常有限。)
可能在沒有嵌入式配置的情況下自行建立 GRUB 映像會讓您更進一步找到解決方案,這些貼文可能會有所幫助:
- 2.1.建立二進位文件和2.2.建立設定檔在如何建立僅 UEFI 可啟動 USB 即時媒體?
- 新增 Mac 的(啟動)分區
答案3
可以建立獨立的 GRUB 2 UEFI 應用程序,其中包含獨立的 GRUB 2 安裝,該安裝讀取與應用程式二進位檔案位於同一目錄中的設定檔。
這個過程是Arch Linux wiki 中描述,但可以在任何分佈上完成(只要相應地調整路徑)。