为了测试根文件系统,我需要使用创建的磁盘映像作为根文件系统来运行 QEMU,QEMU 接受 -kernel,它可用于直接指定内核,而无需将其部署在根文件系统内,但是我需要类似的 root 功能文件系统来指定提取的根文件系统的路径,而不是创建磁盘映像并将其与 -hda 或 -usbdisk 选项一起使用。
单独使用 QEMU 是否可能?!或者使用第三方工具(例如虚拟磁盘映像模拟器)
我的目标是在不创建磁盘映像的情况下测试根文件系统的 tar 存档
答案1
如果您的 rootfs 不太大,您可以使用 initd。使用-initrd
qemu 选项并提供带有 rootfs 的(压缩的)cpio 文件。因此,如果您有 tar 文件,则必须将其解压并创建 cpio。您必须使用-H newc
cpio 格式。例子;
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 中的内核选项将其挂载为根文件系统
- 激活虚拟机中的启动菜单
- 连接包含内核的文件系统所在的外部驱动器。
- 如果你的文件系统有内核和 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 没有分区)