我已经从树中编译了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/init
或rdinit=/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"