在在CentOS中部署KVMarrow-up-right 介绍了使用virtio启动安装Windows的方法:
Copy virt-install \
--name=win2016desktop \
--virt-type=kvm \
--boot cdrom,hd \
--os-type=windows \
--network=default,model=virtio \
--disk path=/var/lib/libvirt/images/win2016desktop.img,size=16,format=qcow2,bus=virtio,cache=none \
--cdrom=/var/lib/libvirt/images/win2016.iso \
--graphics vnc --ram=2048 \
--vcpus=2 注意:由于没有找到在Windows 2016安装时关闭驱动签名校验功能的方法,所以最后还是采用了先安装ide模式的全虚拟化磁盘,安装完操作系统之后,关闭驱动签名校验功能,然后再安装virtio驱动。详细方法见下述。
Windows 2016安装过程无法加载没有签名的virtio驱动
这里需要注意的是,Windows自身是没有携带virtio驱动的,所以此时安装选择目标磁盘时候会看不到虚拟磁盘:
则点击Load driver加载驱动。
此时,由于virsh-install只加载了/var/lib/libvirt/images/win2016.iso作为CDROM,尚未加入驱动光盘。
尝试fly添加驱动镜像:
但是发现cdrom和软盘设备不支持hotplug
参考 Attaching and updating a device with virsharrow-up-right
所以编辑一个/var/lib/libvirt/images/virtio-iso.xml配置文件内容如下,然后执行命令 virsh update-device win2016desktop /var/lib/libvirt/images/virtio-iso.xml
这里将CDROM设备作为hda是因为使用virsh-install启动安装时设置的--cdrom=/var/lib/libvirt/images/win2016.iso对应的设备名是hda(这个配置文件内容是通过virsh dumpxml win2016desktop输出中摘取cdrom部分修改得到的)
此时在Windows安装界面中选择browse按钮,选择驱动光盘,再点击OK
但是Windows安装程序会提示驱动没有包含签名错误No signed device drivers were found.Make sure that the installation media contains the correct drivers, and then click OK。
这个问题在Windows 2016安装中遇到,以前的Windows 2012等版本则没有驱动签名问题。
Windows Virtio Driversarrow-up-right :These drivers are cryptographically signed with Red Hat's vendor signature. However they are not signed with Microsoft's WHQL signature.
参考 Deploy Windows Server 2016 on Nutanix CEarrow-up-right 似乎驱动需要使用 Windows Virtio Drivers (0.1.126),不过我原先下载的稳定版本virtio-win.iso恰好就是virtio-win-0.1.126.iso。我推测是因为0.1.126发布日期和Windows 2016发布时间接近,有可能社区尚未更新签名所以不能够被Windows 2016所支持。
改为尝试最新的Latest virtio-win isoarrow-up-right 但是依然失败。
在Windows中关闭驱动签名校验的方法
参考 Top 2 Ways to Disable Driver Signature Enforcement on Windows 10/8.1/8/7/XP/Vistaarrow-up-right
原来Windows有一个test mode可以用来关闭签名验证
参考How to Disable Driver Signature Verification on 64-Bit Windows 8 or 10 (So That You Can Install Unsigned Drivers)arrow-up-right
不过,这个方法是需要先安装好操作系统,然后通过命令 bcdedit /set testsigning on 来关闭驱动签名验证
不过,很不幸,测试在Windows安装过程中使用上述方法无效(因为系统尚未安装无法对磁盘中操作系统配置进行修改)。同时,由于我是使用KVM虚拟机,没有找到向远程VNC发送F8进入Advanced Boot方法,所以,最后采用普通IDE磁盘安装完操作系统再替换磁盘驱动的方法。见下述。
安装Windows virtio驱动
当操作系统安装完成之后,我们可以通过向虚拟机田间virtio设备,使得Windows扫面并新增驱动。此时只要关闭掉驱动签名校验,就可以顺利安装上virtio驱动。详细步骤如下:
在命令行按钮右击鼠标选择run as administrator,然后执行命令
显示
此时virsh edit win2016desktop可以看到添加了如下一段配置
之后重启windows系统就会识别出新加的磁盘设备,此时Windows就会要求更新驱动,就可以安装对应的virtio驱动了。
再次编辑win2016desktop配置,修改网络设备配置如下
将原先的N2000网卡设备配置
修改成virtio设备
重启操作系统,并打开Device Manager,此时可以看到系统中有3个没有识别的设备
这3个设备就是virtio类型的网卡、内存Ballon、磁盘设备
选择升级驱动,然后扫描virtio驱动所在光盘,就可以更新驱动(因为已经关闭了驱动签名校验,所以可以升级)
将上述3个virtio设备驱动安装完成之后,可以重启一次系统确认设备工作正常。
再次修改win2016desktop,将默认的系统磁盘从普通的IDE类型修改成virtio类型,这样就可以提高系统磁盘性能
将
修改成
再次重启后,Windows系统使用的磁盘设备和网卡设备都会替换成virtio,此时网络和磁盘性能将有很大提高。