我需要能够在启动期间将一些参数传递给我的虚拟机,以便它正确设置自己。为此,我要么必须将信息烘焙到图像中,要么以某种方式将其作为参数传递给我的 qemu-kvm 命令。这些参数很少,如果是 VMware,我们只需将其作为 ova paramas 传递,当 VM 启动时,我们将调用 ova-environment 来获取这些参数。但是从 qemu-kvm 启动它我没有这样的选择。我做了一些功课,发现我可以使用 virtio-9p 驱动程序在主机和 guest 之间共享文件。不幸的是,RHEL/Centos 决定不支持 9p。
在启用 9p 选项的情况下没有重建我的 RHEL 内核的选项,我该如何解决我的上述问题?任何一种解决方案都可以工作,即将某种 json 文件传递/共享到 VM(预先填充在主机上),VM 将读取它并进行设置或设置某种我可以从中查询的“环境变量”在 VM 中获取这些参数并继续设置。任何指针都会有所帮助。
最佳答案
如果您的 QEMU 版本支持它,您可以使用它的 -fw_cfg
选项将信息传递给 guest 。如果该 guest 正在运行启用了 CONFIG_FW_CFG_SYSFS
的 Linux 内核,您将能够从 sysfs 中读取信息。一个例子:
如果您像这样启动虚拟机:
qemu-system-x86_64 <OPTIONS> -fw_cfg name=opt/com.example.test,string=qwerty
然后您可以从 guest 内部从 sysfs 取回值:
cat /sys/firmware/qemu_fw_cfg/by_name/opt/com.example.test/raw
似乎有一些 driver也适用于 Windows,但我从未使用过它。
关于virtual-machine - 在 Centos 7.0 上向 qemu-kvm 启动的 VM 传递参数或共享目录/文件的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56535142/