QEMUでのbzImageの実行:unknown-block(0.0)にルートfsをマウントできません


8

私は実行してカーネルをコンパイルmake menuconfigしてmake。私はqemuでbzImageを実行しようとしましqemu -kernel bzImageたが、エラーメッセージが出てうまくいきませんでした:

Unable to mount root fs on unknown-block(0.0)

Linuxカーネルエラー

どうすれば修正できますか?qemuでbzImageを実行するにはどうすればよいですか?


5
カーネルは問題なく起動しましたが、ルートファイルシステムが見つかりません。VMにどのディスクをマウントしましたか?ルートファイルシステムとはどのファイルシステムタイプですか、どのディスクタイプですか?必要なドライバーはすべてカーネルでコンパイルされていますか(ドライバーの1つを忘れることはよくある間違いです)?
Gilles「SO-邪悪になるのをやめる」

@Gillesファイルシステムをマウントしませんでした。コンパイルした後、bzImageが配置されているファイル(../arch/x86/boot)に直接行き、コマンド「qemu -kernel bzImage」を実行しました。エラーが発生したとき。
Coder404 2012

回答:


11

それはうまくいきました。カーネルは問題なく起動しました。エラーは:

unknown-block(0.0)にルートファイルシステムをマウントできません

カーネルはルートファイルシステムを探しています。1つ提供する必要があります。プロセスを実行せずにカーネルと対話することはできません。最初のプロセスはどこからロードする必要があります。カーネルが起動すると、ファイルシステム(ルートファイルシステム)がディレクトリ/にマウントされ、プログラムが実行され/sbin/initます。initプログラムは通常、ブートスクリプトの実行と、ユーザーがログインできるようにするプログラムを含むサービスの開始を担当します。

カーネルがルートファイルシステムをマウントできることを確認する必要があります。ファイルシステムタイプおよびブロックデバイスに関係するすべてのレイヤー(ディスクコントローラー(SCSI / SATA / IDE / USB /…アダプター)、パーティションタイプなど)用のドライバーが必要です。

Linuxは、ルートファイルシステムを見つけてマウントするために、ブートプロセス中に使用されるRAMに初期ファイルシステムをロードするという追加の可能性を提供します。この初期ファイルシステムには、ルートファイルシステムのデバイスとファイルシステムタイプを処理するモジュールを含めることができます。2 つのわずかに異なるメカニズムがあります。initrdとinitramfsです。


答えてくれてありがとう!ブートする仮想ファイルシステムを作成できますか?もしそうなら、私はそれをどうやってやりますか?
Coder404 2013年

@ Coder404ルートファイルシステムとして使用する仮想ファイルシステムを意味しますか?ラムドライブにします。
Gilles 'SO-邪悪なことをやめ

QEMUで構築しているカーネルのルートファイルシステムとして仮想ファイルシステムを使用したいのですが。どうすれば仮想ファイルシステムを作成できますか?
Coder404 2013年

1

ファイルシステムはカーネルだけでコンパイルされますが、カーネルを実行するために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ファイルシステムがあります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.