一、准备工具
① Dism++,最主要工具,编辑系统镜像、释放镜像等;
② NTLite,可生成无人值守文件,也可以全部靠这个来调试编辑系统,阉割什么的,操作非常简单;
③ 7Zip,Windows下打包成".GZ"文件,也可以使用命令行来打包,那就不用这个了。
【以Dism++为例】
2.1 提取镜像
下载一个原版或者喜欢的系统镜像,提取系统包里sources目录下的install.wim文件。
2.2 挂载镜像
新建一个空文件夹用来挂载镜像,比如D:\Windows_DD\WinS2019。
打开Dism++软件,点击左上角文件>>挂载映像。
弹出的窗口,第一行目标镜像路径选择之前解压出来的install.wim文件。
第二行挂载路径选之前建好的文件夹D:\Windows_DD\WinS2019。
这里还可以选择镜像携带的不同版本,
注意不要选择只读模式。点击确定,映像准备就绪之后,再点击打开会话。
2.3 添加驱动
先放一个我打包好的:
https://drive.google.com/open?id=118iF6arD0MwdKr4BQT1TEz5BBUd4XM2R
同:
https://gd.b2fun.net/文件/dd_Tools/KVM_Xen_Vmware_Drivers.iso
2.3.1 准备驱动
2.3.1.1 KVM驱动
•下载:
https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/stable-virtio/virtio-win.iso
2.3.1.2 XEN驱动
•下载:
https://s3.amazonaws.com/ec2-windows-drivers-downloads/AWSPV/Latest/AWSPVDriver.zip
解压后,安装这个AWSPVDriverSetup.msi
找到安装目录,比如路径C:\Program Files\Amazon\XenTools\Drivers
这里的驱动已经经过签名,可以直接添加到镜像中,此后安装就不会报错。
注意,只适合64位。
摘选自老司机大佬的说明:
“解释下,为什么使用亚马逊AWS的XEN驱动,原因是XEN官方提供的驱动都是未签名的,添加进去系统是不行的,会导致出错。
除了把驱动拿去用软件签名,别无它法。也就只能用亚马逊AWS已经签名好的XEN驱动。
2.3.1.3 VMware Tool驱动
•下载:
https://packages.vmware.com/tools/releases/latest/windows/index.html
这个链接好像不行OxO
•ESXI驱动:
https://packages.vmware.com/tools/esx/index.html
解压ISO文件,并另外新建一个文件夹来提取exe文件里的驱动。
比如新建文件夹路径为D:\Extract。
在ISO解压出来的文件夹里,即.exe驱动安装程序的目录,新建一个bat批处理脚本:
setup.exe /a /p D:\Extract
setup.exe修改为此驱动程序,再执行bat批处理脚本,会弹出安装界面,按提示进行安装,到第二步的网络位置路径也是选择安装到D:\Extract
具体驱动路径D:\Extract\VMware\VMware Tools\VMware\Drivers
2.3.2 安装驱动
继续在Dism++软件里进行操作。点击驱动管理,添加驱动。选择驱动所在的文件夹后(路径可以不用太具体),会自动安装驱动。在弹出窗口,点击确定。
2.4 优化镜像
2.4.1 注册表调整必要项
•注册表开启远程桌面服务和3389端口
•关闭 Ctrl+Alt+Del 登陆
直接新建文本文档,粘贴进去,更改拓展名为.reg,然后在Dism++或者NTLite里导入配置就行了。
Windows Registry Editor Version 5.00 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server] "fDenyTSConnections"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\Wds\rdpwd\Tds\tcp] "PortNumber"=dword:00000d3d [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] "PortNumber"=dword:00000d3d [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp] "UserAuthentication"=dword:00000000 [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules] "{33893389-3389-3389-3389-338933893389}"="v2.10|Action=Allow|Active=TRUE|Dir=In|Protocol=6|LPort=3389|Name=3389|" [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System] "disablecad"=dword:00000001 [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon] "DisableCAD"=dword:00000001
2.4.2自定修改
继续在Dism++软件里进行操作。点击程序和功能,启用或者关闭一些Windows功能。比如
- 远程协助【重要】
- NET.Framework 3.5等
还有点击更新管理,可以更新系统补丁,其他各种优化修改看个人意愿,在Dism++的功能模块里可以摸索一下。
三、添加无人值守
3.1 添加无人值守
自动应答文件unattend.xml放在系统镜像挂载目录下的路径:C:\Windows\Panther\目录下,
一般官方镜像是没有Panther目录的,新建一个即可。自动应答文件可以直接应用到制作其他系统包,按需修改即可。
添加自动应答文件完毕之后,就可以保存镜像了,等待释放到VHD镜像,然后打包成GZ压缩包就行了。
分享一个我的自动应答文件:
https://gd.b2fun.net/文件/dd_Tools/
在NTLite里设置的话就是这样的,添加的
•用户是:Administrator
•密码是:www.b2fun.net
四、创建VHD镜像
4.1 创建 VHD 虚拟硬盘
右键点击开始菜单,选择计算机管理,点击磁盘管理,右键或者点击操作,点击创建VHD,在弹出的窗口,指定计算机上的虚拟硬盘位置,比如 D:\Windows_DD\WinS2019.vhd,虚拟硬盘大小按需设置点击确定。
可以事先在Dism++里点击释放镜像,看看大致体积是多大,我发现一般比该体积大个2~3G就可以了。
注意硬盘不宜设置过大,否则DD的时候,当VPS或服务器的硬盘小于指定的磁盘大小的话会出错。
图片这里我设置这么大是因为我学习制作的时候添加了一个网卡驱动的合集所以设置得比较大。
4.2 创建带系统的 VHD 虚拟硬盘
继续在Dism++软件里进行操作。主要是将之前处理过的镜像文件D:\Windows_DD\win2019.wim释放到VHD虚拟硬盘。
点击Dism++左上角文件,选择释放映像。
弹出的窗口,第一行映像文件路径,点击浏览选择之前编辑另存为的系统镜像D:\Windows_DD\win2019.wim,
第二行安装路径,点击浏览选择刚建立的VHD虚拟硬盘G盘.
选中添加引导和格式化,点击确定,在弹出的窗口里选择更多(此处很重要),选择刚建立的磁盘盘符,点击确认。
释放镜像完毕后,会提示"G:映像已经还原成功"。就可以点击左上角文件,卸载映像,然后关闭 Dism++。然后在此电脑里,像平常弹出U盘一样,弹出创建的VHD虚拟磁盘,选中G盘,右键点击弹出。
五、打包镜像
选中调试好的VHD系统镜像D:\Windows_DD\WinS2019.vhd,右键选择7-zip,添加到压缩包,选择gzip格式,确定。
等待压缩完成后,将压缩包重命名,上传到你自己的服务器,或者onedrive、Google drive做一个下载直链即可直接拿来使用了。
附录-自动应答文件的生成
这里略过微软官方工具Windows ADK生成的方式【主要我也不会OvO】。
使用NTLite工具,
其他功能调整、驱动加入、更新补丁,等等,略过。
调配无人值守,先添加一个账户,比如启用内置的Administrator。
然后按需调整其他选项,我的调配选项见第三步。
最后应用更改,保存镜像完毕之后就会在镜像所在的文件夹下生成一个autounattend.xml,这个就是自动应答文件了。一般要改名为unattend.xml使用。