EFIブートエラー:正しいデバイス「root =」ブートオプションを追加してください。

EFIブートエラー:正しいデバイス「root =」ブートオプションを追加してください。

ブートローダなしでより速い起動を達成するために、EFI / BIOSから直接システム(Kubuntu 20.04)を起動してみました。
私は編集しましたLinux-カーネル-5.8.5、ファイルをコピーして名前を/usr/src/linux-5.8.5/arch/x86/boot/bzImageに変更します/boot/efi/EFI/ubuntu.efi。 BIOSを再起動して選択します。Ubuntu.efiそして追加されましたセキュアブート
システムが起動しますが、次のエラーが発生します。

Please append a correct device "root=" boot option; here are the available partitions:
(driver?)
103:00001 123456 nvme0n1p1 ...UUID....
103:00002 123456 nvme0n1p2 ...UUID....
103:00003 123456 nvme0n1p3 ...UUID....

kernel panic - not syncing: VFS: unable to mount root fs on unknown-block(0,0)

これPCIFSそしてNVMEドライバはカーネル(*)に組み込まれています。私が知っている限り、パーティションパスとルートディレクトリを入力するだけですが、どこですか?


----編集----

エラーメッセージが表示されたら、正しいパーティションを選択してください。
ここに正しいパーティションを入力しました。

make menuconfig

Processor type and features  --->
    [*] Built-in kernel command line
        (root=/dev/nvme0n1p5) Built-in kernel command string
            [*] Built-in command line overrides boot loader arguments

私も同じミスを犯した。その後、パスを次の
ように置き換えようとしましたが、同じエラーが発生しました。 UUIDを詳しく見てみると、リストされたUUIDが実際にはroot=/dev/nvme0n1p5UUID
パトゥUID(次のコマンドで見ることができます。黒子)だからPARTUUIDを試しましたが、何も変更されませんでした。同じエラーが発生しました。
何を入力しても、Built-in kernel command string常に同じエラーが発生します。

FEIブートエラーの写真

答え1

1つの方法は、次のコマンド-@のオプションを使用してNVRAMのUEFIブート変数にブートオプションを追加することですefibootmgr

echo "root=/dev/nvme0n1pX" | efibootmgr -c -d /dev/nvme0n1 -L "Kubuntu with kernel UEFI stub" -l \\EFI\\ubuntu.efi -@ -

...ここで、/dev/nvme0n1pX実際のルートファイルシステムを含むNVMEデバイスパーティションは、/dev/nvme0n1ESPパーティションを含むNVMEデバイスで\\EFI\\ubuntu.efiあり、ESPパーティションのルートに対するWindowsスタイルのパス名です。バックスラッシュは特殊文字なので、二重バックスラッシュが含まれます。シェル。-L必要なラベルテキストを設定できます(オプションパラメータ)。

カーネルファイルに含めない限り、initramfsはまったく含まれません。カーネルブートパラメータを追加してUEFIスタブにinitramfsをロードさせることができますが、initrd=\\EFI\\initrd.img文書化が非常に不十分であり、バグやベンダー固有の問題がある可能性があるUEFIファームウェアのサポートに依存するため、サポートは不確実です(一部のシステムでは絶対パスが必要です)することができます)。すべて大文字で、他のパスは大文字と小文字が正確な相対パスなどになります。)

また、起動時にカーネル起動オプションを編集できるブートローダがないため、カーネル起動オプションを編集して緊急/シングルユーザーモードで起動することもできません。したがって、可能なブートオプションの要件を見積もり、複数のUEFIブート変数を作成して状況を事前に処理するか、初期ブートプロセスに問題がある場合は、外部メディアからシステムを再起動する必要があります。

ただし、ユーザーが簡単に操作できないデバイスやキオスクスタイルシステムを構築する場合は、これらの制限が適している可能性があります。

(古代バージョンのLinuxでは、bzImageファイルを直接操作してマイナー/メジャーデバイス番号でデフォルトのルートデバイスを事前設定する方法がありましたが、これが最新のカーネルで動作するかどうかはわかりません。そうすることはできません。するようです)。

答え2

解決しました。
正しいコマンドは次のとおりです。fs0:> Kubuntu.efi root=/dev/nvme0n1p5
解決策:助けてくれLinux-kernel ---> ~/Documentation/admin-guide/efi-stub.rst

てありがとう。

関連情報