Linux-Mint

‘bootctl status’ 顯示選項不可用

  • February 7, 2021

擁有 (2) 個 Linux Mint 20.1 系統 - 一個正常硬體,一個 VMware VM。我已經在兩者上都安裝/配置systemd-boot了,但我看到每個都有不同的可用設置。到目前為止,我能指出的唯一區別是我從正常硬體系統中刪除了 GRUB:

正常硬體

System:
    Firmware: n/a (n/a)
 Secure Boot: disabled
  Setup Mode: user

Current Boot Loader:
     Product: n/a
    Features: ✗ Boot counting
              ✗ Menu timeout control
              ✗ One-shot menu timeout control
              ✗ Default entry control
              ✗ One-shot entry control
              ✗ Support for XBOOTLDR partition
              ✗ Support for passing random seed to OS
              ✗ Boot loader sets ESP partition information
         ESP: n/a
        File: └─n/a

Random Seed:
Passed to OS: no
System Token: not set
      Exists: yes

Available Boot Loaders on ESP:
         ESP: /boot/efi (/dev/disk/by-partuuid/82492fa6-1969-4569-851b-269909138b7b)
        File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 245.4-4ubuntu3.4)
        File: └─/EFI/BOOT/bootx64.efi (systemd-boot 245.4-4ubuntu3.4)

Boot Loaders Listed in EFI Variables:
       Title: Linux Boot Manager
          ID: 0x0000
      Status: active, boot-order
   Partition: /dev/disk/by-partuuid/82492fa6-1969-4569-851b-269909138b7b
        File: └─/EFI/systemd/systemd-bootx64.efi

Boot Loader Entries:
       $BOOT: /boot/efi (/dev/disk/by-partuuid/82492fa6-1969-4569-851b-269909138b7b)

Default Boot Loader Entry:
       title: Linux Mint XFCE 5.4.0-65-generic
          id: linuxmint.conf
      source: /boot/efi/loader/entries/linuxmint.conf
       linux: /linuxmint/vmlinuz
      initrd: /linuxmint/initrd.img
     options: root=UUID=408c53a0-e8d0-417f-8281-eb0eea0a2318 rw rootflags=subvol=@ iommu=pt

虛擬機

System:
    Firmware: UEFI 2.31 (VMware, Inc. 1.00)
 Secure Boot: disabled
  Setup Mode: user

Current Boot Loader:
     Product: systemd-boot 245.4-4ubuntu3.4
    Features: ✓ Boot counting
              ✓ Menu timeout control
              ✓ One-shot menu timeout control
              ✓ Default entry control
              ✓ One-shot entry control
              ✓ Support for XBOOTLDR partition
              ✓ Support for passing random seed to OS
              ✓ Boot loader sets ESP partition information
         ESP: /dev/disk/by-partuuid/0a3b1b4f-28e9-44ae-a15e-629a3242f8a6
        File: └─/EFI/systemd/systemd-bootx64.efi

Random Seed:
Passed to OS: no
System Token: not set
      Exists: yes

Available Boot Loaders on ESP:
         ESP: /boot/efi (/dev/disk/by-partuuid/0a3b1b4f-28e9-44ae-a15e-629a3242f8a6)
        File: └─/EFI/systemd/systemd-bootx64.efi (systemd-boot 245.4-4ubuntu3.4)
        File: └─/EFI/BOOT/BOOTX64.EFI (systemd-boot 245.4-4ubuntu3.4)

Boot Loaders Listed in EFI Variables:
       Title: Linux Boot Manager
          ID: 0x0005
      Status: active, boot-order
   Partition: /dev/disk/by-partuuid/0a3b1b4f-28e9-44ae-a15e-629a3242f8a6
        File: └─/EFI/systemd/systemd-bootx64.efi

       Title: ubuntu
          ID: 0x0004
      Status: active, boot-order
   Partition: /dev/disk/by-partuuid/0a3b1b4f-28e9-44ae-a15e-629a3242f8a6
        File: └─/EFI/ubuntu/shimx64.efi

Boot Loader Entries:
       $BOOT: /boot/efi (/dev/disk/by-partuuid/0a3b1b4f-28e9-44ae-a15e-629a3242f8a6)

Default Boot Loader Entry:
       title: Linux Mint XFCE 5.4.0-65-generic
          id: linuxmint.conf
      source: /boot/efi/loader/entries/linuxmint.conf
       linux: /linuxmint/vmlinuz
      initrd: /linuxmint/initrd.img
     options: root=UUID=c15f5a73-6120-4cfd-81ef-c5891e4dbdf6 rw rootflags=subvol=@

