私は64ビットカーネルを使用しており、QEMUで32ビットカーネルを実行したいと考えています。圧縮されたカーネルイメージを取得したら、mkinitcpio
を使用してinitramfsイメージを作成しようとしましたが、これは64ビットコードのイメージのみを作成しました(mkinitcpio
が使用するbusyboxは64ビットで、他の実行可能ファイルも)。
カーネルの一部であるgen_init_cpio
プログラムを使用して、他の方法で32ビットの実行可能ファイルを取得することもできますが、これを避けて、カーネルがrootfsで必要とするものをプログラムに決定させることをお勧めします。
64ビットカーネルの実行中に32ビットのinitramfsイメージを取得する方法はありますか?
64ビットシステムは、32ビットのinitramfsを必要としないため、生成しません。したがって、32ビットのディストリビューションをchrootにインストールする必要があります。
ただし、mkinitcpio
を含むほとんどのinitramfsジェネレーターはモジュールの自動検出を行うため、これも機能しない可能性があります。 initramfsには、特定のハードウェアとセットアップに必要なモジュールのみが含まれ、他の場所では機能しません。結局、ほとんどのinitramfsジェネレーターでは、ブートされたVM自体の内部で実行する必要があります。
モジュールの自動検出を無効にすることはできますが、その場合、initramfsは巨大になります。妥協案は、構成ファイルで必要なモジュールを手動で指定することです。