linux - 无法在 qemu 上运行 linux 内核镜像

标签 linux linux-kernel qemu emulation

我已经从树中编译了 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/

相关文章:

qemu - 如何统计一次运行QEMU从开始到结束执行的guest指令数?

python - 如何在 Linux 机器上使用 Python 获取文件夹的所有者和组?

linux-kernel - Linux函数class_device_create改为?

networking - Linux 网络堆栈 : adding protocols with an LKM and dev_add_pack

android - 如何将设备驱动程序集成到 MIPI-LVDS 桥的 MDSS (MIPI-DSI) 子系统中?

linux - 如何在 qemu/kvm 中应用 cpu 核心的一对一映射?

arm - 在 Qemu 中模拟基于 NAND 的存储设备?

linux - 使用一个 grep 一次获取两个结果

linux - 如何将 expat 链接到项目中

linux - 在 linux 中查找没有扩展名的文件并批量重命名它们