2023年5月5日 星期五

使用efibootmgr管理UEFI启动项

 使用 efibootmgr 管理 UEFI 启动项

我喜歡在電腦上同時安裝多個作業系統,來嘗試和比較各個作業系統不同之處,例如我現在就裝了4個作業系統在我的電腦上,計有 WIN 11, Arch Linux, KDE Neon 和EndeavourOS。除了 WIN 11外,我是會不時更換那些 Linux OS。

當我經常那些 Linux 作業系統時問題就出現了:當一個 Linux 業系統被刪除後,它的引導程式(GRUB)仍會留在 UEFI 上。UEFI 只得 100 M 很快就會用完,導致可能開不了機。

幸好在 Linux 上有一個應用,efibootmgr,可以用來處理這方面的問題。

開啟 Terminal  (Ctl-Alt-T) ,輸入 efibootmgr, 便會得出下圖,這是我部電腦上的 UEFI 內容,每个系统都在EFI分區建立了自己的啟動文件。所有都是我已裝或是曾經安裝過的 OS 啟動文件,計有 MX Linux, KDE Neon, Arch Linux, Ubuntu, EndeavourOS, Garuda Linux。最離譜的是 EndeavourOS, 它每升級一次便制做另一個新的的啟動文件,所以便有 EndeavourOS-7279,  EndeavourOS-6250,  EndeavourOS-2473 等,要刪除時須要特別小心。


從上圖我們還可看到開機時的 Boot Order、次序首先是Arch Linux (0005),其次才到 Windows Boot Manager (0000) ,如此類推。如果想次序改變,我們輸入類似如下的命令

sudo efibootmgr -o 0000, 0005, 0003, 0004, ....

便會將 Boot Order改為 Windows Boot Manager (0000) 第一,其次才到 Arch Linux (0005)。

​如何刪除 UEFI 多餘的啟動項?我們可以輸入類似如下的命令

sudo efibootmgr -b 000A -B        #刪除 Garuda

sudo efibootmgr -b 0008 -B        #刪除 endeavouros-6250

我刪除完不要的啟動項後,再輸入命令 efibootmgr 便得下圖︓

註︓

如想參閱 efibootmgr 的詳細用法,我們只​要輸入以下命令:

 efibootmgr -h