如何从命令行启动 QEMU VM?

如何从命令行启动 QEMU VM?

要了解有关 QEMU 配置的更多信息,我想ubuntu20.10直接在命令行上启动 VM,而不是使用虚拟管理器

我已经读过将 libvirt xml 转换为 qemu 命令行,一种方法是查看/var/log/libvirt/qemu/ubuntu20.10.log以检索调用的qemu-system-x86_64命令。

例如,我通过 virt-manager 启动虚拟机,然后检查其日志:

LC_ALL=C \
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin \
HOME=/var/lib/libvirt/qemu/domain-11-ubuntu20.10 \
XDG_DATA_HOME=/var/lib/libvirt/qemu/domain-11-ubuntu20.10/.local/share \
XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain-11-ubuntu20.10/.cache \
XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain-11-ubuntu20.10/.config \
QEMU_AUDIO_DRV=spice \
/usr/bin/qemu-system-x86_64 \
-name guest=ubuntu20.10,debug-threads=on \
-S \
-object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain-11-ubuntu20.10/master-key.aes \
...

但调用会触发以下错误:

2021-03-11T21:38:13.041883Z qemu-system-x86_64:-对象秘密,id = masterKey0,format = raw,file = / var / lib / libvirt / qemu / domain-11-ubuntu20.10 / master-key .aes:

无法读取 /var/lib/libvirt/qemu/domain-11-ubuntu20.10/master-key.aes:无法打开文件“/var/lib/libvirt/qemu/domain-11-ubuntu20.10/master- key.aes”:没有这样的文件或目录

事实上,/var/lib/libvirt/qemu/domain-11-ubuntu20.10/不存在。

为什么会记录明显错误的命令?如何通过 CLI 正确启动虚拟机?


更新:更多信息

该文件夹/var/lib/libvirt/qemu/domain-xx-ubuntu20.10/似乎是在通过 virt-manager 启动虚拟机时临时创建的。停止虚拟机会导致该文件夹再次被删除(因此出现命令错误)。

我还尝试了链接帖子中的其他建议解决方案:

替代方案2

ps -fA | cat # copy qemu command while VM started via virt-manager
# problem is the same here with a temporary folder being referenced.

替代方案3

virsh domxml-to-native qemu-argv --domain ubuntu20.10

假定一个域文件夹/var/lib/libvirt/qemu/domain--1-ubuntu20.10,但该文件夹不存在。命令输出:

LC_ALL=C PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin HOME=/var/lib/libvirt/qemu/domain--1-ubuntu20.10 XDG_DATA_HOME=/var/lib/libvirt/qemu/domain--1-ubuntu20.10/.local/share XDG_CACHE_HOME=/var/lib/libvirt/qemu/domain--1-ubuntu20.10/.cache XDG_CONFIG_HOME=/var/lib/libvirt/qemu/domain--1-ubuntu20.10/.config QEMU_AUDIO_DRV=spice /usr/bin/qemu-system-x86_64 -name guest=ubuntu20.10,debug-threads=on -object secret,id=masterKey0,format=raw,file=/var/lib/libvirt/qemu/domain--1-ubuntu20.10/master-key.aes ...

并在调用时按预期产生以下错误:

2021-03-12T09:34:03.794205Z qemu-system-x86_64:-对象秘密,id = masterKey0,format = raw,file = / var / lib / libvirt / qemu /domain--1-ubuntu20.10 / master- key.aes:无法读取/var/lib/libvirt/qemu/domain--1-ubuntu20.10/master-key.aes:无法打开文件“/var/lib/libvirt/qemu/domain--1- ubuntu20.10/master-key.aes”:没有这样的文件或目录

作为 QEMU/KVM/virt-manager 生态系统的新手,这让我很困惑。如果您需要更多信息,我会很乐意更新问题。


  • Ubuntu 20.04(最新更新)
  • 维尔什 6.0.0
  • 虚拟管理器 2.2.1
  • QEMU 模拟器版本 4.2.1 (Debian 1:4.2-3ubuntu6.14)
  • 虚拟机有快照(如果重要的话)

答案1

如果我很好地理解了这个问题,我找到了一个适合我的解决方案https://www.garron.me/en/bits/start-stop-kvm-virtual-machine-command-line.html。这是我为应用建议所做的事情。我刚刚用虚拟管理器制作了一个虚拟机,并将其命名为“Xubuntu20.04”。它实际上已被 virsh 关闭并正确列出:

~$ virsh list --all
 Id   Name           State
-------------------------------
 -    Xubuntu20.04   shut off

然后我用 virsh 启动它:

~$ virsh start Xubuntu20.04
Domain Xubuntu20.04 started

最后,我使用远程查看器设置了与虚拟机的连接。我使用远程查看器,因为它允许显示我为虚拟机设置的两个显示器。在本例中,我保留默认端口 5900,但当然您可以在方便时更改它:

~$ remote-viewer spice://localhost:5900

不要担心您将看到的输出,虚拟机实际上已启动:

(remote-viewer:15718): Gtk-WARNING **: 14:32:38.836: Theme parsing error: gtk.css:2:15: Unit is missing.

(remote-viewer:15718): GLib-GObject-WARNING **: 14:32:39.635: value "64" of type 'gint' is invalid or out of range for property 'desktop-width' of type 'gint'

(remote-viewer:15718): GLib-GObject-WARNING **: 14:32:39.635: value "64" of type 'gint' is invalid or out of range for property 'desktop-height' of type 'gint'

仅此而已,我希望这个提示可以对某人有所帮助。

相关内容