无法在qemu上运行linux内核映像

时间:2013-08-26 09:38:57

标签: linux linux-kernel qemu emulation

我已从树中编译了linux内核(稳定版)并获得了initrd和bzImage。我尝试在qemu模拟器上运行它但我在指定根文件系统分区时遇到问题。 (我知道这是加载来运行initrd的分区)。

我的系统是在Windows上通过Wubi安装的Ubuntu 12.04。

我一直在使用的命令是

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

我知道root是指定根分区所在位置的参数。任何有关在qemu上运行此图像的帮助都将不胜感激。

2 个答案:

答案 0 :(得分:2)

这里缺少的组件是要传递的内核参数, 当您使用-initrd即initialramdisk时,您需要传递rdinit = /(your-app-executable)

您可以通过rdinit=/sbin/initrdinit=/bin/sh 试试这个

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

答案 1 :(得分:2)

你真的拥有磁盘映像和根文件系统来提供给qemu和你的内核吗?

您需要的不仅仅是Linux内核来启动Linux系统。对于qemu,您还需要一个包含在虚拟磁盘映像中的根文件系统。这将包含内核在启动时“手动控制”的程序,通常是“init”或“systemd”。

因此,您必须生成包含根文件系统的qemu磁盘映像。如果您创建它以使根文件系统位于虚拟磁盘的第一个分区上,则可以使用“-hda / path / to / qemu / disk / image”将虚拟磁盘指定为qemu的参数,您可以告诉内核使用该虚拟磁盘的第一个分区“-append”root = / dev / sda1“(它也可以是/ dev / vda1或/ dev / hda1,具体取决于您创建的磁盘映像类型)。< / p>

所以你的最终命令看起来像是:

qemu-system-x86_64 -kernel bzImage -initrd initrd.img-3.11 -hda / path / to / your / qemu / disk / image -append“root = / dev / sda1”