如何安装virtio驱动(Windows)

最近更新时间:2018-08-07 20:39:58

1 安装virtio驱动

Windows镜像需要用户自行安装virtio驱动。

下面简单介绍一下在KVM环境下,为Windows系统安装驱动的方法。

驱动文件准备

下载地址:https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/archive-virtio/virtio-win-0.1.149-2/ 选择virtio-win-0.1.149.iso 文件下载

创建占位盘的步骤为:

1.提前创建6个小用量(10GB)QCOW2格式的虚拟磁盘文件,分别模拟swap disk(1个)与数据盘(5个);

2.假设创建的另个占位盘的命名(disk.swap,disk1,disk2,disk3,disk4,disk5),这在编辑Libvirt XML配置文件时,对应的virtio PCI设备号,分别是0x06,0x08,0x09,0x0a,0x0b,0x0c 注意:virtio PCI设备号的0x5,与0x7被其他设备占用,不能使用,稍后会有介绍其用于什么设备。

网络: 需要有模拟线上环境的双网桥网络,分别模拟对应内网与外网,如:br0,br_vm等。

配置: 将要安装virtio驱动的镜像和上边提到的占位盘、网络和下载包含驱动文件的ISO文件的信息添加到要创建的虚机的libvirt xml中。之后启动虚机,就可以通过VNC等方式进入虚机内部进行安装配置。

安装: 如果按照上边的步骤执行完成,进入Windows虚机后,进入Windows工具”设备管理器”中,会发现很多带有问号的设备,它们就是virtio设备,目前Windows没有关于这些设备的驱动所以显示的是问号。

微信图片_20180621173522.png

依次右键选择有问号的设备,选择”更新驱动程序软件”,在弹出的对话栏中选择”浏览计算机以查找驱动程序软件”,

微信图片_20180621173555.png

微信图片_20180621173630.png

由于之前的virtio驱动文件已经现在配置在了这台虚机的libvrit xml中,它将以分区挂载的形式显示,如下图这种情况,在输入框中选择’D:\’,点击下一步,安装程序能够自动检测驱动程序,当然用户可以指定准确的路径进行安装。

微信图片_20180621173704.png

微信图片_20180621173728.png

详细细节请看以下实例。

如下是在KVM环境下为Windows2016安装驱动的例子。

例如:

目前要安装virtio驱动的镜像名为win_2016_dc_zh_64bit.img.org其内部系统盘大小为50G,镜像格式为qcow2。

qemu-img create -f qcow2 win_2016_dc_zh_64bit.img.org 50G

①.创建占位盘 执行如下命令创建6个大小为10G的占位盘

  qemu-img create -f qcow2 Windows_Server_2016.1.ebs 10G

  qemu-img create -f qcow2 Windows_Server_2016.2.ebs 10G

  qemu-img create -f qcow2 Windows_Server_2016.3.ebs 10G

  qemu-img create -f qcow2 Windows_Server_2016.4.ebs 10G

  qemu-img create -f qcow2 Windows_Server_2016.5.ebs 10G

  qemu-img create -f qcow2 Windows_Server_2016.6.ebs 10G

②.创建虚机libvirt xml

domain|devices部分中占位盘和网卡,需严格按照如下xml进行配置,并将包含virtio驱动ISO以设备形式添加。

