准备工作
一台电脑,带两块磁盘,一块用于安装系统,一块用于保存成果,我们下面分别称之为系统盘和数据盘。
之所以安装系统使用单独的磁盘,方便我们对整个磁盘进行清除等操作,而不会影响到我们的成果。
在数据盘上建立osdiy,在osdiy下面建立mount子目录,用于挂载修改镜。
将需要封装的系统原版镜像(非ghost的,可以上msdn我告诉你这个网站下载),放到osdiy目录下。
驱动总裁万能网卡版,放到osdiy目录下,其目录名应该为DrvCeonw。
一个PE启动盘,建议使用Edgeless。Edgeless以ventory为核心,没有广告插入(很多PE启动盘,只要使用它启动过电脑,电脑就被植入广告)。
安装母版系统
使用准备好的原版镜像,安装好操作系统,检查更新,并更新补丁(多次重启并检查,直到没有可更新的补丁为止)。
执行sysprep,进入审核模式。
sysprep在"系统盘:\winDows\system32\sysprep“目录下。
使用命令的方式为: sysprep /audit /generalize /reboot
参数audit表示下次启动进入系统审核模式。generalize表示通用化,意味着可以再次将系统部署到其他电脑上。reboot表示执行完sysprep之后,重启电脑,可以根据自己的需求设定,但不影响下次启动系统进入审核模式。
制作审核模式母版镜像
在系统审核模式下,每次进入系统都会弹窗sysprep对话框,在该模式下的工作未做完之前,千万别点【确定】,否则将前功尽弃。
在系统审核模式下,我们可以安装任何我们想要的软件,并进行相关配置。
超级大网管将母版分成两种,基础母版和专业母版。
基础母版安装使用广泛的常用软件,如微信、QQ、远程、WPS。专业母版在基础母版的基础上增加AutoCAD、PS等。
我们先制作基础母版,专业母版不体现在本例中。
安装所需软件后,将母版做个镜像备份。
使用PE盘启动电脑,进入桌面后,启动命令控制台,进入数据盘osdiy目录。执行以下命令:
dism /Capture-Image /Imagefile:win10_audit_en /CaptureDir:c: /Name: win10_audit_ent_base
Dism命令通常会带有,如果没有,拷贝一个绿色包到osdiy目录即可。
ImageFile告诉dism,捕获的映像文件名和路径,如果不带路径,则保存在当前目录下。
CaptureDir告诉dism需要捕获的系统所在盘。
Name参数也是必须的,一个wim文件中可以保存多个镜像,name有助于区分这些镜像。
这样我们的审核模式的母版镜像就制作好了,方便后面重复使用。
捕获可重复部署镜像
到此,我们实际上已经拥有一个可以重复部署的系统了,所需要做的就是进一步将其封装,好了,我们继续。
前面完成母版镜像,重启电脑,进入审核模式的系统。
运行sysprep,系统清理操作选择“进入系统全新体验(OOBE)”,勾选“通用”,关机选项为“重新启动”。
如果是命令行模式为: sysprep /oobe /generalize /reboot
当sysprep命令执行完成后,系统会按照我们的选择自动重启。
这里千万不要仍有系统启动,我们需要立刻干预,选择我们的PE盘启动。
进入PE后,打开命令行窗口(cmd),进入osdiy目录,执行下面的镜像捕获命令。
dism /Capture-Image /ImageFile:win10_en /CaptureDir:c: /Name: win10_ent_base
完成后,我们就有一个可以拿到其他电脑上进行部署的wim系统镜像win10_en了。
但这个镜像还有一些我们需要优化的内容:1、安装过程与原版系统的安装过程一样,我们希望对安装过程进行简化,比如不需要进行隐私设置、输入用户名等;2、其他电脑上可能缺少很多驱动,我们需要补充。
下面我们继续。
镜像改造
现在,你需要使用U盘启动电脑,或者就使用前面的系统直接启动等待其部署完成。
好了,在osdiy目录下,我们有一个重要的镜像文件win10_en。我们要对它进行改造,第一步就是驱动程序添加。
执行下面的命令挂载镜像:
DISM /Mount-image /imagefile:win10_en /Index:1 /mountDir:mount
完成后,我们就可以在mount目录看到镜像文件中的内容,且可以对其进行修改。
新建 mount/windows/DrvCeonw目录,然后把驱动总裁的以下内容复制进去。
位置可不能错哦,因为我们后面的应答文件中的配置,使用的是这个目录。
接下来我们需要一个自动应答文件,来指示windows系统部署程序,如何改变部署过程。
在osdiy目录下,右键并新建一个una文本文件,并将下面的内容粘贴进去,并保存:
<?xml version="1.0" encoding="utf-8"?> <unattend xmlns="urn:schemas-Microsoft-com:unattend"> <settings pass="generalize"> <component name="Microsoft-Windows-PnpSysprep" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="; xmlns:xsi=";> <DoNotCleanUpNonPresentDevices>true</DoNotCleanUpNonPresentDevices> <PersistAllDeviceInstalls>true</PersistAllDeviceInstalls> </component> </settings> <settings pass="specialize"> <component name="Microsoft-Windows-Deployment" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="; xmlns:xsi=";> <RunSynchronous> <RunSynchronousCommand wcm:action="add"> <Order>2</Order> <Path>net user administrator /active:yes</Path> <Description>Enable Admin Account</Description> </RunSynchronousCommand> <RunSynchronousCommand wcm:action="add"> <Order>21</Order> <Path>%windir%\DrvCeonw\DrvCeo.exe /s</Path> <Description>InDeploy</Description> </RunSynchronousCommand> </RunSynchronous> </component> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="; xmlns:xsi=";> <CopyProfile>true</CopyProfile> <TimeZone>China Standard Time</TimeZone> </component> <component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="; xmlns:xsi=";> <Identification> <JoinWorkgroup>WORKGROUP</JoinWorkgroup> </Identification> </component> </settings> <settings pass="oobeSystem"> <component name="Microsoft-Windows-Shell-Setup" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="; xmlns:xsi=";> <LogonCommands> <AsynchronousCommand wcm:action="add"> <Order>1</Order> <CommandLine>%windir%\DrvCeonw\DrvCeo.exe /pe</CommandLine> <Description>Desktop</Description> </AsynchronousCommand> </LogonCommands> <OOBE> <ProtectYourPC>2</ProtectYourPC> <SkipMachineOOBE>true</SkipMachineOOBE> <SkipUserOOBE>true</SkipUserOOBE> </OOBE> <UserAccounts> <LocalAccounts> <LocalAccount wcm:action="add"> <Description>Default Administrator Account</Description> <DisplayName>Administrator</DisplayName> <Group>Administrators</Group> <Name>Administrator</Name> </LocalAccount> </LocalAccounts> </UserAccounts> </component> </settings> <cpi:offlineImage cpi:source="wim:e:/osimagemaker 10 Enterprise LTSC 2019" xmlns:cpi="urn:schemas-microsoft-com:cpi" /> </unattend>
当然,你也可以自行制作你的应答文件,只需要安装Windows Assessment and Deployment Kit - Windows 10,关于应答文件的制作,超级大网管有其他文章描述,这里省略。
接下来执行命令:
copy una mount\windows\Panther\una /Y
好了,应答文件和驱动我们都放入mount目录。
执行下面的命令,提交更改:
Dism /Unmount-image /MountDir:mount /Commit
上面的命令执行完成后,mount目录下变空了,更改也会提交到win10_en文件中,我们可以使用该镜像文件,往其他电脑上部署(安装)啦。
Dism部署windows镜像
我们有多种办法可以部署wim文件,比如将其改名为in,放到windows原版安装盘的sources目录下,使用原版盘进行部署。
可以使用NT安装器等第三方工具进行部署,相信很多人都熟练使用这个方法,不过这种方法我们的系统很容易被植入广告。
超级大网管的小伙伴们,喜欢使用微软的dism进行部署,下面我们看看这个方法如何操作。
使用PE盘启动电脑,打开命令行窗口,进入osdiy目录。
执行命令:
Dism /Apply-Image /ImageFile:win10_en /Index:1 /ApplyDir:c:
完成后,我们的系统被部署到系统盘(通常是c盘)。
下面还需要建立启动项,执行命令:
c:\windows\system32\bcdboot c:\windows /p
完成后,重新启动电脑,就可以进入我们设计好的自动部署过程,等待进入桌面即可。
可能碰到的问题
1、sysprep无法验证你的windows安装。
原因多半是系统没有更新完成所致,再检查更新,并重启。如果确实没有更新可做,进入windows更新界面,检查存储,然后删除所有可以删除的内容。