我已从树中编译了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上运行此图像的帮助都将不胜感激。
答案 0 :(得分:2)
这里缺少的组件是要传递的内核参数, 当您使用-initrd即initialramdisk时,您需要传递rdinit = /(your-app-executable)
您可以通过rdinit=/sbin/init
或rdinit=/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”