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



我已经从树中编译了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上运行,我将不胜感激。

这里缺少的组件是要传递的内核参数,当你使用-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"

您实际上有磁盘映像和根文件系统要提供给qemu和您的内核吗?

要启动linux系统,您需要的不仅仅是一个linux内核。对于qemu,您还需要一个包含在虚拟磁盘映像中的根文件系统。这将包含一些程序;手控制";当它完成引导时,通常是"init"或"systemd"。

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

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

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

相关内容

  • 没有找到相关文章

最新更新