2012-07-19 66 views
1

我实际上试图使用Qemu和busybox模拟Linux内核。 到目前为止,我做了这个内核映像: http://depositfiles.com/files/l9x9veg09 和使用这些参数推出的Qemu: QEMU系统-x86_64的-m 256 -S -hda rootfs.img -kernel的linux-2.6.34.12 /弓/ 86 /启动/ bzImage的-append“root =/dev/sda \ init =/bin/sh”但是一旦内核启动,我会收到一条消息: 内核恐慌。找不到init。尝试将init =选项传递给内核... 虽然向参数添加“init =/bin/sh”会解决问题,但它不会。我是这个领域的领头羊。有人可以帮我弄这个吗?谢谢使用Qemu进行内核模拟

回答

2

使用Busybox时,您想要传递initinitfs而不是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" 
+0

我得到qemu:读取initrd时出错initramfs – 2012-07-20 04:54:55

+1

initramfs是启动时加载到内存中的初始ram磁盘。你可以看到如何使用busybox创建它[这里](http://mgalgs.github.com/2012/03/23/how-to-build-a-custom-linux-kernel-for-qemu.html)。如果你有[mkinitramfs](http://manpages.ubuntu.com/manpages/lucid/man8/mkinitramfs.8.html)可用,你可以用它来创建initramfs文件。 – 2012-07-20 05:40:11

+0

非常感谢,我会仔细阅读这些文章:) – 2012-07-20 06:05:38

0

我终于通过使用静态链接(在网站上找到)的预编译版本的busybox来工作。旧的是动态链接和编译它作为静态可执行文件是一个真正的痛苦(似乎glibc不再支持静态链接)。