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

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

zonemu4周前 (08-02)技术文章13

在进行 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)父组件通过 属性 向子组件传递数据,子...

「 VUE3 + TS + Vite 」父子组件间如何通信?

组件之间传值,大家都很熟悉,涉及到 VUE3 +TS 好多同学就无从下手了,所以分享这篇文章,希望看完后提起 VUE3+TS 能够不慌不忙。平时使用的函数如:ref、reactive、watch、co...

vue3源码分析——实现组件通信provide,inject

引言<<往期回顾>>vue3源码分析——rollup打包monorepovue3源码分析——实现组件的挂载流程vue3源码分析——实现props,emit,事件处理等vue3源...

程序员项目经理如何调动组员积极性

#这个方法应该很适合程序员都说程序员是比较傲娇,有点小自负(有的是相当,那不叫自负,那是实力的体现好吗),略微呆萌,自尊心偏小强的一类族群。是吗?中招了吗?作为管理好几个组员,要完成一个大项目的项目经...

我常在使用的几个 VIM 插件(我常在使用的几个 vim 插件)

今天给你分享几个我觉得还不错的 VIM 插件,也许能给你带来一点「惊喜感」。vim主题插件 你完全可以让你的编辑器按照你喜欢的样子呈现,在 vimcolors 这个网站中,汇集了很多的主题,你可以进去...

VIM配置整理(vim配置教程)

一、基本配色set number set showcmd set incsearch set expandtab set showcmd set history=400 set autoread se...