这篇文章描述如何在 Windows Server 2003 上安装 TFTP 服务,以及如何准备文件以支持 PXE 方式网络启动 Windows PE。
在 Windows Server 2003 上安装 TFTP 服务,参考文章 TFTP by Microsoft. Free, but Shy。我这里使用 LocalService 帐户启动服务,更安全。
mkdir "C:\tftpd\tftpboot" cd %SystemRoot%\system32 copy dllcache\tftpd.exe sc create TFTPd binPath= "%SystemRoot%\system32\tftpd.exe" ^ start= auto DisplayName= "TFTP Server" ^ obj= "NT AUTHORITY\LocalService" set SVCPARAMS=HKLM\SYSTEM\CurrentControlSet\Services\TFTPd\Parameters reg add %SVCPARAMS% /v Directory /d C:\tftpd\tftpboot reg add %SVCPARAMS% /v Masters
在 Windows 防火墙中允许 TFTP 协议端口。
netsh fi add port udp 69 "TFTP Server" enable subnet
要立即启动 TFTP 服务,执行
net start TFTPd
下面准备引导 PE 需要的文件。从 Windows Server 2003 的安装光盘中提取出 SETUPLDR.BIN、 ntdetect.com、 startrom.com、 startrom.n12 几个文件。
其中, SETUPLDR.BIN 更名为 ntldr,并做二进制修改:找到第一个 ASCII 字符串“MZ”(不含引号,大约在文件里 0×4E70 的位置),从 MZ 之前的内容全部删除。
编写 winnt.sif 引导说明文件:
[SetupData] BootDevice = "ramdisk(0)" BootPath = "i386\system32" OsLoadOptions = "/fastdetect /minint /rdexportascd /rdpath=pe.iso" Architecture = "i386"
把上述 5 个文件,加上制作好的支持 ramdisk 方式引导的 Windows PE 镜像,如 pe.iso
,全部复制到 TFTP 服务的主目录,即 C:\tftpd\tftpboot
。
最后只要在 DHCP 服务器里填上 TFTP 服务器的信息就可以了。例如,如果使用的是 ISC DHCP 服务器,在其 /etc/dhcpd.conf 中适当位置加上 next-server 和 filename 参数即可;如果是 Windows 的 DHCP 服务器,配置“066 启动服务器主机名”、“067 启动文件名”两个参数即可。