UEFI 和 GRUB2
任何人都知道獲取二進位檔案(bootia32.efi 和 bootx64.efi)來啟動 grub2 的網站...
還有 GRUB2 二進位檔案...以及一個很好的教程幫助...
我想製作像這樣的多重啟動磁碟...
EFI
\BOOT
\bootia32.efi
\bootx64.efi
\<grub-binaries>
\<grub-background-image>
\<grub-configuration-file>
\AndroidX86v6
\Microsoft
\Ubuntu
\Tails
\Kali
...
答案1
這些名稱bootx64.efi
指bootia32.efi
的是 EFI 後備開機載入程式。這個程式可以是任何事物-- GRUB、Windows 引導程式、EFI shell、惡意軟體等。相反,您應該按程序的實際名稱(問題中的 GRUB)搜尋程序,並將其重新命名為EFI\BOOT\bootx64.efi
或EFI\BOOT\bootia32.efi
(取決於平台)在啟動媒體上。事實上,如果您要安裝到電腦的內部硬碟,您可能根本不應該使用該名稱 - 相反,您應該依靠 EFI 自己的內建啟動管理員來記住您想要的二進位檔案的名稱推出。 (例外情況是您的韌體嚴重損壞,有些韌體仍然如此。)這些boot{arch}.efi
檔案名稱最初專門用於可啟動可移動磁碟,例如作業系統安裝程式和緊急復原工具;但它們也可用作內部硬碟上最後的啟動載入程式——例如,當 NVRAM 條目損壞時。
至於你的問題的主要部分,GRUB 二進位往往是由單獨的發行版建構的; AFAIK,EFI 的「GRUB」二進位檔案沒有官方來源。通常的獲取方式AGRUB 二進位檔案用於安裝使用它的 Linux 發行版。它通常會安裝為/boot/efi/EFI/{distname}/grubx64.efi
,其中{distname}
是發行版使用的程式碼,例如ubuntu
Ubuntu 或fedora
Fedora。但請注意,簡單地移動和重命名此二進位檔案可能不起作用,因為它可能具有指向其設定檔的硬編碼路徑。如果目標電腦也使用安全啟動,您需要將shimx64.efi
或shim.efi
檔案重新命名為後備檔案名grubx64.efi
,並使用該名稱將 複製到與 Shim 相同的目錄中。如果您要安裝到一台電腦上,則無需費心移動或重新命名 GRUB;只要正常安裝,它就會接管啟動程序——至少,直到您安裝下一個發行版或重新配置啟動順序。
對於具有多個 Linux 發行版的系統,GRUB 可能有點麻煩。這是因為 GRUB 依賴複雜的設定檔來建立其開機選項選單,而該設定檔是在安裝 GRUB 的發行版中維護的。當您只安裝一個 Linux 發行版時,這可以正常工作,但對於多個發行版,您必須在其來源的發行版中更新 GRUB,以便顯示從您的系統安裝的新核心。其他分佈。另一種方法是從另一個 GRUB 連結載入一個 GRUB,這可能會更好,但在啟動時更麻煩。
另一種方法是使用涉及較不複雜配置的啟動管理器。我自己的酶標儀可以做到這一點;它會在每次啟動時檢測 Linux 內核,因此一旦設定完畢,它就可以啟動最新的內核,而無需更改其自身的配置。其他引導程式(例如 SYSLINUX 和 ELILO)需要在集中設定檔中進行 GRUB 樣式的配置,但該檔案更簡單,因此更容易手動維護。如果您在可移動磁碟上使用這些工具中的任何一個,則需要將其複製到boot{arch}.efi
檔案名稱中。
所有這些還有許多其他警告和怪癖,但是如果不了解更多有關您的預期用途和硬體的信息,我無法在不寫一本小書的情況下在這裡詳細介紹它們。您可能需要查看以下一個或多個網站以獲取更多資訊:
- Adam Williamson 關於 EFI 運作方式的部落格文章-- 本頁介紹 EFI 模式啟動背後的理論。
- Superuser.com 上有關 BIOS 和 EFI 啟動之間差異的問答-- 這提供了前面的基礎知識,但更簡潔。
- 我的關於在 EFI 系統上安裝 Linux 的頁面-- 本頁是比 Adam Williamson 的部落格更實用的 EFI 模式啟動介紹。
- 我的 Linux EFI 開機載入程式頁面-- 本頁介紹 Linux 系統的 EFI 開機載入程式選擇。
答案2
如果您只是嘗試使用 grub 進行 UEFI PXE 引導或 UEFI HTTP 引導,則無需任何安裝即可在此處取得預先建置的二進位檔案: https://images.maas.io/ephemeral-v3/stable/bootloaders/uefi/amd64/20230222.0/
shim-signed.tar.xz
grub2-signed.tar.xz
解壓縮它們,你會得到
bootx64.efi
grubx64.efi
然後準備一個 TFTP 伺服器和 HTTP 伺服器來為它們提供服務,並透過 TFTP/HTTP 準備 grub/grub.cfg。
我已經使用上面的方法成功了。
還有另一個方便的地方讓您無需任何安裝即可獲得它們。 http://archive.ubuntu.com/ubuntu/dists/jammy/main/uefi/grub2-amd64/current/
(您可以將jammy更改為focal或bionic)
...
grubnetx64.efi
grubnetx64.efi.signed
grubx64.efi
grubx64.efi.signed
我沒試過,我猜grubnetx64.efi.signed
是指網路版的grubx64.efi.signed
。但我不清楚 *.efi.signed 和 *.efi 的區別。
bootx64.efi 可以在這裡找到 http://archive.ubuntu.com/ubuntu/dists/jammy/main/signed/shim-amd64/current/,只需將解壓縮後的檔案重新命名為bootx64.efi即可。