2013-08-26 68 views
3

我已經從樹中編譯了linux內核(穩定)並獲得了initrd和bzImage。我嘗試在qemu模擬器上運行它,但是我在指定根文件系統分區時遇到了問題。 (我知道這是加載來運行initrd的分區)。無法在qemu上運行linux內核映像

我的系統是通過Windows上的Wubi安裝的Ubuntu 12.04。

我一直在使用的命令是

qemu-system-x86_64 -kernel bzImage -initrd initrd.img-3.11 -append "root=/no-clue-what-to-put" 

我知道根是參數,指定其中的根分區。任何幫助讓這個圖像上運行qemu將不勝感激。

+0

嘗試put root =/dev/ram –

+0

這不起作用/ dev/ram實際上不是分區離子,因此找不到它 – maverick

+0

它將允許您使用ram作爲根分區。在你的系統上你沒有它,但是它在內核配置上有所不同。 –

回答

1

你確實磁盤映像和根文件系統給予QEMU和內核?

你需要的不僅僅是一個linux內核來啓動一個linux系統。對於qemu,您還需要包含在虛擬磁盤映像中的根文件系統。這將包含內核在啓動完成時「手動控制」的程序,通常是'init'或'systemd'。

因此,您必須生成一個包含根文件系統的qemu磁盤映像。如果您創建了它,以便根文件系統位於虛擬磁盤的第一個分區上,則可以使用「-hda/path/to/qemu/disk/image」將虛擬磁盤指定爲qemu的參數,並且您可以告訴內核使用「-append」root =/dev/sda1「來使用該虛擬磁盤的第一個分區(它也可以是/ dev/vda1或/ dev/hda1,具體取決於您創建的磁盤映像類型)

因此,最終的命令看起來像:

QEMU系統-x86_64的-kernel的bzImage -initrd的initrd.img 3.11 -hda /路徑/到/你/ QEMU /磁盤/圖像-append「根=/dev/sda1「

2

這裏缺少的組件內核參數傳遞, 當您使用-initrd即initialramdisk你需要傳遞rdinit = /(你的應用程序內可執行的)

你可以通過rdinit=/sbin/initrdinit=/bin/sh 試試這個

qemu-system-x86_64 -kernel bzImage -initrd initrd.img-3.11 -append "root=/dev/ram rdinit=/sbin/init"

+0

我認爲這應該是一個評論而不是答案。 – Dariusz

+0

這不提供問題的答案。要批評或要求作者澄清,請在其帖子下方留言。 – Dariusz

+0

@Dariusz感謝您的建議 –

相關問題