ここには64ビットカーネルを起動できないマシンがあります(efi32といくつか…珍しいファームウェアがあります)。
現在64ビットLinuxシステムを起動する唯一の方法は次のとおりです。
- ブート/ライブCDから32ビットディストリビューションを起動します。
kexec
私自身の64ビットカーネルを起動することです。
もちろん、32ビットディストリビューションを再インストールすることもできますが、いいえ私が望むもの。私は実際の64ビットカーネル/ initrdのブートローダーとして機能する32ビットカーネル/ initrdコンボが欲しいです。
これは私自身のセカンダリカーネルをロードして起動できる最小のinitrdシステムです。これには既存のソリューションがありますか?
答え1
32ビットgrubブートローダは、「linux」および「initrd」コマンドを使用して、CONFIG_EFI_MIXEDオプションでコンパイルされた64ビットLinuxイメージを起動します。
これらのGrubコマンドは、カーネルを起動する前にEFIのExitBootServices()を実行します。したがって、カーネルはセキュアブートを使用できず、PCIスロットのROM(特にグラフィックカードのBIOS)にアクセスできません。
別の方法は、「shim」ブートローダを実行してからGrubを実行し、Grubのlinuxefiおよびlinuxrdefiコマンドを使用することです。 ExitBootServices() を実行する代わりに、カーネルから EFI スタブを呼び出して ROM などをコピーし、カーネルを正しく起動する前に ExitBootServices() 自体を呼び出します。シムブートローダなしでGrubの「linuxefi」コマンドを実行しようとすると、セキュアブートがあるかどうかにかかわらず、「チェックサムエラー」エラーが発生します。残念ながら、このアプローチには2つの問題があります。 (1)カーネルは32ビットでなければならず、(2)現在32ビットEFIスタブにはカーネルの起動を妨げるバグがあります(出力なしで中断) 。
この間違いは悪名高いです。さらに、一部の64ビットLinuxイメージは失敗し、これはいくつかのソートまたはデータの上書きの問題を強く示しています。
必要な結果を得る唯一の方法は、32ビットEFIスタブで起動できるようにカーネルを変更し、正しい64ビットカーネルに変換することです。 CONFIG_EFI_MIXEDの作成者はこの問題を解決しています。電子メールを送信することもできます。
答え2
CONFIG_EFI_HYBRIDたぶんそれはあなたに必要なものかもしれません。