WimBuilder2后来者居上,支持制作Win10 RS5(1809)、19H1(1904)、19H2(1909)、20H1最新版的x86、x64 PE,我个人觉得很赞。
Project地址:https://github.com/slorelee/wimbuilder2
它的发布有个特别有意思的地方
2月新冠疫情没有发版
首先,下载好win10镜像
我用的msdn.itellyou.cn找的19H2(v1909)win10 x86 2020年1月update版
然后下载WimBuilder2最新稳定版
https://github.com/slorelee/wimbuilder2/releases
http://hello.wimbuilder.world/hello/download
运行WimBuilder.cmd,找到装载镜像后的sources路径,里面有install.wim,会自动识别,你只要把sources路径指定正确就行,后面的的install.wim和winre.wim都是自动识别,只需要你选下install.wim的版本,我选的4,4 是专业版
选好后点next
到这个界面先给复选框打勾,然后点next
接下来这一步根据自己的需要操作,预设是“默认”,我选了“全功能”
下图圈出的"配置"模块及其子模块尽量不要做任何调整,右侧圈出的不要选,选了全功能后这里默认就是留空的,意味着会自动加载注册表、.bat中会修改文件和注册表、自动卸载wim文件,这正是我们需要的傻瓜式方案,所以不能勾选
自定义驱动这里不知道WimBuilder2是如何处理,暂时略过
最后看一下首、尾的选择:
【首】
私人定制这里可以选一下
上图勾选的2个东西就是这个功能
【尾】
zz-ISO这里勾选下加载进度条,不要勾选Press any key
阶段性总结一下:选“全功能”很省事,只需要自己选下首尾就可以了,其他保持默认不要动。
以上提到的各点选好后点击next如下图先勾选“构建后立即创建ISO”,然后点“1-构建(日志)”,也可以先不勾选“构建后立即创建ISO”分第1步、第2步操作,分别点下图中的“1-构建(日志)”和“2-创建镜像”按钮,点了“1-构建(日志)”等完全结束后再点“2-创建镜像”。
耐心等待完全结束
过程中出现了一个报错,暂时忽略
正在自动commit提交更改,耐心等待完全结束
好事多磨,临最后出现了个意外如下
点确定后啥也没干就生成了BOOTPE.iso并显示了路径,目测大小700多M。能不能用暂时还不知道,一会儿看我测试的结果吧(刚才的弹窗都告诉了“无法创建可启动的ISO镜像”,也就是说最后创建成功的ISO镜像是不可启动的)。
测试的话是用EasyBCD添加ISO文件到启动菜单(我选的从内存加载)
添加好后选左侧的“编辑引导菜单”设定开机菜单的选择方式,可以等一定秒数自动进入默认菜单项,也可以不自动进入就一直等待用户手动选择进哪个菜单项
开机时选择刚添加的启动菜单进入查看效果
耐心等待加载完成,最后的结果呵呵了,就是不能启动
此时不要灰心,ISO不可启动不假,但没说之前生成的boot.wim不能启动呀,boot.wim在_Factory_\target\WIN10XPE\build\ 目录下
依然用EasyBCD,这次是添加WIM文件boot.wim到启动菜单
虽然能启动了,但是报了个莫名其妙的错,看起来跟IE有关。实测WinPE集成IE的效果很差,下次生成的时候不勾选IE试试,不选IE的话找个替代品--QTWeb,在后面挂载boot.wim添加驱动的时候顺便把QTWeb放到“挂载目录\Users\Public\Desktop\ ”即可
进入WinPE系统后,驱动并没有被集成,看不到硬盘、也没有网,看来还是需要手动执行加载驱动。
注意需要是Win10版的dism命令才行,win7的dism不行。
我把boot.wim挂载到了c:\pbtemp目录:
dism /mount-image /imagefile:"这里填boot.wim的绝对路径" /index:1 /mountdir:"c:\pbtemp"
注意创建空目录c:\pbtemp后给该目录设置Administrator和Everyone的所有权限,然后在Administrator用户登录状态下执行如下命令加载好所有驱动(驱动是在kvm官网下载的)
1、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\balloon.inf" /forceunsigned
2、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\netkvm.inf" /forceunsigned
3、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\pvpanic.inf" /forceunsigned
4、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\qemufwcfg.inf" /forceunsigned
5、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\qemupciserial.inf" /forceunsigned
6、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\qxldod.inf" /forceunsigned
7、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\vioinput.inf" /forceunsigned
8、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\viorng.inf" /forceunsigned
9、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\vioscsi.inf" /forceunsigned
10、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\vioser.inf" /forceunsigned
11、dism /add-driver /image:"c:\pbtemp" /driver:"C:\Users\Administrator\Desktop\x86\viostor.inf" /forceunsigned
加载驱动后执行commit提交更改
dism /unmount-image /mountdir:"c:\pbtemp" /commit
我后来把上面遇到的几个问题都解决了,遇到的其他问题也都解决了
问题1、报找不到MLANG.dll的问题(后来还发现在winpe运行diskgenius/partitionguru时报缺少oledlg.dll),这些都是因为我用了sources目录的boot.wim没用自动识别出来的winre.wim的缘故,后来我用了自动识别出来的winre.wim就不报缺少MLANG.dll和oledlg.dll了
问题2、自定义绿色软件放在哪里?放在\vendor\_PEMaterial_\PortableApps里
我在\vendor\_PEMaterial_\PortableApps里面放了很多绿色软件
这些绿色软件的快捷方式,我指定的路径是%systemroot%\PEMaterial\PortableApps\绿色软件目录名\.exe文件名,把快捷方式放到了\Projects\WIN10XPE\X\Users\Public\Desktop目录,这样运行WinPE后在桌面就能看到快捷方式了,效果图如下
上图有网是因为我集成好了虚拟化网卡驱动
问题3、云服务器上使用WinPE的话需要kvm虚拟化驱动如何加载?我是通过dism /mount-image命令挂载后再用dism /add-driver命令集成驱动的,这一点前面已经提到
问题4、生成可启动的ISO出错怎么解决?
删除_ISO_目录里的所有文件,然后把win10光盘根目录里的boot目录、efi目录、bootmgr文件、bootmgr.efi文件拷贝到_ISO_目录,如下图所示,当然sources目录也是要的,只不过需要sources目录为空,这样在生成ISO时就不会出错了。生成一次后,下次还想生成ISO文件的话需要手动复位一下,原因是_ISO_\boot目录里的bootfix.bin被重命名为bootfix.bin.bak了,如果你不把bootfix.bin.bak重命名回bootfix.bin,会报错找不到文件。
问题5、由于我加的绿色软件太多导致最终生成的ISO文件达到900多M,2GB内存的机器,跑起这个WinPE后内存利用率达到了70%,差不多1.5G的内存被用了,也就是说如果我选择加载这个900多M的ISO到内存运行,意味着存储+运行总共需要大约1000MB+1500MB≈2.5G内存,此时1G内存、2G内存的机器通过内存运行的方式跑WinPEt会出现花屏或者黑屏或者其他各种不符合预期的情况。目前看,2G内存的机器,通过硬盘加载的方式是可以运行的,因为存储的1G空间省了,内存2G只用1.5G,所以硬盘加载的方式没有问题。
问题6、进入WinPE后taskbar上有个重启/关机的快捷图标,我真觉得特别别扭,后来我研究了代码,找到了出处,就是在生成好boot.wim后,手动执行dism /mount-image命令挂载出来,找到PEMaterial\Autoruns\Startup\00-InitPinIcons.lua用记事本打开,把里面关于UI_shutdown的那句话删掉即可。