我已经从树中编译了 linux 内核(稳定版)并获得了 initrd 和 bzImage。我尝试在 qemu 模拟器上运行它,但我无法指定根文件系统分区。 (我知道这是加载来运行 initrd 的分区)。
我的系统是在 Windows 上通过五笔安装的 Ubuntu 12.04。
我一直在使用的命令是
qemu-system-x86_64 -kernel bzImage -initrd initrd.img-3.11 -append "root=/no-clue-what-to-put"
我知道 root 是指定根分区位置的参数。任何帮助让这个图像在 qemu 上运行的帮助将不胜感激。
最佳答案
你真的有磁盘镜像和根文件系统给 qemu 和你的内核吗?
要启动 Linux 系统,您需要的不仅仅是 Linux 内核。对于 qemu,您还需要一个包含在虚拟磁盘镜像中的根文件系统。这将包含内核在完成引导时“控制”的程序,通常是“init”或“systemd”。
所以你必须生成一个包含根文件系统的 qemu-disk 镜像。如果你创建它使得根文件系统位于虚拟磁盘的第一个分区上,那么你可以使用 -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"
关于linux - 无法在 qemu 上运行 linux 内核镜像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18441102/