UEFIでカスタムカーネルとinitrdを実行する方法は?

UEFIでカスタムカーネルとinitrdを実行する方法は?

私はBIOSを含む開発マシンを持っており、カーネルとinitrdをコンパイルした後、簡単な作業でそれを使うことができますmenuentry

menuentry "mlinux" {
       linux /boot/mlinuz quiet
       initrd /boot/minitramfs
}

ただし、UEFI を持つ別のコンピューターで実行すると失敗し、次の結果が表示されます。

error: kernel doesn't support EFI handover.
error: you need to load the kernel first.

私はこれが私のカーネルのUEFIサポートの欠如と関連している可能性があると考えて、EFI_STUBサポート(また有効にする必要があるACPI)として再構築しました。これで黒い画面が表示されます。echo各ステップの前に追加して削除するとメッセージがquiet表示されますが、echoそれはすべてです。カーネルメッセージもなく、何もありません。

これを見た後質問この郵便はがき、カーネルを次の場所にコピーしました。

  • /boot/efi/mlinuz.efi
  • /boot/efi/EFI/mlinuz.efi
  • /boot/efi/EFI/BOOT/mlinuz.efi

そのアドレスを私のパスとして使用しましたが、menuentryファイルが見つからないというメッセージはまだ機能しません。このファイルはどこにコピーする必要があり、私のファイルには何を含める必要がありますかmenuentry

追加の質問:独自のLinuxカーネルで起動しましたが、カスタムカーネルを使用している場合はプログラムを起動できますが、initrdキーボードを使用して対話することはできません。理由をご存知ですか? ?

編集する:linuxefiandを見つけましたinitrdefiが、ファイルが見つかりませんでしたので、コマンドラインに行き、lsを使用してハードドライブを見つけ、lsを使用しましたが、linuxefi (hd0,pt2)/mlinuz64.efi何もしませんでした。

ベストアンサー1

空の画面が表示される場合、問題はFRAMEBUFFERを有効にする必要があることです。

CONFIG_FB_EFI=y
CONFIG_FRAMEBUFFER_CONSOLE=y

CONFIG_EFI_STUB直接起動するのではなく、grubを使用して無効にすることもできます。

おすすめ記事