乐趣区

关于虚拟化:创建加载virtio驱动的Windows-10安装镜像

现在虚拟化曾经十分风行,当咱们应用 Linux 桌面环境时,能够通过装置 libvirt 和 QEMU 间接应用基于内核的虚拟化(KVM)来创立虚拟机并装置其余类型的操作系统。在基于 Linux 的服务器上,也能够通过 oVirt 或者 PVE 等基于 KVM 的虚拟化计划来实现虚拟机环境。

当咱们想通过官网 iso 零碎镜像装置比拟新的 Windows(例如 Windows 10,Windows Server 2019 等),在进入到抉择装置磁盘,会发现找不到创立的虚构磁盘,如下图所示

这是因为在官网的 iso 镜像中的 Widnows 未蕴含针对 KVM 的 virtio-win 驱动,因而咱们能够基于 Windows 的 iso 镜像,加载 virtio-win 的相应驱动之后,从新创立一个蕴含了 virtio-win 驱动的 iso 镜像文件。

对于 virtio-win 的更多信息,能够参考 https://www.linux-kvm.org/pag…。

前提条件

为了创立一个加载 virtio-win 驱动之后的 iso 镜像文件,咱们须要以下筹备:

  1. 具备管理员权限的 Windows 10 工作零碎并装置 Windows ADK
  2. Windows 10 的装置 iso 文件(这里以 Windows 10 作为例子)
  3. virtio-win 驱动的 iso 文件 (https://fedorapeople.org/grou…
  4. UltraISO 工具

筹备工作

创立工作目录

假如在你的 Windows 10 零碎上有 D 盘,那咱们在 D 盘创立相应的工作目录,以管理员权限关上 PowerShell,并执行

PS D:\> mkdir D:\mnt\windows_temp,D:\mnt\boot,D:\mnt\install,D:\virtio-win

提取 Windows 安装文件

应用 UltraISO 工具关上 windows 10 的 iso 文件,并将所有文件提取到目录 *D:\mnt\windows_temp* 下

而后给 Windows 的镜像文件受权读写

PS D:\> attrib -r C:\mnt\windows_temp\sources\*.wim /s

提取 virtio 驱动文件

应用 UltraISO 关上下载的 virtio-win 的 iso 文件,同样提取到目录 *D:\virtio-win* 下,而后查看有哪些 w10(针对 windowns10)的驱动

咱们能够看到在 0.1.196 版本中,蕴含了以下 w10(64 位)的驱动,为了不便前面一条命令加载所有驱动,咱们把这些驱动从新放到一个目录下

PS D:\> cd virtio-win\
PS D:\virtio-win\> mkdir w10
PS D:\virtio-win\> cp -r .\Balloon\w10\amd64\ .\w10\Balloon
PS D:\virtio-win\> cp -r .\NetKVM\w10\amd64\ .\w10\NetKVM
PS D:\virtio-win\> cp -r .\pvpanic\w10\amd64\ .\w10\pvpanic
PS D:\virtio-win\> cp -r .\qemufwcfg\w10\amd64\ .\w10\qemufwcfg
PS D:\virtio-win\> cp -r .\qemupciserial\w10\amd64\ .\w10\qemupciserial
PS D:\virtio-win\> cp -r .\qxldod\w10\amd64\ .\w10\qxldod
PS D:\virtio-win\> cp -r .\sriov\w10\amd64\ .\w10\sriov
PS D:\virtio-win\> cp -r .\viofs\w10\amd64\ .\w10\viofs
PS D:\virtio-win\> cp -r .\viogpudo\w10\amd64\ .\w10\viogpudo
PS D:\virtio-win\> cp -r .\vioinput\w10\amd64\ .\w10\vioinput
PS D:\virtio-win\> cp -r .\viorng\w10\amd64\ .\w10\viorng
PS D:\virtio-win\> cp -r .\vioscsi\w10\amd64\ .\w10\vioscsi
PS D:\virtio-win\> cp -r .\vioserial\w10\amd64\ .\w10\vioserial
PS D:\virtio-win\> cp -r .\viostor\w10\amd64\ .\w10\viostor

如果创立的是其余版本的 Windows 零碎,例如 Windows Server 2019,则提取对应目录(2k19/)下的驱动。

加载 virtio 驱动

须要加载 virtio 驱动到 Windows 镜像文件 boot.wiminstall.wim

加载驱动到 boot.wim

挂载提取进去的 D:\mnt\windows_temp\sources\boot.wim 文件到目录 *D:\mnt\boot* :

先获取镜像文件的索引

PS D:\> Get-WindowsImage -ImagePath D:\mnt\windows_temp\sources\boot.wim

ImageIndex       : 1
ImageName        : Microsoft Windows PE (x64)
ImageDescription : Microsoft Windows PE (x64)
ImageSize        : 1,657,563,910 bytes

ImageIndex       : 2
ImageName        : Microsoft Windows Setup (x64)
ImageDescription : Microsoft Windows Setup (x64)
ImageSize        : 1,809,575,703 bytes

而后挂载索引 2

PS D:\> Mount-WindowsImage -Path D:\mnt\boot\ -ImagePath D:\mnt\windows_temp\sources\boot.wim -Index 2

Path          : D:\mnt\boot\
Online        : False
RestartNeeded : False

接下来就是加载咱们之前提取进去的驱动

PS D:\> Add-WindowsDriver -Path D:\mnt\boot\ -Driver D:\virtio-win\w10\ -Recurse

能够应用上面的命令来查看驱动是否曾经加载进去

PS D:\> Get-WindowsDriver -Path D:\mnt\boot\

确定加载胜利后,卸载镜像挂载并保留

PS D:\> Dismount-WindowsImage -Path D:\mnt\boot\ -Save

加载驱动到 install.wim

同样,首先查看 install.wim 镜像的索引(不同索引指定了同一 iso 文件里的版本)

PS D:\> Get-WindowsImage -ImagePath D:\mnt\windows_temp\sources\install.wim

ImageIndex       : 1
ImageName        : Windows 10 教育版
ImageDescription : Windows 10 教育版
ImageSize        : 15,543,804,395 bytes

ImageIndex       : 2
ImageName        : Windows 10 企业版
ImageDescription : Windows 10 企业版
ImageSize        : 15,543,958,390 bytes

ImageIndex       : 3
ImageName        : Windows 10 专业版
ImageDescription : Windows 10 专业版
ImageSize        : 15,540,672,790 bytes

ImageIndex       : 4
ImageName        : Windows 10 业余教育版
ImageDescription : Windows 10 业余教育版
ImageSize        : 15,543,742,813 bytes

ImageIndex       : 5
ImageName        : Windows 10 业余工作站版
ImageDescription : Windows 10 业余工作站版
ImageSize        : 15,543,773,604 bytes

挂载想要加载驱动的版本,例如专业版

PS D:\> Mount-WindowsImage -Path D:\mnt\install\ -ImagePath D:\mnt\windows_temp\sources\install.wim -Index 3

Path          : D:\mnt\install\
Online        : False
RestartNeeded:False

而后加载驱动

PS D:\> Add-WindowsDriver -Path D:\mnt\install\ -Driver D:\virtio-win\w10\ -Recurse

卸载保留

PS D:\> Dismount-WindowsImage -Path D:\mnt\install\ -Save

同理,能够持续挂载其余索引(版本),执行以上操作,加载驱动,而后保留。

创立新的 iso 镜像文件

这里咱们应用 Windows ADK 带的 oscdimg 工具来创立 ISO 文件,装置完 Windows ADK 工具之后,进入目录 *C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg*

PS D:\> cd 'C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg'

PS C:\Program Files (x86)\Windows Kits\10\Assessment and Deployment Kit\Deployment Tools\amd64\Oscdimg> .\oscdimg.exe -lcn_windows_10_virtio -m -u2 -bD:\mnt\windows_temp\boot\etfsboot.com D:\mnt\windows_temp\ D:\ISOFiles\cn_windows_10_virtio_x64.iso

只想如上命令后,就会在目录 *D:\ISOFiles* 目录下创立出一个名为 cn_windows_10_virtio_x64.iso 的文件。

最初尝试应用新创建的 iso 文件来装置虚拟机零碎,在抉择抉择磁盘驱动器时,咱们就能够看到咱们创立的虚构磁盘了

接下来就能够失常装置了。

总结

本文以 Windows 10 的 iso 文件作为示例,演示了如何将 virtio-win 驱动加载进去,并且创立新的 iso 文件,使得在基于 KVM 的虚拟环境也能够顺利加载虚拟机磁盘进行 Windows 的装置。当然某些虚构厂家也会间接提供相应的签名驱动,在装置过程中能够通过多减少一个虚构 CD 驱动器来加载相应的驱动。

https://mengz.dev/posts/windo…

退出移动版