【问题标题】:Kernel emulation with Qemu使用 Qemu 进行内核仿真
【发布时间】:2012-07-19 03:54:47
【问题描述】:
我实际上是在尝试使用 Qemu 和 busybox 模拟 linux 内核。
到目前为止,我制作了这个内核映像:
http://depositfiles.com/files/l9x9veg09
并使用以下参数启动 Qemu:
qemu-system-x86_64 -m 256 -s -hda rootfs.img -kernel linux-2.6.34.12/arch/x86/boot/bzImage -append "root=/dev/sda\init=/bin/sh"
但是一旦内核启动,我会收到一条消息:
内核恐慌。没有找到初始化。尝试将 init= 选项传递给内核...
我虽然在参数中添加“init=/bin/sh”可以解决问题,但它没有。我是这个领域的初学者。有人可以帮我弄这个吗?谢谢
【问题讨论】:
标签:
linux-kernel
virtualization
qemu
busybox
【解决方案1】:
使用 Busybox 时,您希望将 -initrd initramfs 而不是 init=/bin/sh 传递给 qemu。试试这个
qemu-system-x86_64 -m 256 -s -hda rootfs.img -kernel linux-2.6.34.12/arch/x86/boot/bzImage -initrd initramfs -append "root=/dev/sda"
【讨论】:
-
initramfs 是一个初始 ram 磁盘,在启动时加载到内存中。您可以查看如何使用busybox here 创建它。如果您有 mkinitramfs 可用,则可以使用它来创建 initramfs 文件。
【解决方案2】:
我终于通过使用静态链接(在网站上找到)的预构建版本的 busybox 使它工作。旧版本是动态链接的,将其编译为静态可执行文件真的很痛苦(glibc 似乎不再支持静态链接了)。