備份我的 EFI 引導條目以便於恢復
鑑於 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.efi
(13
可能是分區號,但根據規範,PARTUUID 是主標識符。)該
efibootmgr
命令只需要知道磁碟:假設每個磁碟只有一個 ESP,它將自動自行查找該磁碟上的 ESP 分區及其 PARTUUID。所以,讓我們假設這個 PARTUUID 屬於您的/dev/sda13
分區(使用blkid
或lsblk -o +partuuid
檢查)。要重新創建引導條目(或現在製作一個額外的副本):
efibootmgr -c -d /dev/sda -L debian -l \\EFI\\debian\\grubx64.efi
反斜杠是雙倍的,因為反斜杠是 shell 的特殊轉義字元。
此命令將自動找到 ESP 分區
/dev/sda
及其 PARTUUID,並為您建構引導條目。
efibootmgr
將自動選擇BootNNNN
引導條目的第一個空閒編號,並自動將其添加為BootOrder
. 因此,如果Boot0000
已經存在,這將創建Boot0001
並設置BootOrder
為0001,0000
if 它以前只是0000
.這將是您目前引導條目的有效備份:
(lsblk -o +partuuid; efibootmgr -v) > boot-entry-repair-kit.txt