我有一種感覺,我刪除了一些我不應該刪除的東西,但我不希望 GRUB 回來(它已經做過一次,在它的軟體包升級之後)。

更新 #1:我從 VM 中刪除了 GRUB 包,驗證了它的 /boot/efi 與我的主系統具有相同的(二進制)文件。仍然收到上述錯誤。

更新:2:結果sudo efibootmgr -v

No BootOrder is set; firmware will attempt recovery

更新3:結果efivar -l

7b59104a-c00d-4158-87ff-f04d6396a915-SecureBootSetup
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_EntRevokeSiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_ATPSiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_WinSiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_SkuSiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_RvkSiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-Kernel_SiStatus
77fa9abd-0359-4d32-bd60-28f4e78f784b-CurrentPolicy
8be4df61-93ca-11d2-aa0d-00e098032b8c-ConIn
8be4df61-93ca-11d2-aa0d-00e098032b8c-ConOut
97e8965f-c761-4f48-b6e4-9ffa9cb2a2d6-DeploymentModeNv
4599d26f-1a11-49b8-b91f-858745cff824-StdDefaults

看起來bootctl“正常硬體”系統上的命令無法確認系統是否已使用systemd-boot. 這可能是因為該系統的 UEFI 韌體中的一些錯誤或怪癖,或者因為系統實際上systemd-boot尚未啟動。

efibootmgr -v在“正常硬體”系統上執行並將輸出添加到您的原始文章中。這將顯示 UEFI 啟動變數的實際內容:查看原始數據而不是對其進行bootctl分析可能會提供更多關於正在發生的事情的線索。


您似乎根本沒有任何名稱為8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot*. 就像你所有的 UEFI 啟動變數都被清除了一樣。這肯定可以解釋為什麼bootctl status目前引導載入程序似乎不確定:它沒有找到8be4df61-93ca-11d2-aa0d-00e098032b8c-BootCurrent記錄韌體目前引導系統方式的引導變數。

如果刪除 GRUB 導致所有引導變數被刪除,那可能是一個錯誤:這是對任何其他引導載入程序的不必要的反社會行為。或者它可能是 UEFI 韌體錯誤:一些供應商的 UEFI 韌體實施會自動清除所有引用不再存在的磁碟或分區的引導變數,但也許這個在清理時有點過於熱心了?(系統韌體更新可能會解決該問題。)

缺少 UEFI 引導變數會導致韌體嘗試從它可以找到的任何磁碟中找到 ESP 分區,這種順序可能只有韌體程序員才知道。當它找到/EFI/BOOT/BOOTX64.EFI(相對於 ESP 分區的根目錄;在 Mint 中,它的完整路徑是/boot/efi/EFI/BOOT/BOOTX64.EFI)時,它將使用它來引導系統。在可移動媒體上,/EFI/BOOT/BOOTX64.EFI韌體可以理解的任何文件系統上的存在可能足以從該媒體啟動。

假設包含您的 ESP 分區(即/boot/efi文件系統)的磁碟是/dev/sda,您可能需要執行以下命令:

sudo efibootmgr -b 0000 -c -d /dev/sda -l \\EFI\\systemd\\systemd-bootx64.efi -L "Linux Mint"

這應該創建8be4df61-93ca-11d2-aa0d-00e098032b8c-Boot0000引導變數並使其正確指向systemd-bootx64.efi引導載入程序。它還將為該啟動選項提供一個人類可讀的名稱“Linux Mint”;您可能可以在韌體啟動設置中看到它(您可能將它們稱為“BIOS 設置”)。

它還應該自動創建8be4df61-93ca-11d2-aa0d-00e098032b8c-BootOrder變數,並使引導選項 0000(即剛剛在上面創建的變數)成為目前第一個也是唯一的活動引導選項。

如果使用 添加時引導變數似乎沒有“粘住” efibootmgr,那麼您肯定擁有一個帶有古怪 UEFI 韌體的系統。每個供應商的第一個 UEFI 實現往往都有稍後修復的錯誤:如果您的“正常硬體”系統不是全新的,它可能仍然具有早期的 UEFI 實現之一。您可以嘗試在韌體設置菜單中添加 UEFI 引導載入程序路徑;這樣做可能會滿足使韌體拒絕由efibootmgr.

在這種情況下,您可能還想閱讀Roderick W. Smith 的關於“引導政變”的頁面- 它主要是考慮到 rEFInd 引導載入程序編寫的,但它很好地描述了各種 UEFI 韌體怪癖和可用的解決方法。

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