网络引导 Windows PE¶
Windows PE(WinPE)是 Windows 预安装环境,用于安装和修复 Windows 计算机。
使用 iPXE 和 wimboot,你可以通过 HTTP 引导进入 Windows PE。然后你可以连接到标准的 Windows 文件服务器,把完整版本的 Windows 安装到本地硬盘(或 iSCSI 目标)。
通过 HTTP 引导 Windows PE 比使用 Windows 部署服务(WDS)等传统的基于 TFTP 的方法快得多。在千兆以太网上,下载一个典型的 200MB Windows PE 镜像应不到两秒。

设置 Windows PE¶
对于当前版本的 Windows,Windows PE 作为 Windows 评估和部署工具包(ADK)的一部分提供;对于较早版本的 Windows,则作为 Windows 自动安装工具包(AIK)的一部分提供。
Windows 评估和部署工具包(ADK)¶

Windows 评估和部署工具包(ADK)兼容 Windows Server 2012、Windows 8、Windows 7、Windows Server 2008 和 Vista。
在一台正常工作的 Windows 系统("技术员计算机")上下载并安装 ADK。
从开始菜单中,选择所有程序 -> Windows Kits -> Windows ADK -> 部署和映像工具环境。这会打开一个命令提示符窗口。创建 32 位和 64 位版本的 Windows PE:
mkdir C:\temp\winpe
copype x86 C:\temp\winpe\x86
copype amd64 C:\temp\winpe\amd64
把 C:\temp\winpe 的内容复制到 Web 服务器上的某个目录(例如 Apache 用 /var/www/winpe,IIS 用 C:\inetpub\wwwroot\winpe)。
下载最新版本的 wimboot,并把它保存到 Web 服务器上的同一目录。
在 Web 服务器上的同一目录中创建文本文件 boot.ipxe,内容如下:
#!ipxe
cpuid --ext 29 && set arch amd64 || set arch x86
kernel wimboot
initrd ${arch}/media/sources/boot.wim boot.wim
boot
Windows 自动安装工具包(AIK)¶

Windows 自动安装工具包(AIK)兼容 Windows 7、Windows Server 2008、Vista 和 Windows Server 2003。
在一台正常工作的 Windows 系统("技术员计算机")上下载并安装 AIK。
从开始菜单中,选择所有程序 -> Microsoft Windows AIK -> 部署工具命令提示。这会打开一个命令提示符窗口。创建 32 位和 64 位版本的 Windows PE:
mkdir C:\temp\winpe
copype x86 C:\temp\winpe\x86
copype amd64 C:\temp\winpe\amd64
把 C:\temp\winpe 的内容复制到 Web 服务器上的某个目录(例如 Apache 用 /var/www/winpe,IIS 用 C:\inetpub\wwwroot\winpe)。
下载最新版本的 wimboot,并把它保存到 Web 服务器上的同一目录。
在 Web 服务器上的同一目录中创建文本文件 boot.ipxe,内容如下:
#!ipxe
cpuid --ext 29 && set arch amd64 || set arch x86
kernel wimboot
initrd ${arch}/ISO/boot/bcd BCD
initrd ${arch}/ISO/boot/boot.sdi boot.sdi
initrd -n boot.wim ${arch}/winpe.wim boot.wim
boot
引导 Windows PE¶
使用 iPXE 从你的 boot.ipxe 脚本的 URI 启动,例如 http://my.web.server/winpe/boot.ipxe。你应该会看到 iPXE 通过 HTTP 下载并引导 Windows PE:


安装 Windows¶
现在你可以连接到 Windows(或 Samba)文件服务器来运行 Windows 安装程序。例如,如果你已经把 Windows 安装 DVD-ROM 的内容复制到了 \\myserver\installers\win8,那么你可以使用如下命令启动安装程序:
net use \\myserver\installers
\\myserver\installers\win8\setup.exe

高级主题¶
添加启动批处理文件¶

你可以定制你的 Windows PE 镜像,让它自动连接到文件服务器并运行 Windows 安装程序。
创建文本文件 install.bat,包含连接到你的文件服务器并启动安装程序所需的命令:
wpeinit
net use \\myserver\installers
\\myserver\installers\win8\setup.exe
创建文本文件 winpeshl.ini,指示 Windows PE 运行你的 install.bat 文件:
[LaunchApps]
"install.bat"
把 install.bat 和 winpeshl.ini 复制到你的 Web 服务器,并编辑你的 boot.ipxe 脚本以加载这些文件:
#!ipxe
cpuid --ext 29 && set arch amd64 || set arch x86
kernel wimboot
initrd install.bat install.bat
initrd winpeshl.ini winpeshl.ini
initrd ${arch}/media/Boot/BCD BCD
initrd ${arch}/media/Boot/boot.sdi boot.sdi
initrd ${arch}/media/sources/boot.wim boot.wim
boot
当你引导进入 Windows PE 时,它现在应该会自动连接到你的文件服务器并运行 Windows 安装程序。

添加网卡驱动程序¶
如果你的网卡尚未被 Windows PE 支持,你可以定制 Windows PE 镜像以包含网卡驱动程序。你需要 ImageX 和 DISM 工具,它们是 Windows ADK(或 AIK)的一部分。wimlib 软件包中也提供了 Linux 版本的 imagex。
下载网卡驱动程序,并把驱动程序解压到 C:\temp\winpe\drivers。如果你使用的是 ADK,则需要下载与 Windows 8 兼容的驱动程序;如果你使用的是 AIK,则需要与 Windows 7 兼容的驱动程序。
使用 ImageX 和 DISM 把这个驱动程序添加到你的 Windows PE 镜像中:
imagex /mountrw C:\temp\winpe\amd64\media\sources\boot.wim 1 C:\temp\winpe\amd64\mount
dism /image:C:\temp\winpe\amd64\mount /add-driver /driver:c:\temp\winpe\drivers /recurse
imagex /unmount /commit C:\temp\winpe\amd64\mount
安装到 iSCSI 目标¶
你可以使用 Windows PE 镜像把 Windows 安装到 iSCSI 目标。创建文本文件 install.ipxe,内容如下:
#!ipxe
prompt -k 0x197e -t 2000 Press F12 to install Windows... || exit
chain boot.ipxe
并把它复制到 Web 服务器上存放 boot.ipxe 脚本的目录。
配置你的 DHCP 服务器,把 install.ipxe 脚本的 URI 作为启动文件名提供,并把 iSCSI 目标的 SAN URI 作为 root-path 提供。如果你的 iSCSI 目标使用访问控制列表(ACL),那么你可能还需要提供正确的 initiator-iqn。
你应该会看到无盘计算机连接到 iSCSI 目标,然后提示你"Press F12 to install Windows"(按 F12 安装 Windows):

按 F12 开始安装过程。如果你已经按照上面的说明添加了启动批处理文件,那么 Windows 安装程序会自动启动。如果没有,则手动连接到你的文件服务器并运行 Windows 安装程序。
像往常一样继续安装 Windows。当你到达"你想把 Windows 安装在哪里?"界面时,你应该会看到 iSCSI 磁盘显示为一个可用的安装位置:
