我想设置新的客户机,但不想立即启动它。我使用virt-install
以下选项:
virt-install \
--connect qemu:///system \
--import \
--virt-type kvm \
--name somevm \
--os-variant win7 \
--memory 2048 \
--vcpus 1 \
--disk /home/bla/VirtualMachines/somevm.qcow2,format=qcow2,device=disk \
--network network=default \
--noautoconsole \
--sound default
但virt-install
总是会启动虚拟机。我在手册页中找不到任何禁用自动启动的选项。我宁愿不在virsh destroy somevm
安装后立即调用,尽管虚拟机可能还没有启动……是否可以使用 virt-install 阻止客户机启动,或者是否有其他工具可以执行相同操作但不启动客户机?
我还发现了一些解决方法:--import
你可以使用 来安装虚拟机,而不是使用--pxe
。如果没有可用的 PXE 服务器,那么这应该有足够的时间来使用 来销毁客户机virsh
。
答案1
virt-install选项--print-xml
可能更接近您的需求。然后,您可以将它打印的 XML 输入到命令中virsh define
以创建(但不启动)客户机。
另外,也可以查看该virt-xml
工具,它是一种友好的方式,可以从参数(如您提供给 virt-install 的参数)构建 XML 文档
答案2
使用选项--noreboot
virt-install \
..
..
--noautoconsole \
--video vga \
--memballoon none \
--noreboot
更新:为那些启动 Windows VM 的用户
添加了--memballoon
选项。Memballoon 在 Windows 上实际上不起作用。
答案3
我提到了一个可能对你的目标有用的案例关联:
本质上,如果您有一个现有的磁盘映像,其中已安装好所有内容(您可能之前创建过,或者从现有的 KVM 客户机克隆),存储在 中,您可以通过导入该映像及其选项/var/lib/libvirt/images/debian10.qcow2
来自动创建新的 KVM 虚拟机,例如,virt-install
--noautoconsole
virt-install --virt-type kvm --name debian10 --disk /var/lib/libvirt/images/debian10.qcow2 --import --os-variant debian10 --vcpus 1 --memory 1024 --noautoconsole
名为 debian10 的域(或虚拟机)将在不要求任何交互的情况下创建,virt-install
并将根据其手册中所述快速退出
–noautoconsole:不要自动尝试连接到客户控制台...
注意,当指定此选项时,virt-install 会快速退出...
由于您已安装好所有组件的映像,因此终止virt-install
不会引起任何问题,而在本例中这是理想的行为。之后,您可以使用virsh destroy
或命令关闭客户虚拟机。此时,您可以使用或 在其源文件(通常存储在 /etc/libvirt/qemu/)上以适当的方式virsh shutdown
修改客户虚拟机的 XML 文件virsh edit