直接启动和打开特定虚拟机的 virt-manager 启动器操作

Byt*_*der 9 kvm launcher virt-manager

virt-manager用于 Qemu/KVM 虚拟机。引导 VM 当前意味着启动virt-manager、选择 VM 以在 VM 查看器中打开它,然后最后打开 VM。

我想为其添加一个启动器上下文菜单选项,以直接打开 VM 查看器窗口并启动 VM。

复制和编辑virt-manager.desktop文件以添加上下文菜单操作没有问题,但我不知道一个合适的命令来使virt-manager行为如我所愿。我怎样才能做到这一点?

小智 6

使用 virt-manager 找到“Libvirt URI”(选择虚拟机,Edit -> Connection Details),然后是虚拟机的名称(选择虚拟机,Edit -> Virtual Machine Details-如果你打开了机器,你必须确保它没有最大化,然后View -> Details,完成后返回控制台。)

然后使用(不要输入前导 $)

$ virt-manager --connect <<URI>> --show-domain-console <<NAME>>

URI 和名称是您从上面获得它们的地方。例如,我的看起来像:

$ virt-manager --connect qemu:///system --show-domain-console win7

从命令行运行它。如果可行,您应该能够将其放入一个简单的脚本中

$ cat > ~/bin/run-vm
#!/bin/bash
virt-manager --connect qemu:///system --show-domain-console win7
^D
Run Code Online (Sandbox Code Playgroud)

(其中 ^D 是控制 + D)。

$ chmod u+x ~/bin/run-vm
Run Code Online (Sandbox Code Playgroud)

然后,您应该能够将此命令添加到您的菜单中 - 例如参见Unix 和 Linux Stackoverflow 站点上的答案

您也可以将命令直接添加到带有参数的菜单中,但通常将命令作为脚本在命令行中运行更容易调试问题。


rid*_*dgy 5

我写了一个小脚本“~/scripts/StartVirtDomain.sh”

#!/bin/sh
# call this script with domainname as parameter 
# to start domain and open viewer

/usr/bin/virsh start $1         # domain must be known to virsh
/usr/bin/virt-viewer -w $1      # -w to wait until domain is running. 
Run Code Online (Sandbox Code Playgroud)

virt-viewer 应与 virt-manager 一起安装;如果不,sudo apt-get install virt-viewer

您可以使用域名作为参数来调用它。它将启动域(如果尚未启动),然后启动 virt-viewer 来连接该域。

示例桌面文件 (W7Pro.desktop)

[Desktop Entry]
Version=1.0
Type=Application
Name=W7Pro
Comment=Start Windows VM 
Exec=~/scripts/StartVirtDomain.sh Win7Pro
Icon=
Path=~/scripts
Terminal=false
StartupNotify=false
Run Code Online (Sandbox Code Playgroud)

完成了工作(域名是Win7Pro)。脚本中没有错误处理;如果需要的话你可以添加一些。特别是,如果 virsh 不知道该域或无法启动,virt-viewer 可能会永远等待。

编辑:

如果你确实需要 virt-manager 的控制台窗口,只需这样调用即可

virt-manager --connect=<URI> --show-domain-console <domain>
Run Code Online (Sandbox Code Playgroud)

例如在我的脚本中这将是

/usr/bin/virt-manager --connect=qemu:///system --show-domain-console $1
Run Code Online (Sandbox Code Playgroud)

通过选择相应的连接(例如 QEMU/KVM),然后使用上下文菜单中的“详细信息”,可以在 virt-manager 主窗口中找到连接 URI。

您甚至可以删除调用 virsh 的行,因为域可以从 virt-manager 控制台启动。