GNU/Linux >> Linux の 問題 >  >> Linux

linux:qemu でセルフコンパイルされたカーネルを実行:VFS:未知の wn-block(0,0) にルート fs をマウントできません

私は自分でそれを理解しました。しばらく経ちましたが、私が思い出したように、解決策は最初の ramdisk を提供することでした。これが、ハードウェア アクセラレーションで動作するようにした方法です。

コンパイル中

make defconfig

CONFIG_EXT4_FS=y
CONFIG_IA32_EMULATION=y
CONFIG_VIRTIO_PCI=y (Virtualization -> PCI driver for virtio devices)
CONFIG_VIRTIO_BALLOON=y (Virtualization -> Virtio balloon driver)
CONFIG_VIRTIO_BLK=y (Device Drivers -> Block -> Virtio block driver)
CONFIG_VIRTIO_NET=y (Device Drivers -> Network device support -> Virtio network driver)
CONFIG_VIRTIO=y (automatically selected)
CONFIG_VIRTIO_RING=y (automatically selected)

---> http://www.linux-kvm.org/page/Virtio を参照

構成で paravirt を有効にする

GUEST でパフォーマンス カウンターを使用するために、HOST で NMI ウォッチドッグを無効にします。これは無視してかまいません。

cat /proc/sys/kernel/nmi_watchdog

---> http://kvm.et.redhat.com/page/Guest_PMU を参照

Qemu で開始

sudo qemu-system-x86_64 -m 1024M -hda /var/lib/libvirt/images/DEbian.img -enable-kvm -initrd /home/username/compiled_kernel/initrd.img-3.2.46 -kernel /home/username/compiled_kernel/bzImage -append "root=/dev/sda1 console=ttyS0" -nographic -redir tcp:2222::22 -cpu host -smp cores=2

KVM で開始

カーネル パス:/home/username/compiled_kernel/bzImage
初期化パス:/home/username/compiled_kernel/initrd.img-3.2.46
カーネル引数:root=/dev/sda1

誰かが同じ問題を抱えている場合、これが役立つことを願っています.


Linux
  1. デバイスからユーザー空間メモリーへの DMA への Linux カーネル デバイス ドライバー

  2. GDB と QEMU を使用して Linux カーネルをデバッグするには?

  3. root ユーザーから Linux カーネルを保護するのはなぜですか?

  1. カーネルはどのようにルート パーティションをマウントしますか?

  2. QEMU を使用した Linux カーネルのデバッグ

  3. Linux 上のデバイスに関連付けられているドライバー (モジュール) を見つける方法は?

  1. ルートとして実行している場合でも、ファイルを削除できませんか?

  2. Linux カーネルが 32 ビットまたは 64 ビットで実行されているかどうかを確認するにはどうすればよいですか?

  3. root であっても Linux でファイルを読み取り専用にする