我有一台 Ubuntu 14.10 (x64) 主机,并且正在使用 KVM 在其上设置 Windows 2012 R2 客户虚拟机。
我正在使用virt-install
命令来设置一切。
我已经设置了一个桥接网络,/etc/network/interfaces
如下所示:
# The primary network interface
auto br0
iface br0 inet dhcp
bridge_ports eth0
bridge_stp off
bridge_maxwait 0
bridge_fd 0
我的virt-install
命令行是:
virt-install --connect qemu:///system --arch=x86_64 -n win2012 --ram 4096 --cpu host --vcpus=2 --hvm --disk size=80,sparse=false,format=raw,bus=virtio -
-cdrom /srv/sunix/en_windows_server_2012_r2_with_update_x64_dvd_6052708.iso --os-type=windows --os-variant=win2k8 --network bridge=br0,model=virtio --noautoconsole
Starting install...
Allocating 'win2012-1.img' | 80 GB 00:00
Creating domain... | 0 B 00:01
Domain installation still in progress. Waiting for installation to complete.
似乎在那个点等待了相当长一段时间。我想使用 vnc 连接到盒子看看发生了什么。
尽管我使用了--noautoconsole
,但我的理解是 VNC 显示仍应默认创建。但是,这是 的输出vncdisplay
:
virsh vncdisplay win2012
error: Failed to get VNC port. Is this domain using VNC?
这是输出domiflist
:
virsh domiflist win2012
Interface Type Source Model MAC
-------------------------------------------------------
vnet0 bridge br0 virtio 52:54:00:1d:dd:ab
但是,根据我的本地 DHCP 服务器,该设备尚未尝试声明 DHCP 租约。
我想这可能是因为virtio
我选择了网络驱动器,而 Windows 2012 R2 并不支持它。
但是,还有什么办法可以连接到盒子吗?
另外,您在我设置这位客人的方式中发现什么问题吗?
答案1
我会明确地在此处指定--graphics vnc
,以确保万无一失。在安装 SPICE 客户机工具时,请务必将其更改为 SPICE。
另外,您选择 Windows 2008 作为要安装的操作系统。为什么不选择 2012 R2?--os-variant win2k12r2
答案2
VM VNC 有两种类型,
- 由虚拟机管理程序(又名 qemu)提供的 VNC。
- 并且 VNC 由 VM 自身提供。
显然,libvirt 和 qemu 不知道“虚拟机自身提供的 VNC”,cmd“virsh vncdisplay”实际上从“虚拟机管理程序提供的 VNC”中提取 vnc 绑定信息,而您的 virt-install cmd 行并没有指示 libvirt 这样做。
因此,您的案例与客户网络信息无关,并且@Michael Hampton 是正确的,您应该在构建虚拟机时指定“vnc 绑定信息”。
如果您想保留当前的 VM,但需要向其附加“vnc bind info”,方法如下:
EDITOR=vim virsh 编辑 ${your domain} 和如下部分:
<graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0' keymap='en-us'>
<listen type='address' address='0.0.0.0'/>
</graphics>
然后关闭虚拟机并重新启动。我希望您能够“virsh vncdisplay”。:)