efibootmgrは、DevPathがPciRootではなくVenhwに設定されたエントリを作成します。

efibootmgrは、DevPathがPciRootではなくVenhwに設定されたエントリを作成します。

こんにちは。大きな問題があります。efibootmgrブート エントリを作成するときに、EFI ブート メニューにブートできない日本語文字が作成され、これは非常に悪いです。

一方、EFI シェルで bcfg を使用すると、問題なく動作します。使用される efibootmgr コマンドは : ですefibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd"が、bcfg コマンドは : です。bcfg boot add 3 fs0:\EFI\refind\refind_x64.efi "rEFInd"

実行すると、bcfg boot dump -vefibootmgr と bcfg エントリの違いは次のようになります。

DevPathbcfgのエントリは、efiboomgrPciRoot(0x0)/Pci.....\EFI\refind\refind_x64.efiのエントリは、次のように記述されています。VenHw(99E275E7-75AO-4B37)

efibootmgr を動作させる方法について何かアイデアはありますか? または、bcfg でカーネル パラメータを指定するためにコマンド呼び出しでどのオプションを使用する必要があるか教えてください。

答え1

efibootmgrが説明されているようなエントリを作成している場合( )、またはファームウェアVenHw(99E275E7-75AO-4B37)のバグのようです。とはいえ、指定したコマンドを検討してください。efibootmgrefibootmgr

efibootmgr -c -d /dev/nvme0n1 -p 1 -l /EFI/refind/refind_x64.efi -L "rEFInd"

これには、異常な点が 2 つあります。

  • ディスクデバイス-- Linux のほとんどのディスク デバイスの名前は という形式です。/dev/sd?ここで はup?からの 1 文字ですa。一部の SSD カードなどのデバイスでは、ファイル名は のような他の形式になります/dev/mmcblk0(これは記憶から得た情報であり、正確ではない可能性があります)。 のようなデバイス名を見た記憶はありません/dev/nvme0n1。これは間違っていると言っているわけではありませんが、少なくとも珍しいことなので、再確認する必要があります。パーティション番号を含めないように特に注意してください。そのために-pは のオプションefibootmgrがあります。
  • ファイル仕様-- の古いバージョンでは、efibootmgrファイルを EFI 構文を使用して指定する必要があります。つまり、ディレクトリ エントリをスラッシュ ( ) で区切るの\ではなく、バックスラッシュ ( ) を使用します。Linux シェルは一般にバックスラッシュを一意に扱うため、パス名全体を引用符で囲むか、バックスラッシュを 2 つ重ねて使用する必要があり、または を指定します。 の最新バージョンでは、より伝統的な Unix/Linux 形式を受け入れ、内部で「変換」すると聞いていますが、その機能がいつ追加されたのか正確にはわかりませんし、使用している Ubuntu のバージョンもわかりません。したがって、スラッシュではなく、2 つ重ねたバックスラッシュまたは引用符で囲んだバックスラッシュを使用することをお勧めします。/-l \\EFI\\refind\\refind_x64.efi-l "\EFI\refind\refind_x64.efiefibootmgr

もちろん、実際問題として、 経由で動作するエントリがある場合はbcfg、 で他に何もする必要はありませんefibootmgrすべき作業と、Ubuntu からこのタイプのメンテナンスを実行できるようにしたいためです。

答え2

私もまったく同じ問題を抱えていました。NVME ディスクを使用して efibootmgr でブート エントリを作成しようとしました。起動せず、BIOS のブート メニューにはそのエントリに対して日本語 (または中国語?) の文字しか表示されませんでした。別の OS からのブート エントリを検査すると、新しく作成されたエントリのタイプが VenHw であることが示されました。

しかし、問題はパーティション番号が間違っていたことです。ルート パーティションと、暗号化された lvm ボリューム内の他のパーティションがありました。そのため、指定するはずだった /boot パーティションではなく、efibootmgr に暗号化されたパーティションを指定しました。これはおそらくあなたのケースではないと思いますが、同じ理由で他の誰かがこの問題に遭遇した場合に備えて、これを書いています。パーティション番号と efibootmgr の他のパラメータを再確認してください。

答え3

refind.conf ファイルを編集して、パスを PciRoot に戻す必要があります。デバイスの説明全体を書き留めておき、conf ファイルに入力できるようにします。正しい PciRoot を選択するようにしてください。

関連情報