(2) Linux Mint 20.1 システム(一般ハードウェア 1 個、VMware VM 1 個)を保有します。どちらもインストール/設定しましたが、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:仮想マシンから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
答え1
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
そのメディアから起動するのに十分です。
/boot/efi
ESPパーティション(ファイルシステムなど)を含むディスクは、/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(上記で作成した変数)を現在の最初で唯一のアクティブブートオプションとして作成する必要があります。
addを使用しているときにブート変数が「固定」されないような場合は、efibootmgr
システムに奇妙なUEFIファームウェアが必要です。各ベンダーの最初のUEFI実装には、後で修正されるバグがあることがよくあります。 「一般的なハードウェア」システムが新しいものではない場合、以前のUEFI実装の1つがまだ存在する可能性があります。ファームウェア設定メニューからUEFIブートローダパスを追加できることを確認できます。これにより、ファームウェアがで作成したすべての起動変数を拒否する不明な条件が満たされる可能性がありますefibootmgr
。
この場合、以下を読むこともできます。Roderick W. Smithの「ブートハッキング」ページ- 主にrEFIndブートローダを念頭に置いて書かれていますが、さまざまなUEFIファームウェアの問題と利用可能な解決策をよく説明しています。