Boot

備份我的 EFI 引導條目以便於恢復

  • September 7, 2021

鑑於 Windows 10 很可能會擦除我的 Linux EFI 引導條目,請參閱此處答案後的評論:

如果您設法讓 Windows 啟動一次,Windows 10 通常會“自我修復”其韌體啟動項。在此過程中,如果韌體中(即efibootmgr列表中)沒有現有的 Windows 啟動項,它通常會Boot0000為自己篡奪,而不管它是否已經在使用。

我想在之前備份我的 EFI 啟動條目,以便即使 Windows 10 擦除它,我也可以輕鬆恢復它。

似乎沒有現有的工具可以做到這一點,儘管https://github.com/rhboot/efibootmgr/issues/10提到了該efivar實用程序,但有些手動過程。但是,我找不到有關該方向的任何進一步資訊。

因此問題。或者,如果我有這樣的 EFI 引導條目:

Boot0000* debian        HD(13,GPT,007a058a-8e5e-45df-8d97-6575b66b5355,0x1afa9000,0x113000)/File(\EFI\debian\grubx64.efi)

下次如何重新創建它?

一旦您知道如何從頭開始重新創建引導條目就很容易了……efibootmgr當然,手頭有工具。

Boot0000* debian HD(13,GPT,007a058a-8e5e-45df-8d97-6575b66b5355,0x1afa9000,0x113000)/File(\EFI\debian\grubx64.efi)

007a058a-8e5e-45df-8d97-6575b66b5355是位於的 ESP 分區的 PARTUUID 。\EFI\debian\grubx64.efi13 可能是分區號,但根據規範,PARTUUID 是主標識符。)

efibootmgr命令只需要知道磁碟:假設每個磁碟只有一個 ESP,它將自動自行查找該磁碟上的 ESP 分區及其 PARTUUID。所以,讓我們假設這個 PARTUUID 屬於您的/dev/sda13分區(使用blkidlsblk -o +partuuid檢查)。

要重新創建引導條目(或現在製作一個額外的副本):

efibootmgr -c -d /dev/sda -L debian -l \\EFI\\debian\\grubx64.efi

反斜杠是雙倍的,因為反斜杠是 shell 的特殊轉義字元。

此命令將自動找到 ESP 分區/dev/sda及其 PARTUUID,並為您建構引導條目。

efibootmgr將自動選擇BootNNNN引導條目的第一個空閒編號,並自動將其添加為BootOrder. 因此,如果Boot0000已經存在,這將創建Boot0001並設置BootOrder0001,0000if 它以前只是0000.

這將是您目前引導條目的有效備份:

(lsblk -o +partuuid; efibootmgr -v) > boot-entry-repair-kit.txt

引用自:https://unix.stackexchange.com/questions/667812