私は実行してカーネルをコンパイルmake menuconfig
してmake
。私はqemuでbzImageを実行しようとしましqemu -kernel bzImage
たが、エラーメッセージが出てうまくいきませんでした:
Unable to mount root fs on unknown-block(0.0)
どうすれば修正できますか?qemuでbzImageを実行するにはどうすればよいですか?
私は実行してカーネルをコンパイルmake menuconfig
してmake
。私はqemuでbzImageを実行しようとしましqemu -kernel bzImage
たが、エラーメッセージが出てうまくいきませんでした:
Unable to mount root fs on unknown-block(0.0)
どうすれば修正できますか?qemuでbzImageを実行するにはどうすればよいですか?
回答:
それはうまくいきました。カーネルは問題なく起動しました。エラーは:
unknown-block(0.0)にルートファイルシステムをマウントできません
カーネルはルートファイルシステムを探しています。1つ提供する必要があります。プロセスを実行せずにカーネルと対話することはできません。最初のプロセスはどこからロードする必要があります。カーネルが起動すると、ファイルシステム(ルートファイルシステム)がディレクトリ/
にマウントされ、プログラムが実行され/sbin/init
ます。initプログラムは通常、ブートスクリプトの実行と、ユーザーがログインできるようにするプログラムを含むサービスの開始を担当します。
カーネルがルートファイルシステムをマウントできることを確認する必要があります。ファイルシステムタイプおよびブロックデバイスに関係するすべてのレイヤー(ディスクコントローラー(SCSI / SATA / IDE / USB /…アダプター)、パーティションタイプなど)用のドライバーが必要です。
Linuxは、ルートファイルシステムを見つけてマウントするために、ブートプロセス中に使用されるRAMに初期ファイルシステムをロードするという追加の可能性を提供します。この初期ファイルシステムには、ルートファイルシステムのデバイスとファイルシステムタイプを処理するモジュールを含めることができます。2 つのわずかに異なるメカニズムがあります。initrdとinitramfsです。
ファイルシステムはカーネルだけでコンパイルされますが、カーネルを実行するためにRAMに存在する初期ファイルシステムを作成する必要があります。この初期ramファイルシステムを作成するには、mkinitrdを使用します。ubuntuではmkinitramfsが代わりに使用されます
cd〜/ linux / linux-2.6.32.59 / arch / i386 / boot
mkinitramfs -o initrd.img-2.6.32.59
その後、qemuでカーネルを実行します
qemu-system-i386 -kernel bzImage -initrd initrd.img-2.6.32.59 -m 512M
-initrdは初期RAMファイルシステムを表します
/boot/initramfs-linux.imgの下にramファイルシステムがあります。