有一段时间,我正在使用virt-install
在libvirt VM上安装操作系统。我了解到操作系统具有自动安装程序功能,需要使用第二张CD-ROM(向安装程序提供有关所需配置的信息),但我发现virt-install
忽略了除--cdrom
之外的所有内容参数。我提出的替代方法是使用virt-install
参数将VM配置--print-xml
将仅使用一张CD-ROM输出到文件,编辑该文件以添加第二张CD-ROM,然后使用virsh create <xml config file>
。
当我之前使用virt-install
时,VM会在安装结束时重新启动,而virt-install
会注意并关闭(“销毁”)VM,而不是让它重新启动,留下我安装好的干净磁盘映像。但是,现在当VM在完成安装后重新启动时,它实际上会再次启动,而不是干净地关闭,因此我无法以编程方式告知安装何时完成。重新启动后,看起来正在使用相同的qemu-system-x86_64
进程,因此我也无法使用它来判断安装何时完成。
如何强制libvirt关闭(“销毁”)VM而不是重新启动virt-install
的方式?或者,我是否可以使用其他指示器来判断是否已发生VM重启?
答案 0 :(得分:1)
虽然似乎没有办法在重新启动时通过virsh create
的特殊咒语或通过更改域XML文件中的选项来自动销毁libvirt VM,但我偶然发现了非常有用的{{1命令:
virsh event
该命令将阻塞,直到指定域发生指定类型的事件。这使我能够通过以下方式实现我在$ virsh help event
NAME
event - (null)
SYNOPSIS
event [<domain>] [<event>] [--all] [--loop] [--timeout <number>] [--list]
DESCRIPTION
List event types, or wait for domain events to occur
OPTIONS
[--domain] <string> filter by domain name, id, or uuid
[--event] <string> which event type to wait for
--all wait for all events instead of just one type
--loop loop until timeout or interrupt, rather than one-shot
--timeout <number> timeout seconds
--list list valid event types
中模仿行为的目标:
virt-install
它甚至给我一个内置的超时机制!