Windows 系统添加 VirtIO 驱动(Windows ISO 安装镜像添加驱动)
为什么要在 ISO 镜像里添加驱动?而不是在进系统以后装驱动?一切都是形势所迫。如果你也是爱折腾的人,那么这也会成为一个有用的方案之一。
最近,因为在给公司研究部署 OpenStack,在制作初始镜像(也就是使用 ISO 进行全新安装)的时候,发现 Windows 自带的驱动不支持 KVM 的硬盘控制器,导致找不到硬盘而无法安装,于是解决方案便是将 VirtIO 的驱动集成进 Windows 的 ISO 安装镜像。顺着这个思路,我尝试了我熟悉的 WDS 方案(一个 Windows 部署方案,支持将驱动导入 WIM,并可将 WIM 导出),发现 VirtIO 的驱动是未签名的,无法使用 WDS 集成驱动...(微软要求 X64 驱动必须签名才可使用。“强制禁用驱动签名” 也只是针对系统,对 WDS 服务无效。)
于是,便折腾出了另一套方案,使用微软的 WAIK 工具包解包 WIM、强制上驱动..(支持导入未签名驱动)
这里,我只介绍 X64 系统环境下向 Windows ISO 镜像中添加 VirtIO 驱动,如果你是想添加其他驱动,或者是 X86(32 位)系统环境,请在学习本篇笔记后自行举一反三。(这并不难 ←_←
本篇笔记仅适用于 Windows Vista 及更高版本、Windows Server 2008 及更高版本系统 ISO 镜像。
不要一出问题就找我问这问那,请先仔细检查自己的每一步操作!求助不要评论,直接发邮件。
需要下载准备的一些东西
Windows 微软原版 ISO 镜像 可以在这里下载到→msdn.itellyou.cn UltraISO 非常好用的一款 ISO 镜像软件,收费软件,且很便宜,买正版还是用盗版请自行决定。【中文官网】 Windows AIK 工具包 【微软官网下载】【百度网盘(f8dd)】(先在 cmd 里执行 dism,如果提示不是内部或外部命令,再下载工具包。如果有其他提示,说明系统已自带工具,无需下载安装。) VirtIO 驱动 QEMU-KVM 所使用虚拟硬件的 Windows 驱动。【外网下载】【百度网盘(fkkb)】
安装 WAIK 工具包
1. 先验证一下系统是否自带了工具包。完整版(原版)Windows10 已集成工具。先在 cmd 中执行 dism,如果提示不是内部或外部命令,再安装,否则跳过这一部分,直接到下面准备 WIM 镜像文件的部分。
2. 使用 UltraISO 挂载 WindowsAIK 的 ISO 镜像到虚拟光驱。(或者使用你电脑上任意一款压缩软件解压整个 ISO 镜像)
3. 运行 wAIKAMD64 安装工具包。
准备 WIM 映像文件
1. 使用 UltraISO 挂载 Windows ISO 镜像到虚拟光驱。(或者使用你电脑上任意一款压缩软件打开 ISO 镜像)
2. 在 sources 文件夹下复制出(或使用压缩软件提取出)boot.wim
和install.wim
两个文件。
boot.wim 是引导进入的安装环境,它缺少驱动时会在选择安装分区步骤时提示找不到硬盘、需要加载驱动等;install.wim 是系统映像,最终安装的系统文件都在这里面,给它添加驱动,安好系统就不用再手工打驱动了。一次性添加好驱动这对于同配置硬件环境批量安装系统的工程来讲能节省大量时间和精力。
添加驱动
1. 在 D 盘(或其他位置)新建一个文件夹mnt
。
2. 使用 UltraISO 挂载 VirtIO 驱动 ISO 镜像到虚拟光驱。
这里我们一般只需要 3 个驱动:Balloon
、NetKVM
、viostor
。你也可以直接使用你电脑上任意一款压缩软件直接解压出这三个文件夹。然后进入目录看一看,按你的 ISO 镜像中系统的版本信息确定驱动的路径。例如,我的 ISO 是 WindowsServer2012R2 64 位,那么驱动就是2k12r2\amd64\
这个目录下面的。
3. 以管理员身份运行 cmd 或 PowerShell,并进入 Windows AIK 工具包中 Dism 的所在目录,我的是C:\Program Files\Windows AIK\Tools\amd64\Servicing
(如果系统已自带 dism 工具,则无需进入任何目录)
4. 查看 wim 映像信息:
- dism /get-wiminfo /wimfile:D:\install.wim
列出的信息便是这个 ISO 镜像所包含的所有系统版本。其中的 “索引” 便是我们下面要用到的版本编号。
5. 挂载 wim 镜像:
- dism /mount-wim /wimfile:D:\install.wim /index:1 /mountdir:D:\mnt
这里的 “index” 就是上一步中看到的索引编号。
6. 挂载完毕后,添加驱动:
- dism /image:D:\mnt /add-driver /driver:F:\viostor\2k12R2\amd64\viostor.inf /forceunsigned
其他两个或者更多驱动都是执行这个命令来添加驱动。驱动指定到 inf 配置文件。最后的/forceunsigned
只有确定是未签名的驱动时才用的参数,微软认证的、签名的驱动不需要加这个参数。VirtIO 的 X64 驱动几乎都是未签名的。
7. 添加完驱动,查看一下驱动情况:
- dism /image:D:\mnt /get-drivers
8. 确定驱动已经添加后,卸载并保存 wim 映像:
- dism /unmount-wim /mountdir:D:\mnt /commit
9. 重复 4~8 步骤,为 boot.wim 添加驱动。
install.wim 中的多个系统版本,你可以选择性添加驱动。但 boot.wim 中的所有版本建议都添加驱动。
封装新的 ISO 镜像
1. 使用 UltraISO 打开原 Windows ISO 安装盘镜像。
注意,这里可就不能使用压缩软件了,否则会丢失 ISO 的引导数据。
2. 在 sources 文件夹下,删除boot.wim
与install.wim
。
3. 将添加好驱动的boot.wim
与install.wim
拖到 sources 下。
4. 点击【文件】→【另存为】,保存出一个新 ISO 镜像即可。
作者 Hazx