EFI 和 GRUB2 從哪裡取得二進位檔案以及如何掛載開機系統

EFI 和 GRUB2 從哪裡取得二進位檔案以及如何掛載開機系統

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.efibootia32.efi的是 EFI 後備開機載入程式。這個程式可以是任何事物-- GRUB、Windows 引導程式、EFI shell、惡意軟體等。相反,您應該按程序的實際名稱(問題中的 GRUB)搜尋程序,並將其重新命名為EFI\BOOT\bootx64.efiEFI\BOOT\bootia32.efi(取決於平台)在啟動媒體上。事實上,如果您要安裝到電腦的內部硬碟,您可能根本不應該使用該名稱 - 相反,您應該依靠 EFI 自己的內建啟動管理員來記住您想要的二進位檔案的名稱推出。 (例外情況是您的韌體嚴重損壞,有些韌體仍然如此。)這些boot{arch}.efi檔案名稱最初專門用於可啟動可移動磁碟,例如作業系統安裝程式和緊急復原工具;但它們也可用作內部硬碟上最後的啟動載入程式——例如,當 NVRAM 條目損壞時。

至於你的問題的主要部分,GRUB 二進位往往是由單獨的發行版建構的; AFAIK,EFI 的「GRUB」二進位檔案沒有官方來源。通常的獲取方式AGRUB 二進位檔案用於安裝使用它的 Linux 發行版。它通常會安裝為/boot/efi/EFI/{distname}/grubx64.efi,其中{distname}是發行版使用的程式碼,例如ubuntuUbuntu 或fedoraFedora。但請注意,簡單地移動和重命名此二進位檔案可能不起作用,因為它可能具有指向其設定檔的硬編碼路徑。如果目標電腦也使用安全啟動,您需要將shimx64.efishim.efi檔案重新命名為後備檔案名grubx64.efi,並使用該名稱將 複製到與 Shim 相同的目錄中。如果您要安裝到一台電腦上,則無需費心移動或重新命名 GRUB;只要正常安裝,它就會接管啟動程序——至少,直到您安裝下一個發行版或重新配置啟動順序。

對於具有多個 Linux 發行版的系統,GRUB 可能有點麻煩。這是因為 GRUB 依賴複雜的設定檔來建立其開機選項選單,而該設定檔是在安裝 GRUB 的發行版中維護的。當您只安裝一個 Linux 發行版時,這可以正常工作,但對於多個發行版,您必須在其來源的發行版中更新 GRUB,以便顯示從您的系統安裝的新核心。其他分佈。另一種方法是從另一個 GRUB 連結載入一個 GRUB,這可能會更好,但在啟動時更麻煩。

另一種方法是使用涉及較不複雜配置的啟動管理器。我自己的酶標儀可以做到這一點;它會在每次啟動時檢測 Linux 內核,因此一旦設定完畢,它就可以啟動最新的內核,而無需更改其自身的配置。其他引導程式(例如 SYSLINUX 和 ELILO)需要在集中設定檔中進行 GRUB 樣式的配置,但該檔案更簡單,因此更容易手動維護。如果您在可移動磁碟上使用這些工具中的任何一個,則需要將其複製到boot{arch}.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即可。

相關內容