当前位置:首页 > 技术文章 > 正文内容

使用 DISM 将驱动程序集成到 Windows 安装镜像

zonemu3个月前 (08-02)技术文章29

在进行 Windows 系统安装时,有一些设备会出现一种令人困扰的状况:机器自带的鼠标与键盘均毫无反应,必须外接鼠标和键盘方可进行操作。追根溯源,此乃 Windows 安装镜像中缺失相应的键盘与鼠标驱动所致。

我本人的 Surface Pro 9 就曾遭遇这一难题。当使用普通的 Windows 11 安装盘进行系统安装时,进入安装界面后,鼠标和键盘即刻陷入“罢工”状态,只能依靠外接鼠标和键盘来继续操作。然而,即便外接了键盘和鼠标,新的问题又接踵而至——网卡驱动缺失。这便形成了一个棘手的死循环:没有网卡驱动则无法下载驱动程序,而没有驱动程序又无法连接网络。

皇天不负有心人,我最终在网络上找到了定制 Windows 安装镜像的方法。通过此方法,能够将自己的驱动程序添加到 Windows 安装镜像之中。如此一来,在安装界面便能顺畅使用 Surface Pro 9 自带的键盘与网卡了。这个方法对于想给苹果公司的Mac电脑安装Windows系统同样适用。

首先,从硬件制造商的官方网站获取驱动程序,下载的驱动程序通常是自解压的 exe 或 zip 存档文件,需要将其解压到一个单独的文件夹中,该文件夹应包含.inf、.cat 和.sys 等驱动文件。

我的是微软Surface Pro 9设备,驱动程序和固件更新页面在这里:“
https://learn.microsoft.com/zh-cn/surface/manage-surface-driver-and-firmware-updates”。下载并运行驱动安装程序,安装程序会把Surface设备的驱动程序文件放在“C:\Program Files\SurfaceUpdate\”目录下。

苹果Mac电脑的Windows驱动程序可以通过“启动转换助理”程序下载:

如果实在找不到设备的驱动程序了,也可以从已经安装好驱动程序的Windows计算机中,使用 Export-WindowsDriver命令导出所有第三方驱动程序:

# 将当前系统中的第三方驱动导出到Drivers目录
Export-WindowsDriver  -Online  -Destination  ".\Drivers\"

从微软官方网站下载 Windows 11 磁盘映像文件(即 .iso 格式的文件),可访问该链接:
https://www.microsoft.com/zh-cn/software-download/windows11。需注意,并非下载“创建 Windows 11 安装媒体”。访问该网页后,向下滚动页面,寻找到“下载适用于 x64 设备的 Windows 11 磁盘映像 (ISO)”选项。选定所需版本之后,点击下方的“立即下载”按钮,即可开始下载该 .iso 文件。

准备 Windows 安装镜像:挂载上一步下载的Windows11磁盘映像文件(在Windows11操作系统中,双击下载的iso文件或右键点击文件选择“装载”,即可自动把文件挂载成为虚拟光盘),在挂载的光盘中找到 sources 目录下的 install.wim文件,这就是 Windows 安装映像文件。以管理员身份打开一个PowerShell窗口,进入到安装光盘的sources目录,执行以下命令,查看此光盘中有哪些版本,记住你想要安装的版本索引编号,下一步会使用。

dism /Get-ImageInfo /ImageFile:install.wim

挂载install.wim映像文件:在C盘创建一个空目录,把虚拟光盘中的install.wim文件复制到该目录下,修改文件属性,去掉只读属性。之后,再创建一个空目录用于挂载该文件,挂载之后就可以对install.wim文件进行修改,并添加驱动文件。这里假设install.wim文件复制到C:\MyWin11,挂载目录创建在C:\MyWin11\Mount,虚拟光盘的盘符是E,计划安装的版本索引值是1,执行以下命令,以进行挂载:

cd  C:\MyWin11
dism  /Mount-Image  /ImageFile:install.wim  /Index:1  /MountDir:C:\MyWin11\Mount

添加驱动程序:根据第一步准备的驱动程序类型(inf驱动文件或是cab包文件),选择相应的命令进行驱动程序添加操作。

如果是inf驱动文件,执行以下命令添加驱动程序,/recurse参数告诉dism程序把/Driver参数目录下的所有子目录下的驱动程序都添加进去:

dism  /Image:C:\MyWin11\Mount  /Add-Driver  /Driver:"驱动程序所在目录"  /recurse

如果是cab包文件,执行以下命令添加驱动程序,可添加多个/PackagePath参数,用来指定要添加的cab驱动文件:

dism  /Image:C:\MyWin11\Mount  /Add-Package  /PackagePath:"cab文件名1"  /PackagePath:"cab文件名2"

提交修改并卸载目录:添加完驱动程序后,需要卸载已挂载的 Windows 映像,并保存所做的更改,将驱动文件写入install.wim映像文件。

dism  /Unmount-Image  /MountDir:C:\MyWin11\Mount  /Commit

当完成集成了定制驱动程序的全新 install.wim 文件制作后,我们可参考以下两篇文章,运用 dism 命令行工具来进行 Windows 系统的安装。这两篇文章分别为:

  1. 安装Windows多系统:巧用 VHD 实现多 Windows 系统共存:从原理到实战
  2. 实现快照与快速回退:Windows差分VHD文件的妙用与实践指南

相关文章

Vue父子组件参数传递方法(vue父子组件传参方式)

在 Vue 中,父子组件之间的参数传递是常见的需求,主要通过 Props 和 自定义事件 实现。以下是详细说明和代码示例:一、父组件向子组件传递参数(Props)父组件通过 属性 向子组件传递数据,子...

Web前端全套教程+视频包含JavaScript、Vue等

写在前面:web前端从入门到精通经典教程,老师精心讲,想从事编程或者数据分析行业的小伙伴点进来,只需你评论并关注私信留言“前端”。便可免费获取。WEB前端简介:WEB前端工程师,也叫Web前端开发工程...

HTML5培训的学习大纲

第一阶段前端开发基础:1.HTML标签语言(xhtml+html5)行业介绍,本地环境配置,sublime编辑器学习使用,制作html标准模板,css基础,html常用标签(一),html常用标签(二...

一键看懂Html5,就这么简单(查看html的app推荐)

HTML5是WEB开发世界的一次重大的改变,事实上不管你是否喜欢,它都是代表着未来趋势。曾几何时,当HTML5出现在web端开发领域的时候,并没有引起太多人的注意,究其原因,一方面是它还没有被广泛的支...

js中数组filter方法的使用和实现(js实现数组的indexof方法)

定义filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。语法var newArray = arr.filter(callback(element[, index[, se...

面试官-如何实现数组和 List 之间的转换?

数组和List是Java开发中常见的两种数据结构,那么如何实现二者之间的快速转换就成了面试官常问的考点之一,下面我们我们就来从数组转List和List转数组两个方面来展开介绍一下。数组转List方法...