制作适用于虚拟化生产环境的Windows Server 2008R2安装介质

last modified : 2017-03-15 | published: 2017-03-13 | category:

Step 0 : 准备工作

在开始之前,需要做一些准备工作。

Step 1 : 集成方便使用汇总更新及月度更新

  微软现在提供Windows 7 SP1和Windows Server 2008R2 SP1的方便使用汇总更新下载。方便使用汇总更新中包含自Service Pack 1发布后直至2016年4月所发布的大多数更新,以帮助用户尽快获得最新的修补程序和修补程序。

  但是,微软没有将方便使用汇总更与操作系统安装镜像集成,这意味着在安装操作系统后,您仍然需要使用Windows更新下载并安装便捷汇总更新。

  对于运维人员,则浪费带宽和时间,批量部署的Windows Server不得不重复下载并安装相同的更新。部署WSUS服务,只能节约带宽依旧浪费时间

  好在,方便使用汇总更新是一个msu文件格式的更新,可以通过SlipStream注入到原始安装媒体中。

Step 1.1 : 准备工作

我们一共需要集成3个安全更新,下载他们:

  1. 服务堆栈更新,这是安方便使用汇总更新的依赖更新。
  2. 方便使用汇总更新
  3. 2017年1月安全每月质量汇总,安全每月质量汇总包含从方便使用汇总更新发布后所有安全更新,微软每1-2个月推出新的安全汇总更新。

将这些补丁保存到c:\Work\UpdataFile

Step 1.2 : 将Windows安装文件解压缩到空文件夹中

Step 1.3 : 以管理员身份运行CMD

Step 1.4 : 键入以下命令以获取WIM文件的基本信息

Dism /Get-WIMInfo /WimFile:C:\Work\WinISO\sources\install.wim

注意这里的操作系统版本,这里选择Datacenter版,这个版本的授权费最适合虚拟化环境。

Step 1.5 : 新建DcFile和DcCoreFile目录分别用于挂载映像

Step 1.6 : 键入以下命令以挂载Windows映像

Dism /Mount-Wim /WimFile:C:\Work\WinISO\sources\install.wim /index:5 /MountDir:c:\Work\DcFile
Dism /Mount-Wim /WimFile:C:\Work\WinISO\sources\install.wim /index:6 /MountDir:c:\Work\DcCoreFile

Step 1.7 : 键入以下命令以将安全更新合并到64位版本的安装介质

Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\UpdataFile\windows6.1-kb3020369-x64.msu
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\UpdataFile\windows6.1-kb3125574-v4-x64.msu
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\UpdataFile\windows6.1-kb3212646-x64.msu
Dism /Image:C:\Work\DcCoreFile /Add-Package /PackagePath:c:\Work\UpdataFile\windows6.1-kb3020369-x64.msu
Dism /Image:C:\Work\DcCoreFile /Add-Package /PackagePath:c:\Work\UpdataFile\windows6.1-kb3125574-v4-x64.msu
Dism /Image:C:\Work\DcCoreFile /Add-Package /PackagePath:c:\Work\UpdataFile\windows6.1-kb3212646-x64.msu

可选:提交更改

可以使用下面的命令提交更改,但这里不使用,等添加完驱动和语言包后再使用。

Dism /Unmount-WIM /MountDir:C:\Work\DcCoreFile /Commit
Dism /Unmount-WIM /MountDir:C:\Work\DcFile /Commit

Step 2 : 集成多国语言包

这是一个可选工作,某些单位中,不同分支机构可能使用不同的语言版本。相对于使用界面,语言包的影响更多体现在一些程序的编码上,对于Windows本地服务而言,不同语言没有区别,但对于一些有console输出的程序,系统的编码是至关重要的。

Step 2.1 : 准备工作

下载:Windows Server 2008 R2 Service Pack 1 Multilingual User Interface Language Packs

解压并复制到C:\Work\langpacks

Step 2.2 : 使用Dism将语言包合并到64位版本的安装介质

这里不对Core版本使用,因为Core版本的使用者,不需要图形界面。

Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\ar-sa\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\bg-bg\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\cs-cz\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\da-dk\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\de-de\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\el-gr\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\en-us\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\es-es\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\et-ee\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\fi-fi\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\fr-fr\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\he-il\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\hr-hr\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\hu-hu\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\it-it\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\ja-jp\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\ko-kr\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\lt-lt\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\lv-lv\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\nb-no\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\nl-nl\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\pl-pl\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\pt-br\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\pt-pt\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\ro-ro\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\ru-ru\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\sk-sk\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\sl-si\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\sr-latn-cs\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\sv-se\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\th-th\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\tr-tr\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\uk-ua\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\zh-cn\lp.cab
Dism /Image:C:\Work\DcFile /Add-Package /PackagePath:c:\Work\langpacks\zh-hk\lp.cab

这将会消耗相当长的时间,如果目标客户范围可控,可以减少语言包的选择。

Step 3 : 集成虚拟化驱动

这里选择3大主流的虚拟化驱动,因为确实需要这么多:

Step 3.1 : 挂载启动镜像

将驱动不仅要集成到系统影像,还需要集成到进行系统安装的WinPE中,这样才能在安装过程中识别到硬件,特别是磁盘。

新建BootFile目录c:\Work\BootPEFilec:\Work\BootSetupFile

Dism /Mount-Wim /WimFile:C:\Work\WinISO\sources\boot.wim /index:1 /MountDir:c:\Work\BootPEFile
Dism /Mount-Wim /WimFile:C:\Work\WinISO\sources\boot.wim /index:2 /MountDir:c:\Work\BootSetupFile

