使用根文件系统目录而不是磁盘映像运行 QEMU

使用根文件系统目录而不是磁盘映像运行 QEMU

为了测试根文件系统,我需要使用创建的磁盘映像作为根文件系统来运行 QEMU,QEMU 接受 -kernel,它可用于直接指定内核,而无需将其部署在根文件系统内,但是我需要类似的 root 功能文件系统来指定提取的根文件系统的路径,而不是创建磁盘映像并将其与 -hda 或 -usbdisk 选项一起使用。

单独使用 QEMU 是否可能?!或者使用第三方工具(例如虚拟磁盘映像模拟器)

我的目标是在不创建磁盘映像的情况下测试根文件系统的 tar 存档

答案1

如果您的 rootfs 不太大,您可以使用 initd。使用-initrdqemu 选项并提供带有 rootfs 的(压缩的)cpio 文件。因此,如果您有 tar 文件,则必须将其解压并创建 cpio。您必须使用-H newccpio 格式。例子;

mkdir /tmp/rootfs
cd /tmp/rootfs
tar xf /path/to/rootfs.tar
find | cpio --quiet -o -H newc | bzip2 -c > /tmp/rootfs.cpio

一件好事是您不需要 root 或 sudo 来执行此操作。

答案2

您可以将文件系统写入 USB 驱动器,然后将其与 QEMU 虚拟机连接。

然后使用 GRUB 中的内核选项将其挂载为根文件系统

  1. 激活虚拟机中的启动菜单
  2. 连接包含内核的文件系统所在的外部驱动器。
  3. 如果你的文件系统有内核和 grub,那就没问题了。另外,还可以将任何 Linux Live CD 与虚拟机一起附加。编辑 GRUB 命令行并使用您的内核和根文件系统。

假设你的随身碟是/dev/sdB(考虑到你还附加了一个硬盘映像,也就是说/dev/sdA,无论如何你都可以找到它)你的 grub 命令应该是这样的

kernel (hd1,gpt0)/location_of-kernel root=/dev/sdB
initramfs mention_if_you_have
boot

替换gpt0为正确的分区和/dev/sdB正确的字母/dev/sdb1/dev/sdb(如果 USB 没有分区)

相关内容