浅说Windows10 PE驱动集成(二)
23小时前 18
一般说来,PE不是过于精简,DISM++能够离线注入或者手动复制相关文件,导入相关注册表,设备驱动应该可以集成成功。

但是Microsoft Hyper-V Virtualization Infrastructure Driver集成了wvid.inf_amd64_7c50642b144b870d驱动,设备管理器仍然显示异常,类似这种设备的驱动集成就有点麻烦。驱动异常说明PE环境缺少必须的文件,有的可能还缺少必须的服务。实际上Microsoft Hyper-V Virtualization Infrastructure Driver设备驱动异常,就既缺少文件也缺少服务。

怎么查看缺少哪些文件?这里要用到一个小工具depends,用depends打开前面提到的Vid服务的vid.sys文件,如图。

sshot-23.webp

这是打开正常系统的vid.sys驱动文件,显示相关的文件列表如下:
\System32\NTOSKRNL.EXE
\System32\BOOTVID.DLL
\System32\CI.DLL
\System32\HAL.DLL
\System32\KDCOM.DLL
\System32\PSHED.DLL
\System32\drivers\CNG.SYS
\System32\drivers\KSECDD.SYS
\System32\drivers\MSRPC.SYS
\System32\drivers\WDFLDR.SYS
\System32\drivers\WINHVR.SYS
\System32\zh-cn\PSHED.DLL.mui

最后的一个\System32\zh-cn\PSHED.DLL.mui文件是\System32\PSHED.DLL的mui文件。
对比文件列表,不同的PE可能缺少的文件不同,缺少的文件自行复制到对应的目录。打包WIM测试,还是驱动异常。
与Vid.sysy驱动文件有关的文件是补齐了,驱动异常说明还缺少其他的文件甚至服务。
最省事的做法,将正常系统中与这个驱动类似的文件vm*.dll,vm*.sys都复制过去(包括对应的mui文件),将CatRoot\{F750E6C3-38EE-11D1-85E5-00C04FC295EE}文件夹中带HyperV,VM的文件也一起复制。
打包WIM测试,结果让人失望,还是异常。
怎么办?文件应该不缺,要缺的只有服务了。注册表虽然没有过度精简过,但是指不定有些服务在注册表里被精简了。
打开注册表HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services,与正常系统对比,重点关注VM开头的服务,将vmbus服务,VMBusHID服务,vmgid服务都添加上。
别忘了这些服务对应的驱动或文件也要添加。
如vmbus服务要注入wvmbus.inf_amd64_a192dbf28b4634a7驱动,vmgid服务要注入wvmgid.inf_amd64_3a0240393de08f95驱动,VMBusHID服务要复制VMBusHID.sys文件。
最简单最省事的办法,说起来还是不少,操作时还不能粗心大意,不要忘了mui文件,不要复制错文件夹等等。
再打包测试,打开设备管理器,有个小惊喜,驱动正常了!
sshot-24.webp
就为了去掉这个设备驱动的黄色小感叹号,来来回回折腾。总算是成功了。办法老土,我实在没有精准定位缺失哪些文件,注册表设置甚至服务的能力,只能采取大而化之的办法。如果要精简到极致,这个土办法不适合。要么能精确找到缺少的文件,注册表,要么一个一个文件添加测试,总能成功的。
列举的文件,注册表,服务仅限于此PE,即使相同的版本,不同的PE可能也会不同。只是给出驱动集成的思路和一般做法供参考,在PE中没有测试虚拟机,如果虚拟机不能运行,那还要补充其他文件和服务。

奖励
收藏
点赞 1
分享
往事随风
最新回复 (0)
返回