0

重複します。答えが見つからなかったので、ここに投稿します。

ホスト マシン上にあるカスタム カーネル イメージを使用して、OpenSUSE をゲストとして実行したいと考えています。私はしようとしています:

$ qemu-system-x86_64 -hda opensuse.img -m 512 -kernel ~/kernel/linux-git/arch/x86_64/boot/bzImage -initrd ~/kernel/linux-git/arch/x86_64/boot/initrd.img -boot c

しかし、代わりに BusyBox で起動します。uname -a を使用すると、Linux (なし) が表示されます。また、-append "root=/dev/sda"(上記のリンクで提案されているように)を使用しても機能しないようです。カーネル イメージに OpenSUSE で起動するように指示するにはどうすればよいですか?

OpenSUSE を opensuse.img にインストールしました。

$ qemu-system-x86_64 -hda opensuse.img -m 512 -boot c

ストックカーネルで起動します。

4

2 に答える 2

0

通常、raspberry pi や任意のボードなどのアーム アーキテクチャ用です。

カスタムカーネルで起動するには

qemu-system-arm -kernel kernel-qemu -cpu arm1176 -m 256 -M versatilepb -no-reboot -serial stdio -append "root=/dev/sda2 panic=1" -hda 2013-05-25-wheezy-raspbian.img

where -hda your suse.img here u が確認できる rootfs が存在するパーティションを見つける必要があります

fdisk -l イメージ

パーティションが 1 つだけの場合は /dev/sda を渡すか、2 番目の /dev/sda2 にある場合は

ここではinitrdイメージは必要ないと思います。通常はメイン rootfs をマウントするので、メイン rootfs を起動する必要はありません。

だからこれを試してください qemu-system-x86_64 -hda opensuse.img -m 512 -kernel ~/kernel/linux-git/arch/x86_64/boot/bzImage -append "root=/dev/sda" -boot c

rootfsが存在するパーティションを正確に確認してから、 /dev/sda* を渡します。

1つ以上を試すだけかどうかはわかりません。また、あなたはそれについて言及しますuname -a

与えますlinux noneこれは bcoz です カーネルを構成する際に名前を指定する必要があります

于 2013-10-06T15:30:07.347 に答える
0

ほとんどの仮想マシンはディスク イメージまたは ISO ファイルから起動されますが、KVM はブートローダーをスキップして Linux カーネルをメモリに直接ロードできます。つまり、カーネル ファイルとブート ファイルを含むイメージ ファイルは必要ありません。代わりに、次のようにカーネルを直接実行できます。

qemu-kvm -kernel arch/x86/boot/bzImage -initrd initramfs.gz -append "console=ttyS0" -nographic

これらのフラグは、ディスク イメージの生成やブートローダーの構成を必要とせずに、カーネルと initramfs をホスト ファイルシステムから直接ロードします。

オプションの -initrd フラグは、カーネルがルート ファイルシステムとして使用する initramfs をロードします。

-append フラグはカーネル パラメータを追加し、シリアル コンソールを有効にするために使用できます。

-nographic オプションは、仮想マシンをシリアル コンソールのみに制限するため、すべてのテスト カーネル出力がグラフィカル ウィンドウではなく端末に保持されます。

以下のリンクを見てください。より多くの情報があります[すべてを書いたGuyに感謝します] http://blog.vmsplice.net/2011/02/near-instant-kernel-development-cycle.html

于 2013-10-05T20:11:41.423 に答える