2012-07-19 65 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不再支持靜態鏈接)。