<devices> <emulator>/usr/libexec/qemu-kvm</emulator> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/test/win_2016_dc_zh_64bit.img.org'/> <target dev='hda' bus='ide'/> <address type='drive' controller='0' bus='0' target='0' unit='0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/test/Windows_Server_2016.1.ebs'/> <target dev='vdb' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/test/Windows_Server_2016.2.ebs'/> <target dev='vdc' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x08' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/test/Windows_Server_2016.3.ebs'/> <target dev='vdd' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x09' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/test/Windows_Server_2016.4.ebs'/> <target dev='vde' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0a' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/test/Windows_Server_2016.5.ebs'/> <target dev='vdf' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0b' function='0x0'/> </disk> <disk type='file' device='disk'> <driver name='qemu' type='qcow2' cache='none'/> <source file='/test/Windows_Server_2016.6.ebs'/> <target dev='vdg' bus='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x0c' function='0x0'/> </disk> <disk type='file' device='cdrom'> <driver name='qemu' type='raw'/> <source file='/test/virtio-win-0.1.149.iso'/> <target dev='hdc' bus='ide'/> <readonly/> <address type='drive' controller='0' bus='1' target='0' unit='0'/> </disk> <controller type='usb' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x2'/> </controller> <controller type='ide' index='0'> <address type='pci' domain='0x0000' bus='0x00' slot='0x01' function='0x1'/> </controller> <interface type='bridge'> <mac address='fa:16:3e:32:19:f1'/> <source bridge='br_vm'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> <interface type='bridge'> <mac address='ea:16:3e:57:7a:fa'/> <source bridge='br0'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x04' function='0x0'/> </interface> <serial type='pty'> <target port='1'/> </serial> <console type='pty'> <target type='serial' port='1'/> </console> <input type='tablet' bus='usb'/> <input type='mouse' bus='ps2'/> <graphics type='vnc' port='-1' autoport='yes' listen='0.0.0.0'/> <video> <model type='vga' vram='9216' heads='1'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x02' function='0x0'/> </video> <memballoon model='virtio'> <address type='pci' domain='0x0000' bus='0x00' slot='0x07' function='0x0'/> </memballoon> </devices>

注意:

在以上XML中 如下设备保留,不能用于其他设备:

1.内网网卡:MAC为:FA:16:3E:XX:XX:XX 对应PCI Bus设备号为0x03

2.公网网卡:MAC为:EA:16:3E:XX:XX:XX 对应PCI Bus设备号为0x04

3.Windows Guest C盘(Windows镜像所在的虚拟磁盘)本身使用的设备号0x5予以保留

4.video设备的PCI 设备号0x02保留

5.memballoon的PCI设备号0x07保留

③.安装相关驱动

Ⅰ.右键计算机->属性->进入设备管理器。可以看到SCSI 控制器和以太网控制器的驱动没有安装。 选由上而下第一个以太网控制器,右击,点击“更新驱动程序”,之后选择“浏览计算机以查找驱动程序软件”。

微信图片_20180621174655.png

填写安装驱动程序的路径,按照上边的libvirt xml配置后,虚机只有一个CD-ROM,路径:"D:\",选择“下一步”。

在安装驱动程序时,Windows会警告此驱动程序没有经过微软签名,此时点击“始终信任Red Hat,Inc的软件”,然后点击安装。

同上,安装第二个以太网控制器驱动程序。

完全安装成功的状态如下。

微信图片_20180621174740.png

Ⅱ.同上一步进入Windows的设备管理器。

右击“SCSI控制器”,点击“更新驱动程序”,之后选择“浏览计算机上的驱动程序”。

填写安装驱动程序的路径,如果只有一个CD-ROM,路径:"D:\",选择“下一步”。

微信图片_20180621174818.png

同上,安装第二~六个SCSI控制器驱动程序。

完全安装成功的状态如下。

微信图片_20180621174852.png

Ⅲ.将虚机关机,编辑Libvirt XML中Windows Guest 所使用虚拟磁盘总线类型与驱动类型如下,使系统盘也使用virtio驱动:

变更前:

<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='none'/>
  <source file='/test/win_2016_dc_zh_64bit.img.org'/>
  <target dev='hda' bus='ide'/>
  <address type='drive' controller='0' bus='0' target='0' unit='0'/>
</disk>

变更后:

<disk type='file' device='disk'>
  <driver name='qemu' type='qcow2' cache='none'/>
  <source file='/test/win_2016_dc_zh_64bit.img.org'/>
  <target dev='vda' bus='virtio'/>
  <address type='pci' domain='0x000' bus='0x00' slot='0x05' function='0x0'/>
</disk>

Ⅳ.重新启动虚机,成功登入系统,设备管理器中无未知设备,驱动无异常,完成驱动安装。

金山云,开启您的云计算之旅

立即注册