libvirt:virt-install 在安装时挂起
libvirt: virt-install hangs on installation
阅读 wiki libvirt 后,我开始 virt-install
从 Debian10 netinstall ISO 映像安装 VM:
% sudo virt-install --debug --connect qemu:///system --virt-type kvm --name vm-debian --memory 1024 --disk path=/var/lib/libvirt/images/vm-debian.img,size=10 --graphics none --cdrom /var/lib/libvirt/images/debian-10.6.0-amd64-netinst.iso --location /var/lib/libvirt/images/debian-10.6.0-amd64-netinst.iso --network network=default,mac=00:22:bb:cc:dd:ee --os-variant debian10
我可以在调试输出中看到 virt-install
分析 ISO 映像,提取 initrd.gz 和 vmlinuz 以及挂起前的最后一条消息:
[Wed, 11 Nov 2020 13:49:51 virt-install 729328] DEBUG (cli:370) Running: virsh --connect qemu:///system console vm-debian
Connected to domain vm-debian
Escape character is ^]
如果我按下 'Ctrl-]' virt-install 退出并且 qemu-kvm
进程仍在内存中。
这里到底发生了什么?难道我做错了什么?或许这种在libvirt环境下安装的方法已经过时了,还有更简单直接的方法吗?
谢谢。
更新
按照 DanielB 的建议,我在来宾端启用了 setial 端口并在串行控制台上启用了 virt-install 输出:
% virt-install --name debian10 --virt-type kvm --memory 1024 \
--disk path=/var/lib/libvirt/images/vm-debian10.img,size=10 \
--graphics none \
--console pty,target_type=serial \
--cdrom /var/lib/libvirt/images/debian-10.6.0-amd64-netinst.iso \
--location /var/lib/libvirt/images/debian-10.6.0-amd64-netinst.iso \
--network bridge=virbr0 \
--os-type linux --os-variant debian10 \
--extra-args console=ttyS0,115200n8 serial
我设法仅在启用图形的情况下继续安装,即将 --graphics vnc,listen=0.0.0.0
传递给 virt-install。这将启动 virt-viewer
(应该安装)。
这不是挂起 - 发生的事情是因为您使用了 -graphics none
,没有创建图形控制台,因此它假定您正在尝试进行串行控制台安装。 virt-install 正在显示串行端口输出,并让您输入输入,但是您的来宾 OS 似乎没有激活来宾端的串行端口,因此您看不到任何输出并且您键入的任何内容都将被忽略由客人。
IOW,此处解决根本原因的方法是需要以某种方式通过串行端口告知来宾 OS 安装程序 运行。替代解决方法是启用图形作为您的后续提到的
阅读 wiki libvirt 后,我开始 virt-install
从 Debian10 netinstall ISO 映像安装 VM:
% sudo virt-install --debug --connect qemu:///system --virt-type kvm --name vm-debian --memory 1024 --disk path=/var/lib/libvirt/images/vm-debian.img,size=10 --graphics none --cdrom /var/lib/libvirt/images/debian-10.6.0-amd64-netinst.iso --location /var/lib/libvirt/images/debian-10.6.0-amd64-netinst.iso --network network=default,mac=00:22:bb:cc:dd:ee --os-variant debian10
我可以在调试输出中看到 virt-install
分析 ISO 映像,提取 initrd.gz 和 vmlinuz 以及挂起前的最后一条消息:
[Wed, 11 Nov 2020 13:49:51 virt-install 729328] DEBUG (cli:370) Running: virsh --connect qemu:///system console vm-debian
Connected to domain vm-debian
Escape character is ^]
如果我按下 'Ctrl-]' virt-install 退出并且 qemu-kvm
进程仍在内存中。
这里到底发生了什么?难道我做错了什么?或许这种在libvirt环境下安装的方法已经过时了,还有更简单直接的方法吗?
谢谢。
更新
按照 DanielB 的建议,我在来宾端启用了 setial 端口并在串行控制台上启用了 virt-install 输出:
% virt-install --name debian10 --virt-type kvm --memory 1024 \
--disk path=/var/lib/libvirt/images/vm-debian10.img,size=10 \
--graphics none \
--console pty,target_type=serial \
--cdrom /var/lib/libvirt/images/debian-10.6.0-amd64-netinst.iso \
--location /var/lib/libvirt/images/debian-10.6.0-amd64-netinst.iso \
--network bridge=virbr0 \
--os-type linux --os-variant debian10 \
--extra-args console=ttyS0,115200n8 serial
我设法仅在启用图形的情况下继续安装,即将 --graphics vnc,listen=0.0.0.0
传递给 virt-install。这将启动 virt-viewer
(应该安装)。
这不是挂起 - 发生的事情是因为您使用了 -graphics none
,没有创建图形控制台,因此它假定您正在尝试进行串行控制台安装。 virt-install 正在显示串行端口输出,并让您输入输入,但是您的来宾 OS 似乎没有激活来宾端的串行端口,因此您看不到任何输出并且您键入的任何内容都将被忽略由客人。
IOW,此处解决根本原因的方法是需要以某种方式通过串行端口告知来宾 OS 安装程序 运行。替代解决方法是启用图形作为您的后续提到的