桌面运维之系统封装(windows10 企业版为例子)
准备工作
一台电脑,带两块磁盘,一块用于安装系统,一块用于保存成果,我们下面分别称之为系统盘和数据盘。
之所以安装系统使用单独的磁盘,方便我们对整个磁盘进行清除等操作,而不会影响到我们的成果。
在数据盘上建立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_ent_base.wim /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_ent_base.wim /CaptureDir:c: /Name: win10_ent_base
完成后,我们就有一个可以拿到其他电脑上进行部署的wim系统镜像win10_ent_base.wim了。
但这个镜像还有一些我们需要优化的内容:1、安装过程与原版系统的安装过程一样,我们希望对安装过程进行简化,比如不需要进行隐私设置、输入用户名等;2、其他电脑上可能缺少很多驱动,我们需要补充。
下面我们继续。
镜像改造
现在,你需要使用U盘启动电脑,或者就使用前面的系统直接启动等待其部署完成。
好了,在osdiy目录下,我们有一个重要的镜像文件win10_ent_base.wim。我们要对它进行改造,第一步就是驱动程序添加。
执行下面的命令挂载镜像:
DISM /Mount-image /imagefile:win10_ent_base.wim /Index:1 /MountDir:mount
完成后,我们就可以在mount目录看到镜像文件中的内容,且可以对其进行修改。
新建 mount/windows/DrvCeonw目录,然后把驱动总裁的以下内容复制进去。
位置可不能错哦,因为我们后面的应答文件中的配置,使用的是这个目录。
接下来我们需要一个自动应答文件,来指示windows系统部署程序,如何改变部署过程。
在osdiy目录下,右键并新建一个unattend.xml文本文件,并将下面的内容粘贴进去,并保存:
<?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="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<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="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<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="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<CopyProfile>true</CopyProfile>
<TimeZone>China Standard Time</TimeZone>
</component>
<component name="Microsoft-Windows-UnattendedJoin" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<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="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<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/install-win10.wim#Windows 10 Enterprise LTSC 2019" xmlns:cpi="urn:schemas-microsoft-com:cpi" />
</unattend>
当然,你也可以自行制作你的应答文件,只需要安装Windows Assessment and Deployment Kit – Windows 10,关于应答文件的制作,超级大网管有其他文章描述,这里省略。
接下来执行命令:
copy unattend.xml mount\windows\Panther\unattend.xml /Y
好了,应答文件和驱动我们都放入mount目录。
执行下面的命令,提交更改:
Dism /Unmount-image /MountDir:mount /Commit
上面的命令执行完成后,mount目录下变空了,更改也会提交到win10_ent_base.wim文件中,我们可以使用该镜像文件,往其他电脑上部署(安装)啦。
Dism部署windows镜像
我们有多种办法可以部署wim文件。
原版介质替换法
将镜像改名为install.wim,替换windows原版安装盘sources目录下同名文件。
如果你使用的是这种方法,千万注意dism的版本,最好制作一个最新版本的dism,放到PE盘里制作镜像。
关于如何制作可在PE下执行的dism,超级大网管有专门的文章介绍。
使用NT安装器等第三方工具进行部署
相信很多人都熟练使用这个方法,不过这种方法使得我们的系统很容易被植入广告。
dism命令部署
超级大网管的小伙伴们,喜欢使用微软的dism进行部署,下面我们看看这个方法如何操作。
使用PE盘启动电脑,打开命令行窗口,进入osdiy目录。
执行命令:
Dism /Apply-Image /ImageFile:win10_ent_base.wim /Index:1 /ApplyDir:c:
完成后,我们的系统被部署到系统盘(通常是c盘)。
下面还需要建立启动项,执行命令:
c:\windows\system32\bcdboot c:\windows /p
完成后,重新启动电脑,就可以进入我们设计好的自动部署过程,等待进入桌面即可。
可能碰到的问题
1、sysprep无法验证你的windows安装。
原因多半是系统没有更新完成所致,再检查更新,并重启。如果确实没有更新可做,进入windows更新界面,检查存储,然后删除所有可以删除的内容。