web-dev-qa-db-ja.com

64ビットマシンでの32ビットinitramfsの作成

私は64ビットカーネルを使用しており、QEMUで32ビットカーネルを実行したいと考えています。圧縮されたカーネルイメージを取得したら、mkinitcpioを使用してinitramfsイメージを作成しようとしましたが、これは64ビットコードのイメージのみを作成しました(mkinitcpioが使用するbusyboxは64ビットで、他の実行可能ファイルも)。

カーネルの一部であるgen_init_cpioプログラムを使用して、他の方法で32ビットの実行可能ファイルを取得することもできますが、これを避けて、カーネルがrootfsで必要とするものをプログラムに決定させることをお勧めします。

64ビットカーネルの実行中に32ビットのinitramfsイメージを取得する方法はありますか?

1
cadaniluk

64ビットシステムは、32ビットのinitramfsを必要としないため、生成しません。したがって、32ビットのディストリビューションをchrootにインストールする必要があります。

ただし、mkinitcpioを含むほとんどのinitramfsジェネレーターはモジュールの自動検出を行うため、これも機能しない可能性があります。 initramfsには、特定のハードウェアとセットアップに必要なモジュールのみが含まれ、他の場所では機能しません。結局、ほとんどのinitramfsジェネレーターでは、ブートされたVM自体の内部で実行する必要があります。

モジュールの自動検出を無効にすることはできますが、その場合、initramfsは巨大になります。妥協案は、構成ファイルで必要なモジュールを手動で指定することです。

1
frostschutz