Step 3.2 : 准备KVM virtio驱动

  1. https://fedoraproject.org可以找到最新的稳定版驱动.
  2. 将驱动解压到C:\Work\Driver\virtio
  3. 在各子目录,删除一切非对应2008R2版本的驱动。

Step 3.3 : 准备Vmware Esxi驱动

  1. 在Vmware官方网站下载最新版本的Esxi
  2. 将光盘镜像中的TOOLS.T00使用7zip解压。
  3. 其中windows.iso即所需驱动,解压。(winPreVista.iso为xp/2003驱动)
  4. 在驱动工作目录输入setup.exe /A /P C:\Work\Driver\vmware
  5. 在安装过程中的第二步输入路径C:\Work\Driver\vmware
  6. 只需保留C:\Work\Driver\vmware\VMware\VMware Tools\Drivers\hgfsC:\Work\Driver\vmware\VMware\VMware Tools\VMware\Drivers两个目录内的驱动,其余删掉。
  7. 删除各子目录内面向Win8/10(NT6.2+)的驱动。

Step 3.4 : 准备Hypver-V驱动

在任意安装了Hyper-V的Server 2012R2中,找到C:\windows\system32\vmguest.iso,解压这个文件,找到Windows6.x-HyperVIntegrationServices-x64.cab,这个驱动包可以通过打补丁的方式进行集成。

Dism /Image:c:\Work\DcFile /Add-Package /PackagePath:c:\Work\UpdataFile\Windows6.x-HyperVIntegrationServices-x64.cab
Dism /Image:c:\Work\DcCoreFile /Add-Package /PackagePath:c:\Work\UpdataFile\Windows6.x-HyperVIntegrationServices-x64.cab
Dism /Image:c:\Work\BootPEFile /Add-Package /PackagePath:c:\Work\UpdataFile\Windows6.x-HyperVIntegrationServices-x64.cab
Dism /Image:c:\Work\BootSetupFile /Add-Package /PackagePath:c:\Work\UpdataFile\Windows6.x-HyperVIntegrationServices-x64.cab

Step 3.5 : 将Vmware Esxi和KVM virtio驱动合并到64位版本的安装介质

Dism /Image:C:\Work\DcFile /Add-Driver /Driver:C:\Work\Driver /Recurse
Dism /Image:C:\Work\DcCoreFile /Add-Driver /Driver:C:\Work\Driver /Recurse
Dism /Image:C:\Work\BootPEFile /Add-Driver /Driver:C:\Work\Driver /Recurse
Dism /Image:C:\Work\BootSetupFile /Add-Driver /Driver:C:\Work\Driver /Recurse

其中/Recurse参数为添加子目录的驱动。

Step 4 : 提交变更并卸载影像

以上操作完毕,影像并未被保存到install.wim和boot.wim中,我们依然需要卸载影像,使变更生效。

Dism /Unmount-WIM /MountDir:C:\Work\DcFile /Commit
Dism /Unmount-WIM /MountDir:C:\Work\DcCoreFile /Commit
Dism /Unmount-WIM /MountDir:C:\Work\BootPEFile /Commit
Dism /Unmount-WIM /MountDir:C:\Work\BootSetupFile /Commit

Step 5 : 优化wim文件

通过上述操作,已基本完成对安装映像的修改,但目前依然需要优化下install.wim,原因有两个:

这里使用/Export-Image命令生成一个新install.wim。

DISM.exe /Export-Image /SourceImageFile:c:\Work\WinISO\sources\install.wim /SourceIndex:5 /DestinationImageFile:c:\Work\new_install.wim /Compress:max /CheckIntegrity /DestinationName:"Windows Server 2008 R2 Datacenter,January 2017 (Full Installation)"
DISM.exe /Export-Image /SourceImageFile:c:\Work\WinISO\sources\install.wim /SourceIndex:6 /DestinationImageFile:c:\Work\new_install.wim /Compress:max /CheckIntegrity /DestinationName:"Windows Server 2008 R2 Datacenter,January 2017 (Server Core Installation)"

使用/Get-WIMInfo确认下:

C:\Windows\system32>Dism /Get-WIMInfo /WimFile:c:\Work\new_install.wim

Deployment Image Servicing and Management tool
Version: 10.0.14393.0

Details for image : c:\Work\new_install.wim

Index : 1
Name : Windows Server 2008 R2 Datacenter,January 2017 (Full Installation)
Description : This option installs the complete installation of Windows Server. This installation includes the entire user interface, and it supports all of the server roles.
Size : 28,154,179,398 bytes

Index : 2
Name : Windows Server 2008 R2 Datacenter,January 2017 (Server Core Installation)
Description : This option installs a minimal installation of Windows Server without the standard Windows user interface, and with a subset of server roles that can be managed from a command prompt, reducing management requirements and attack surface.
Size : 4,629,889,313 bytes

The operation completed successfully.

Step 7 : 修改镜像的DISPLAYNAME

有一个小BUG,就是DISM.exe /Export-Image并不会复制映像的DISPLAYNAME字段,这会导致安装时显示不友好,微软直至ADK 10依旧保持这这个BUG,令人无语。

这时需要使用一个叫gimagex的工具

Step 8 : 创建编录文件

  1. new_install.wim重命名为install.wim
  2. 打开随AIK一起安装的Windows System Image Manager
  3. 菜单: File -> Select Windows Image ,打开install.wim,选择任意映像。
  4. 如下提示,点击YES。
  5. 重复3-4,将Core和non-Core两个映像全部生成编录

Step 9 : 刻录/保存ISO

略,使用刻录软件替换boot.wim和install.wim,删除原有clg拓展名的编录文件,添加新编录文件。