virtual-machine - 在 Centos 7.0 上向 qemu-kvm 启动的 VM 传递参数或共享目录/文件的方法

标签 virtual-machine centos7 qemu kvm

我需要能够在启动期间将一些参数传递给我的虚拟机,以便它正确设置自己。为此,我要么必须将信息烘焙到图像中,要么以某种方式将其作为参数传递给我的 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/

相关文章:

python - "No module named"。 gdb 中的 Python 错误

java - Centos 7上Java无法加载系统游标: CopyDrop. 32x32异常

apache - 由于未加载 mod_proxy 文件,httpd 未启动

linux - 鼠标和键盘在带有最新埃图像的 beagleboard 的 qemu 仿真中不起作用

web-services - 创建固件实验室实例

docker - 如何在 CentOS 7 上安装最新版本的 Docker

virtualization - 使用与 AppArmor 相关的 libvirt 错误创建虚拟机

azure - 在同一订阅中同时在 azure 中创建多个 VM,而另一个用户也执行相同操作

Azure VM 数据磁盘或存储的高可用性设置

windows - 无法 telnet/ping 虚拟机上安装的服务器