对 Configuration Manager 2012 中的 PXE 启动问题进行故障排除

该指南是做什么用的?
帮助管理员诊断和解决 System Center 2012 Configuration Manager(ConfigMgr 2012 或 ConfigMgr 2012 R2)中的 PXE 启动故障。

适用对象是哪些人?
帮助诊断和解决 PXE 启动问题的管理员。

它是如何工作的?
首先,我们要解释一些有关 PXE 的背景信息。 然后,我们将为你介绍一系列针对你特定情况的故障排除步骤。

预计完成时间:
15-30 分钟。

了解 PXE 启动和 Configuration Manager

System Center 2012 Configuration Manager(ConfigMgr 2012 或 ConfigMgr 2012 R2)中的 PXE 启动支持管理员通过预启动执行环境 (PXE) 在网络上轻松访问 Windows 预安装环境 (WinPE)。 PXE 是由 Intel 创建的行业标准,可在设备固件内提供预启动服务,从而使设备能够将网络启动程序下载至客户端计算机。

Configuration Manager 通过 WDS PXE 提供程序依赖于 Windows 服务器角色 Windows 部署服务 (WDS)。 在 ConfigMgr 2012 中,SMS PXE 提供程序 (SMSPXE) 使用 WDS 服务进行注册并为 PXE 客户端请求提供逻辑。

在解决 ConfigMgr 2012 中与 PXE 相关的问题之前,了解涉及的基本流程、这些流程的工作原理及其相互之间的交互方式至关重要。 此疑难解答程序假设你已掌握了这些流程的相关信息,然而,如果希望进行总体概览,你可以选择下面的选项或者可以直接继续故障排除。

了解 PXE 启动和 Configuration Manager

System Center 2012 Configuration Manager(ConfigMgr 2012 或 ConfigMgr 2012 R2)中的 PXE 启动支持管理员通过预启动执行环境 (PXE) 在网络上轻松访问 Windows 预安装环境 (WinPE)。 PXE 是由 Intel 创建的行业标准,可在设备固件内提供预启动服务,从而使设备能够将网络启动程序下载至客户端计算机。

Configuration Manager 通过 WDS PXE 提供程序依赖于 Windows 服务器角色 Windows 部署服务 (WDS)。 在 ConfigMgr 2012 中,SMS PXE 提供程序 (SMSPXE) 使用 WDS 服务进行注册并为 PXE 客户端请求提供逻辑。

在解决 ConfigMgr 2012 中与 PXE 相关的问题之前,了解涉及的基本流程、这些流程的工作原理及其相互之间的交互方式至关重要。 此疑难解答程序假设你已掌握了这些流程的相关信息,然而,如果希望进行总体概览,你可以选择下面的选项或者可以直接继续故障排除。

PXE 服务点安装

我们将首先介绍 SMSPXE 提供程序安装中涉及的流程。 在本文的所有实例中,我们使用的都是 System Center 2012 Configuration Manager R2 累积更新 2 (ConfigMgr 2012 R2 CU2) 和一个安装在安装有分发点 (DP) 角色的 Windows Server 2012 上的远程站点系统。

首先,通过在分发点属性的 PXE 选项卡上选择“为客户端启用 PXE 支持”选项来启动安装。 启用 PXE 支持后,将创建一个 SMS_SCI_SysResUse 类的实例。

SMSProv.log:PutInstanceAsync SMS_SCI_SysResUseSMS Provider04/09/2014 11:30:131552 (0x0610)CExtProviderClassObject::DoPutInstanceInstanceSMS Provider04/09/2014 11:30:131552 (0x0610)INFO: 'RemoteDp.contoso.com' is a valid FQDN.SMS Provider04/09/2014 11:30:131552 (0x0610)

提示:

在 WMI 命名空间 Root\SMS\Site_RR2(其中 RR2 是该站点的站点代码)中,SMS_SCI_SYSResUse 类包含主站点服务器上的所有站点系统角色。 你可以在 WBEMTEST 中运行以下查询来识别该站点服务器上的所有 DP:

SELECT * FROM SMS_SCI_SysResUse WHERE rolename like 'SMS Distribution Point'
通过 SDK 更改这些角色的属性将改变站点控制文件并配置 DP。 IsPXE 属性名是 props 属性的成员并在 DP 启用 PXE 时设置为 1

SMS Database Monitor 组件检测 DPNotificaiton 和 DistributionPoints 表的更改并删除 distmgr.box 中的文件:

Smsdbmon.log:RCV:UPDATE on SiteControl for SiteControl_AddUpd_HMAN [RR2 ][19604]RCV: UPDATE on SiteControl for SiteControl_AddUpd_SiteCtrl [RR2 ][19605]SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\hman.box\RR2.SCU [19604]SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\sitectrl.box\RR2.CT0 [19605]RCV: UPDATE on Sites for Sites_Interop_Update_HMAN [RR2 ][19606]SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\hman.box\RR2.ITC [19606]RCV: UPDATE on DistributionPoints for DP_Properties_Upd [15 ][19607]RCV: INSERT on PkgNotification for PkgNotify_Add [RR200002 ][19608]RCV: INSERT on PkgNotification for PkgNotify_Add [RR200003 ][19609]RCV: INSERT on DPNotification for DPNotify_ADD [15 ][19610]RCV: UPDATE on SiteControlNotification for SiteCtrlNot_Add_DDM [RR2 ][19611]SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\distmgr.box\15.NOT [19607]SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\distmgr.box\RR200002.PKN [19608]SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\distmgr.box\RR200003.PKN [19609]SND: Dropped C:\Program Files\Microsoft Configuration Manager\inboxes\distmgr.box\15.DPN [19610]Site Control Notification.

然后,主站点服务器上的 Distribution Manager 组件启动远程 DP 配置:

ConfigureDPSMS_DISTRIBUTION_MANAGER04/09/2014 11:30:263776 (0x0EC0)IISPortsList in the SCF is "80".SMS_DISTRIBUTION_MANAGER04/09/2014 11:30:263776 (0x0EC0)IISSSLPortsList in the SCF is "443".SMS_DISTRIBUTION_MANAGER04/09/2014 11:30:263776 (0x0EC0)IISWebSiteName in the SCF is "".SMS_DISTRIBUTION_MANAGER04/09/2014 11:30:263776 (0x0EC0)IISSSLState in the SCF is 448.SMS_DISTRIBUTION_MANAGER04/09/2014 11:30:263776 (0x0EC0)DP registry settings have been successfully updated on RemoteDp.contoso.comSMS_DISTRIBUTION_MANAGER04/09/2014 11:30:263776 (0x0EC0)ConfigurePXESMS_DISTRIBUTION_MANAGER04/09/2014 11:30:263776 (0x0EC0)

在远程 DP 上的 SMS DP 提供程序日志中,我们可以看到以下有关 PXE 安装的信息,最初未在其中找到 PxeInstalled 注册表项:

Smsdpprov.log[66C][Thu 09/04/2014 11:30:28]:CcmInstallPXE [66C][Thu 09/04/2014 11:30:28]:RegQueryValueExW failed for Software\Microsoft\SMS\DP, PxeInstalled[66C][Thu 09/04/2014 11:30:28]:RegReadDWord failed; 0x80070002

安装 Visual C++ Redistributable:

Smsdpprov.log[66C][Thu 09/04/2014 11:30:28]:Running: C:\SMS_DP$\sms\bin\vcredist_x64.exe /q /log "C:\SMS_DP$\sms\bin\vcredist.log"[66C][Thu 09/04/2014 11:30:28]:Waiting for the completion of: C:\SMS_DP$\sms\bin\vcredist_x64.exe /q /log "C:\SMS_DP$\sms\bin\vcredist.log"[66C][Thu 09/04/2014 11:30:39]:Run completed for: C:\SMS_DP$\sms\bin\vcredist_x64.exe /q /log "C:\SMS_DP$\sms\bin\vcredist.log"

安装 WDS:

Smsdpprov.log[66C][Thu 09/04/2014 11:30:39]:Created the DP mutex key for WDS.[66C][Thu 09/04/2014 11:30:39]:Failed to open WDS service.[66C][Thu 09/04/2014 11:30:39]:WDS is NOT INSTALLED[66C][Thu 09/04/2014 11:30:39]:Installing WDS.[66C][Thu 09/04/2014 11:30:39]:Running: ServerManagerCmd.exe -i WDS -a[66C][Thu 09/04/2014 11:30:39]:Failed (2) to run: ServerManagerCmd.exe -i WDS -a[66C][Thu 09/04/2014 11:30:39]:Running: PowerShell.exe -Command Import-Module ServerManager; Get-WindowsFeature WDS; Add-WindowsFeature WDS[66C][Thu 09/04/2014 11:30:39]:Waiting for the completion of: PowerShell.exe -Command Import-Module ServerManager; Get-WindowsFeature WDS; Add-WindowsFeature WDS[66C][Thu 09/04/2014 11:31:35]:Run completed for: PowerShell.exe -Command Import-Module ServerManager; Get-WindowsFeature WDS; Add-WindowsFeature WDS[66C][Thu 09/04/2014 11:31:35]:Successfully installed WDS.

配置 TFTP 读取筛选器:

Smsdpprov.log[66C][Thu 09/04/2014 11:31:35]:Setting TFTP config key as: System\CurrentControlSet\Services\WDSSERVER\Providers\WDSTFTP[66C][Thu 09/04/2014 11:31:35]:Configuring TFTP read filters[66C][Thu 09/04/2014 11:31:35]:SetupComplete is set to 0

创建 REMINST 共享并配置 WDS:

Smsdpprov.log[66C][Thu 09/04/2014 11:31:35]:RegQueryValueExW failed for Software\Microsoft\Windows\CurrentVersion\Setup, REMINST[66C][Thu 09/04/2014 11:31:35]:RegReadDWord failed; 0x80070002[66C][Thu 09/04/2014 11:31:35]:REMINST not set in WDS[66C][Thu 09/04/2014 11:31:35]:WDS is NOT Configured[66C][Thu 09/04/2014 11:31:35]:Share (REMINST) does not exist. (NetNameNotFound) (0x00000906)[66C][Thu 09/04/2014 11:31:35]:GetFileSharePath failed; 0x80070906[66C][Thu 09/04/2014 11:31:35]:REMINST share does not exist. Need to create it.[66C][Thu 09/04/2014 11:31:35]:Enumerating drives A through Z for the NTFS drive with the most free space.[66C][Thu 09/04/2014 11:31:37]:Drive 'C:\' is the best drive for the SMS installation directory.[66C][Thu 09/04/2014 11:31:37]:Creating REMINST share to point to: C:\RemoteInstall[66C][Thu 09/04/2014 11:31:37]:Succesfully created share REMINST[66C][Thu 09/04/2014 11:31:37]:Removing existing PXE related directories[66C][Thu 09/04/2014 11:31:37]:Registering WDS provider: SourceDir: C:\SMS_DP$\sms\bin [66C][Thu 09/04/2014 11:31:37]:Registering WDS provider: ProviderPath: C:\SMS_DP$\sms\bin\smspxe.dll [66C][Thu 09/04/2014 11:31:37]:DoPxeProviderRegister[66C][Thu 09/04/2014 11:31:37]:PxeLoadWdsPxe[66C][Thu 09/04/2014 11:31:37]:Loading wdspxe.dll from C:\Windows\system32\wdspxe.dll[66C][Thu 09/04/2014 11:31:37]:wdspxe.dll is loaded[66C][Thu 09/04/2014 11:31:37]:PxeProviderRegister has suceeded (0x00000000)[66C][Thu 09/04/2014 11:31:37]:Disabling WDS/RIS functionality[66C][Thu 09/04/2014 11:31:39]:WDSServer status is 1[66C][Thu 09/04/2014 11:31:39]:WDSServer is NOT STARTED[66C][Thu 09/04/2014 11:31:39]:Running: WDSUTIL.exe /Initialize-Server /REMINST:"C:\RemoteInstall"[66C][Thu 09/04/2014 11:31:39]:Waiting for the completion of: WDSUTIL.exe /Initialize-Server /REMINST:"C:\RemoteInstall"[66C][Thu 09/04/2014 11:31:50]:Run completed for: WDSUTIL.exe /Initialize-Server /REMINST:"C:\RemoteInstall"[66C][Thu 09/04/2014 11:31:50]:CcmInstallPXE: Deleting the DP mutex key for WDS.[66C][Thu 09/04/2014 11:31:50]:Installed PXE[66C][Thu 09/04/2014 11:32:03]:CcmInstallPXE[66C][Thu 09/04/2014 11:32:03]:PXE provider is already installed.[66C][Thu 09/04/2014 11:32:03]:Installed PXE

在远程 DP 上,我们现在可以看到以下值添加到了 HKLM\Software\Microsoft\SMS\DP    

3876_image3
 

注意如何将 PxeInstalled 和 IsPXE 设置为 1

如果看一下远程 DP 的文件系统,我们会在 C:\SMS_DP$\sms\logs 中看到一个新的日志:

SMSPXE.logMachine is running Windows Longhorn. (NTVersion=0X602, ServicePack=0)Cannot read the registry value of MACIgnoreListFile (00000000)MAC Ignore List Filename in registry is emptyBegin validation of Certificate [Thumbprint B64B9DAF9BFB76A99DC050C21E33B3489643D111] issued to 'e728f6ce-29a6-4ac3-974e-ba3dc855d9a4'Completed validation of Certificate [Thumbprint B64B9DAF9BFB76A99DC050C21E33B3489643D111] issued to 'e728f6ce-29a6-4ac3-974e-ba3dc855d9a4'

分发点现在应已启用 PXE 并已准备好接受传入请求。

将启动映像添加到启用 PXE 的 DP

无论何时配置启用 PXE 的新分发点,都需要完成一些其他步骤以启用完整功能。 其中之一是你必须将 x86 和 x64 启动映像分发至启用 PXE 的新 DP。 若要执行此操作,请导航到“软件库”->“操作系统”->“启动映像”->“启动映像 (x86)”,然后右键单击并选择“分发内容”->“将启动映像添加到启用 PXE 的 DP”

针对“启动映像 (x64)”重复此过程。

完成这一步后,Distribution Manager 将开始处理请求并启动到远程 DP 的分发:

DistMgr.logFound notification for package 'RR200004'Used 0 out of 30 allowed processing threads.Starting package processing thread, thread ID = 0x152C (5420)Start adding package to server ["Display=\\RemoteDp.contoso.com\"]MSWNET:["SMS_SITE=RR2"]\\RemoteDp.contoso.com\...Attempting to add or update a package on a distribution point.Successfully made a network connection to \\RemoteDp.contoso.com \ADMIN$.CreateSignatureShare, connecting to DPSignature share exists on distribution point path \\RemoteDp.contoso.com \SMSSIG$Share SMSPKGC$ exists on distribution point \\RemoteDp.contoso.com \SMSPKGC$Checking configuration of IIS virtual directories on DP ["Display=\\RemoteDp.contoso.com\"]MSWNET:["SMS_SITE=RR2"]\\RemoteDp.contoso.com\Creating, reading or updating IIS registry key for a distribution point.Virtual Directory SMS_DP_SMSSIG$ for the physical path C:\SMSSIG$ already exists.Created package transfer job to send package RR200004 to distribution point ["Display=\\RemoteDp.contoso.com\"]MSWNET:["SMS_SITE=RR2"]\\RemoteDp.contoso.com\.StoredPkgVersion (9) of package RR200004. StoredPkgVersion in database is 9.SourceVersion (9) of package RR200004. SourceVersion in database is 9.

然后,Package Transfer Manager(DP 是远程的)开始发送内容:

PkgXferMgr.logDeleteJobNotificationFiles deleted 1 *.PKN file(s) this cycle.Found send request with ID: 105, Package: RR200004, Version:9, Priority: 2, Destination: REMOTEDP.CONTOSO.COM, DPPriority: 200Created sending thread (Thread ID = 0x1140)Sending thread starting for Job: 105, package: RR200004, Version: 9, Priority: 2, server: REMOTEDP.CONTOSO.COM, DPPriority: 200Sending legacy content RR200004.9 for package RR200004Finished sending SWD package RR200004 version 9 to distribution point REMOTEDP.CONTOSO.COMSent status to the distribution manager for pkg RR200004, version 9, status 3 and distribution point ["Display=\\RemoteDp.contoso.com\"]MSWNET:["SMS_SITE=RR2"]\\RemoteDp.contoso.com\StateTable::CState::Handle - (8210:1 2014-09-10 13:19:12.087+00:00) >> (8203:3 2013-11-26 15:43:48.108+00:00)Successfully send state change notification 7F6041B0-3EE2-427F-AB72-B89610A6331CSending thread complete

然后,SMS 分发点提供程序将 WIM 部署到远程安装目录:

Smsdpprov.log[468][Wed 09/10/2014 14:09:59]:A DP usage gathering task has been registered successfully[99C][Wed 09/10/2014 14:19:07]:Content 'RR200004.9' for package 'RR200004' has been added to content library successfully[99C][Wed 09/10/2014 14:19:07]:Expanding C:\SCCMContentLib\FileLib\E8A1\E8A136A1348B4CFE97334D0F65934845F2B4675D0B7D925AB830378F4ECF39B9 from package RR200004[99C][Wed 09/10/2014 14:19:07]:Finding Wimgapi.Dll[99C][Wed 09/10/2014 14:19:07]:Found C:\Windows\system32\wimgapi.dll[99C][Wed 09/10/2014 14:19:07]:Expanding RR200004 to C:\RemoteInstall\SMSImages

SMSPXE 发现新映像:

SMSPXE.logFound new image RR200004PXE::CBootImageManager::QueryWIMInfoLoaded C:\Windows\system32\wimgapi.dllOpening image file C:\RemoteInstall\SMSImages\RR200004\boot.RR200004.wimFound Image file: C:\RemoteInstall\SMSImages\RR200004\boot.RR200004.wimPackageID: RR200004ProductName: Microsoft® Windows® Operating SystemArchitecture: 0Description: Microsoft Windows PE (x86)Version: Creator: SystemDir: WINDOWSClosing image file C:\RemoteInstall\SMSImages\RR200004\boot.RR200004.wimPXE::CBootImageManager::InstallBootFilesForImageTemporary path to copy extract files from: C:\RemoteInstall\SMSTempBootFiles\RR200004.

提示:

确保这些启动映像已配置为从启用 PXE 的 DP 进行部署。 右键单击启动映像,选择“属性”->“数据源”并选择“从启用 PXE 的分发点部署该启动映像”。

PXE 启动过程

此处描述的启动过程示例涉及三台机器: DHCP 服务器、启用 PXE 的 DP 以及客户端(x64 BIOS 计算机)。 它们都位于同一子网上。

在 PXE 启动过程中,客户端必须首先获取 TCP/IP 参数和 TFTP 启动服务器的位置。 一旦某个设备开机并完成了 POST,其将开始 PXE 启动过程(通常通过启动选择菜单进行提示)。

  1. PXE 固件要做的第一件事是发送 DHCPDISCOVER(一个 UDP 数据包)广播以获取 TCP/IP 详细信息。 其中包括参数请求列表,以下网络跟踪示例包含来自 DHCPDISCOVER 数据包的参数列表:
    3876_image4
     
    然后,PXE 客户端识别具体的供应商和计算机信息,以便其可以请求相应启动映像文件的位置和文件名。
  2. 然后,DHCP 服务器和启用 PXE 的 DP 发送 DHCPOFFER 到包含所有相关 TCP/IP 参数的客户端。
    在以下 DHCP 示例中,请注意其不包含服务器名或启动文件信息,因为这是来自 DHCP 服务器而不是启用 PXE 的 DP。
    3876_image5
     
  3. 客户端选择 DHCPOFFER 后,其将通过 DHCPREQUEST 进行答复。 这包含来自选定项的 IP 地址。
  4. DHCP 服务器通过具有与 DHCPOFFER 相同详细信息的 DHCPACK 响应 DHCPREQUEST。 此处未提供服务器主机名和启动文件名:
    3876_image6
     
  5. 此时,我们仍没有启动文件信息,然而,客户端现在具有 IP 地址。 PXE 客户端在接收了来自之前 DHCPDISCOVER 广播的 DHCPOFFER 后,接下来会发送一个新的 DHCPREQUEST 到启用 PXE 的 DP。
  6. 启用 PXE 的 DP 将发送包含 BootFileName 位置和 WDS 网络启动程序 (NBP) 的 DHCPACK。
    3876_image7
     
下载启动文件

  1. 完成 DHCP 对话后,客户端将通过读取请求开启 TFTP 会话: 
    3876_image8
     
    服务器先使用 tsize 而后使用 blksize 进行响应。 然后,客户端将从服务器传输文件。

    注意 这些块的大小是 blksize,在此情况下,其将设置为 1456 字节。 Blksize 可在 Windows Server 2008 及更高版本上进行配置。 请参阅以下知识库文章了解详细信息:

    975710 - 在 Windows Server 2008 和 Windows Server 2008 R2 中使用 WDS 在网络上部署操作系统失败

    此处我们可以看到 DHCP 会话结束和 TFTP 传输开始:
    3876_image9
     
    在 WDS 网络引导程序 (NBP) 传输到客户端计算机后,将开始执行。 在我们的示例中,其通过下载 wdsnbp.com 开始。 NBP 规定客户端是否可以通过网络启动、客户端是否必须按 F12 以开始启动以及客户端将收到的启动映像。

    NBP 特定于体系结构和固件(BIOS 或 UEFI)。 在 BIOS 计算机上,NBP 是一个 16 位实模式应用程序,因此可以针对基于 x86 和基于 x64 的操作系统使用同样的 NBP。

    在我们的示例(x64 BIOS 计算机)中,NBP 位于启用 PXE 的 DP 上的以下目录中:
    \\remotedp\c$\RemoteInstall\SMSBoot\x64
    3876_image10
     
    此文件执行以下功能:
    PXEboot.com – x86 和 x64 BIOS: 要求最终用户按 F12 键进行 PXE 启动以继续(这是默认的 NBP)。

    PXEboot.n12 – x86 和 x64 BIOS:
    立即开始 PXE 启动(无需在客户端上按 F12 键)。

    AbortPXE.com – x86 和 x64 BIOS:
    使用 BIOS 中指定的下一个启动设备,可允许设备立即开始启动。 从而,不用使用 PXE 启动的设备能够立即开始其辅助启动过程而无需等待超时。

    Bootmgfw.efi – x64 UEFI 和 IA64 UEFI: PXEboot.comPXEboot.n12 的 EFI 版本(在 EFI 中,选择是否在 EFI shell 中处理 PXE 启动而不是由 NBP 处理)。 Bootmgfw.efi 等同于 PXEboot.comPXEboot.n12abortpxe.com 以及 bootmgr.exe 的功能集。

    wdsnbp.com – x86 和 x64 BIOS: 开发的特殊 NBP 供 Windows 部署服务使用,具有以下一般用途:
    ◦体系结构检测
    ◦挂起设备情形

    Wdsmgfw.efi – x64 UEFI 和 IA64 UEFI: 开发的特殊 NBP 供 Windows 部署服务使用,具有以下一般用途:
    ◦处理提示用户按任意键继续 PXE 启动
    ◦挂起设备情形
  2. NBP 通过 TFTP 下载操作系统加载程序和启动文件,其中包括: 
    ◦ smsboot\x64\pxeboot.com
    ◦ smsboot\x64\bootmgr.exe
    ◦ \SMSBoot\Fonts\wgl4_boot.ttf
    ◦ \SMSBoot\boot.sdi
    ◦ \SMSImages\RR200004\boot.RR200004.wim

  3. 使用这些文件和内存中的 WinPE WIM 文件创建 RAMDISK。 
    3876_image11
     
  4. 从 RAMDISK 启动客户端。

WinPE 启动

一旦 WinPE 启动,TS 启动 shell 将从 SMS 文件夹(包含在 WinPE 映像中)启动(该文件夹在导入 Configuration Manager 时注入启动 WIM)。 你可以在 SMSTS.log(位于 X:\Windows\Temp\SMSTS\)中查看该过程的记录。
提示:
若要在 WinPE 中访问此日志,请在启动映像上启用命令提示符。 若要执行此操作,请右键单击“启动映像”->“属性”->“自定义”->并勾选“启用命令支持(仅测试)”。 然后,可以通过在 WinPE 中按 F8 键来访问命令提示符。
以下是初始 TS 启动 shell 过程:

SMSTS.log==============================[ TSBootShell.exe ]==============================Succeeded loading resource DLL 'X:\sms\bin\i386\1033\TSRES.DLL'Debug shell is enabledWaiting for PNP initialization...RAM Disk Boot Path: NET(0)\SMSIMAGES\RR200004\BOOT.RR200004.WIMBooted from network (PXE)Network(PXE) path: X:\sms\data\Found config path X:\sms\data\This is not a fixed non usb diskBooting from removable media, not restoring bootloaders on hard driveX:\sms\data\WinPE does not exist.X:\_SmsTsWinPE\WinPE does not exist.Executing command line: wpeinit.exe -winpeThe command completed successfully.Starting DNS client service.Executing command line: X:\sms\bin\i386\TsmBootstrap.exe /env:WinPE /configpath:X:\sms\data\The command completed successfully.

随后是任务序列管理器启动带:

SMSTS.log==============================[ TSMBootStrap.exe ]==============================Command line: X:\sms\bin\i386\TsmBootstrap.exe /env:WinPE /configpath:X:\sms\data\Succeeded loading resource DLL 'X:\sms\bin\i386\1033\TSRES.DLL'Succeeded loading resource DLL 'X:\sms\bin\i386\TSRESNLC.DLL'Current OS version is 6.2.9200.0Adding SMS bin folder "X:\sms\bin\i386" to the system environment PATHPXE Boot with Root = X:\Executing from PXE in WinPELoading TsPxe.dll from X:\sms\bin\i386\TsPxe.dll

一旦 TSPXE 加载,其将使用 TFTP 下载 TS 变量:

SMSTS.log TsPxe.dll loadedDevice has PXE bootedVariable Path: \SMSTemp\2014.09.05.18.20.31.0001.{0C616323-A027-41B0-A215-057AF4F1E361}.boot.varSuccesfully added firewall rule for TftpExecuting: X:\sms\bin\i386\smstftp.exe -i 10.238.0.2 get \SMSTemp\2014.09.05.18.20.31.0001.{0C616323-A027-41B0-A215-057AF4F1E361}.boot.var X:\sms\data\variables.datExecuting command line: "X:\sms\bin\i386\smstftp.exe" -i 10.238.0.2 get \SMSTemp\2014.09.05.18.20.31.0001.{0C616323-A027-41B0-A215-057AF4F1E361}.boot.var X:\sms\data\variables.datProcess completed with exit code 0Succesfully removed firewall rule for TftpSuccessfully downloaded pxe variable file.Loading Media Variables from "X:\sms\data\variables.dat"Loading Media Variables from "X:\sms\data\variables.dat"Found network adapter "Intel 21140-Based PCI Fast Ethernet Adapter (Emulated)" with IP Address 10.238.0.3.Loading Media Variables from "X:\sms\data\variables.dat"Loading variables from the Task Sequencing Removable Media.Loading Media Variables from "X:\sms\data\variables.dat"Succeeded loading resource DLL 'X:\sms\bin\i386\1033\TSRES.DLL'Setting SMSTSMP TS environment variableSetting _SMSMediaGuid TS environment variableSetting _SMSTSBootMediaPackageID TS environment variableSetting _SMSTSHTTPPort TS environment variableSetting _SMSTSHTTPSPort TS environment variableSetting _SMSTSIISSSLState TS environment variableSetting _SMSTSLaunchMode TS environment variableSetting _SMSTSMediaPFX TS environment variableSetting _SMSTSPublicRootKey TS environment variableSetting _SMSTSRootCACerts TS environment variableSetting _SMSTSSiteCode TS environment variableSetting _SMSTSSiteSigningCertificate TS environment variableSetting _SMSTSUseFirstCert TS environment variableSetting _SMSTSx64UnknownMachineGUID TS environment variableSetting _SMSTSx86UnknownMachineGUID TS environment variable

此时,在为用户显示用户界面以选择可选任务序列之前,TSPXE 会找到管理点 (MP) 并下载策略:

SMSTS.log site=RR2,RR2, MP=http://ConfigMgrR2.CONTOSO.COM, ports: http=80,https=443certificates are received from MP.CLibSMSMessageWinHttpTransport::Send: URL: ConfigMgrR2.CONTOSO.COM:80 CCM_POST /ccm_system/requestRequest was successful.Downloading policy from http://ConfigMgrR2.CONTOSO.COM.Retrieving Policy Assignments:Processing Policy Assignment {7898f153-a6de-43e9-98c3-ca5cc61483b0}.Processing Policy Assignment {fba19677-0e9b-490d-b601-07e247979bd4}.Processing Policy Assignment {6306ca4c-e7ed-4cf5-8419-af9b1695a909}.Processing Policy Assignment {05a027ff-e9cf-4fa1-8bd8-4565481061e2}.Processing Policy Assignment {b3c991f6-9f83-43c3-875c-f60c4492d278}.…Successfully read 152 policy assignments.

最后,下载集合和计算机变量并激活欢迎页面:

SMSTS.log Retrieving collection variable policy.Found 0 collection variables.Retrieving machine variable policy.Downloading policy body {01000053}-{RR2}.Response ID: {01000053}-{RR2}Reading Policy Body.Parsing Policy Body.Found 0 machine variables.Setting collection variables in the task sequencing environment.Setting machine variables in the task sequencing environment.Running Wizard in Interactive modeLoading Media Variables from "X:\sms\data\variables.dat"Activating Welcome Page.Loading bitmap 
检查常见问题

在对 PXE 服务点进行任何故障排除之前,请参阅以下 KB 文章以了解探讨的这些问题是否可能是你所遇问题的原因。 请注意,这并不是一个详尽的列表,但是其中包含了一些最常见的问题。

此方法是否解决了你的问题?

验证 IP 帮助程序

如果 DHCP 服务器、客户端计算机、运行 Windows 部署服务 (WDS) 的 ConfigMgr 2012 服务器和启用 PXE 的分发点 (DP) 全都位于同一子网或 VLAN 上,则无需 IP 帮助程序。 否则,如果 DHCP 服务器、客户端计算机、运行 Windows 部署服务 (WDS) 的 ConfigMgr 2012 服务器和启用 PXE 的分发点 (DP) 中的任一个位于不同的子网或 VLAN 上(这是多数环境中的常见情况),则必须在路由器上配置 IP 帮助程序。 具体的配置过程取决于路由器硬件制造商,不过以下 TechNet 文章对此过程进行了总体概述:

配置你的路由器以转发广播:http://technet.microsoft.com/zh-cn/library/cc732351(WS.10).aspx#Updating

如果需要其他信息以在你的路由器上正确配置 IP 帮助程序,请联系路由器的硬件制造商。

IP 帮助程序非常必要,因为由客户端计算机生成的 PXE 请求是不会在本地子网或 VLAN 之外传输的广播。 如果 DHCP 服务器和/或启用 WDS/PXE 的 DP 没有与客户端计算机位于同一子网或 VLAN 上,则它们将不会看到或听到来自客户端的 PXE 请求广播,服务器因此而不会响应 PXE 请求。 若要 PXE 请求广播在子网或 VLAN 之间传输,PXE 请求广播需要由路由器转发至 DHCP 和 WDS/PXE 服务点服务器,以便它们可以正确响应客户端的 PXE 请求。

使用 IP 帮助程序的另一种方法是在 DHCP 服务器上设置 DHCP 选项,特别是 DHCP 选项 60(PXE 客户端)、66(启动服务器主机名)以及 67(启动文件名)。 但是,DHCP 选项可能会出现问题,可能无法以可靠且一致的方式进行工作。 此外,使用 DHCP 选项在 ConfigMgr 2012 中控制 PXE 请求不受 Microsoft 支持。 因此,对于 PXE 启动位于远程子网上的客户端计算机而言,建议并支持的方法是使用 IP 帮助程序。

有关不建议或不支持的 DHCP 选项的其他信息,请参见以下文章:
使用 DHCP 选项 60、66 和 67:http://technet.microsoft.com/zh-cn/library/cc732351(WS.10).aspx#Using
259670 - 配置动态主机配置协议服务器使用选项 60、66、67 时 PXE 客户端计算机未启动

重要 继续之前,必须要验证路由器配置了 IP 帮助程序并且 DHCP 服务器没有配置 DHCP 选项 60、66 或 67。 无法满足这两个条件,将导致 PXE 服务点出现问题。 在检查 DHCP 选项时,请务必对服务器和作用域级别上的这些选项均进行检查。

请注意,在某些实例中,配置 DHCP 选项 60、66 以及 67 之后 PXE 启动过程看起来与配置这些选项之前一般无二,但是在大多数情况下,启动过程将会沿着错误方向进行。

重要 需要用到 DHCP 选项的唯一例外的情况是 DHCP 和 WDS 驻留在同一服务器。 在此情况下,DHCP 选项 60(仅 DHCP 选项 60)需要进行设置。 此时,DHCP 选项 66 和 67 仍进行设置。 这将在下一部分“在同一服务器上共同托管 DHCP 和 WDS”进行详细说明。

此方法是否解决了你的问题?

在同一服务器上共同托管 DHP 和 WDS 时的特别注意事项

当 DHCP 和 WDS 在同一计算机上共同托管时,WDS 需要进行特殊配置以便其可以侦听特定端口。 此配置在 Windows 部署服务和动态主机配置协议 (DHCP) 部分中的以下 TechNet 文章中有述。 

规划 PXE 启动的操作系统部署:http://technet.microsoft.com/zh-cn/library/hh397405.aspx

请注意,根据上述文章,当 WDS 与 DHCP 在同一服务器上共同托管时,需要完成以下两个操作:

  1. UseDHCPPorts 需要在以下注册表位置设置为 0
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WDSServer\Providers\WDSPXE
  2. 你需要运行以下 WDS 命令:
    WDSUTIL /Set-Server /UseDHCPPorts:No /DHCPOption60:Yes
然而,针对问题提供以上建议,是为了运行 WDSUTIL 命令,WDS 必须进行配置。 这与在安装 ConfigMgr 启用 PXE 的 DP 时无需配置 WDS 的最佳做法背道而驰,但是通过 WDSUTIL 命令指定的这两个设置(UseDHCPPorts 和 DHCPOption60)可以使用其他方法进行配置,这样就无需运行 WDSUTIL 命令,从而无需配置 WDS。 若要在不启用 WDS 的情况下配置这些设置,请完成以下步骤:

  1. WDSUTIL 的 UseDHCPPorts 开关实际等同于将注册表项 UseDHCPPorts 在以下位置设置为值 0:
    HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WDSServer\Providers\WDSPXE
    因此,只要按以上所述手动设置该注册表项,则无需使用 UseDHCPPorts 开关。 请注意,如果尚未安装 WDS,则此注册表项可能不存在。
  2. DHCPOption60 开关为 DHCP 服务而不是 WDS 服务配置选项,因此,可以不使用 WDSUTIL 设置该 DHCP 选项,而可使用等同的 DHCP 命令设置同一选项。 这可以通过使用以下 MSDN 文章中所述的 netsh 命令实现: http://msdn.microsoft.com/zh-cn/library/dd128762(WinEmbedded.51).aspx

若要总结上述文章内容,请关闭所有打开的 DHCP 控制台,然后从提升的命令提示符(以管理员身份运行)运行以下两个命令:

netsh dhcp server \\<DHCP_server_machine_name> add optiondef 60 PXEClient String 0 comment=PXE support netsh dhcp server \\<DHCP_server_machine_name> set optionvalue 60 STRING PXEClient 

其中 <DHCP_server_machine_name> 是 DHCP/WDS 服务器的名称(不带括号 <>)。

这两个命令在 DHCP 服务器上设置并启用 DHCP 选项 60。 如果运行上述两个命令后,在 DHCP 控制台中而不是 060 PXE 客户端中显示名称为 Unknown 的选项,请重新启动服务器以便这些设置能够生效。 在重新启动后,该选项应可以正确显示。 这通常只发生在当两个命令运行时 DHCP 控制台处于打开状态的情况下。

注意 如果 DHCP 曾经移至另一台服务器并从托管 WDS 的服务器删除,则上述步骤需要反向执行。 若要反向执行上述步骤,请在 WDS 服务器上完成以下步骤:

  1. 通过提升的命令提示符运行以下命令:
    REG ADD "HKLM\SYSTEM\CurrentControlSet\services\WDSServer\Providers\WDSPXE" /v UseDHCPPorts /t REG_DWORD /d 1 /f
  2. 在提升的命令提示符处,运行下面的两个命令:
    netsh dhcp server \\<DHCP_server_machine_name> delete optionvalue 60
    netsh dhcp server \\<DHCP_server_machine_name> delete optiondef 60 PXEClient
    其中 <DHCP_server_machine_name> 是 DHCP/WDS 服务器的名称(不带括号 <>)。

    在上述两个命令中,第一个命令禁用 DHCP 选项 60,而第二个命令会完全删除 DHCP 选项 60。

此方法是否解决了你的问题?

DHCP 发现故障排除

开始 PXE 启动过程的初始 DHCP 发现阶段的故障排除之前,有许多需要注意的重要事项:

  • 如果你无法在 SMSPXE.log 中查看尝试启动的设备的 MAC 地址或 DHCPREQUEST,则很可能是客户端与分发点 (DP) 之间出现了路由器配置问题。 
  • 请勿使用 DHCP 选项 60、66 和 67,不支持此做法。 
  • 测试当在与启用 PXE 的 DP 相同子网上插入开关时设备是否可启动。 如果可以,则该问题可能与路由器配置有关。
  • 确保 DHCP(67 和 68)、TFTP (69) 和 BINL (4011) 端口在客户端计算机、DHCP 服务器和 PXE DP 之间处于打开状态。

在过程的此阶段,没有日志可供参考,但通常如果在 WinPE 启动之前 PXE 启动过程失败,则会显示错误代码。 你可能会看到以下错误示例:

PXE-E51: 未接收到 DHCP 或 proxyDHCP 提供的服务。

PXE-E52:接收到 proxyDHCP 提供的服务。 未接收到 DHCP 提供的服务。

PXE-E53: 未接收到启动文件名。

PXE-E55:proxyDHCP 服务未回复端口 4011 上的请求。

PXE E77 损坏或丢失发现服务器列表。

PXE-E78: 无法找到启动服务器。

有大量记录这些错误代码的网页。 例如: Symantec 的 PXE 错误代码列表及其含义。 

这有助于缩小故障排除的关注范围,尽管通过网络监视工具(如 NetmonWireShark)捕获该问题的网络踪迹可能是必要的。 网络监视工具需要安装在启用 PXE 的 DP 和连接至开关上的镜像端口的计算机上。 有关配置镜像端口的详细信息,请参阅具体开关或路由设备制造商提供的手册。

典型过程是在 DP 和连接至镜像端口的计算机上同时启动网络跟踪,然后尝试通过 PXE 启动设备。 完成后,停止跟踪并将其保存以便进一步分析。 下面是从启用 PXE 的 DP 捕获的 DHCP 会话跟踪示例:

3876_image14
 

你可以看到 PXE 客户端的初始 DHCPDISCOVER 后面是来自 DHCP 服务器和 PXE DP 的 DHCPOFFER。 客户端 (0.0.0.0) 发出请求,而后由 DHCP 服务器 (10.238.0.14) 确认。 一旦 PXE 客户端具备 IP 地址 (10.238.0.3),其将发送请求至 PXE DP (10.238.0.2),后者通过网络启动程序详细信息对其进行确认。

同时在客户端和 DP 上捕获网络踪迹,以查看会话是否按预期发生。

  • 确保 DHCP 服务正在运行并且可用。
  • 验证 WDS 服务正在 DP 上运行。
  • 确保服务器与客户端之间没有阻止 DHCP 端口的防火墙。
  • 验证当客户端计算机与 DP 处于同一子网上时能够启动。
  • 确保如果从不同于 DP 的子网启动时 IP 帮助程序配置正确。

此方法是否解决了你的问题?

TFTP 传输故障排除

如果 PXE 启动上的错误与 TFTP 有关,则你的启动文件在传输时可能出现了问题。 这些错误示例包括:

PXE-E32: TFTP 打开超时。
PXE-E35: TFTP 读取超时。
PXE-E36: 接收到来自 TFTP 服务器的错误。
PXE-E3F: TFTP 数据包大小无效。
PXE-E3B: TFTP 错误 - 未找到文件
PXE-T04: 访问冲突

使用 Netmon 或 Wireshark 监视网络是一个尝试并解决这些错误的好计划。 以下是出现 TFTP 打开超时时从 PXE 客户端捕获的数据示例:

3876_image15
 

此处客户端正在发送

wdsnbp.com

文件读取请求,但未接收到响应。 这表明有什么阻碍了客户端接收确认。 可能原因如下:

3876_image16
 

尝试使用以下故障排除步骤:

  • 减小启用 PXE 的 DP 上的块大小(请参阅 http://support.microsoft.com/zh-cn/kb/975710
  • 验证 WDS 服务在分发点 (DP) 上已启动。
  • 确保客户端计算机和 DP 之间打开了 TFTP 端口。
  • 验证 REMINST 共享/文件夹上的权限正确。
  • 检查 WDS 日志中是否有其他 TFTP 错误。
  • 验证 RemoteInstall\SMSBoot\x86\x64 文件夹包含以下文件:
    
    3876_image17
     
  • 这些字体位于 SMSBoot\Fonts 中:
    3876_image18
     
  • boot.sdi 文件存在于 RemoteInstall\SMSBoot 目录中:
    3876_image19
     
你是否解决了问题?
WinPE 启动问题 - 驱动程序

在此阶段中出现的最常见问题都与驱动程序相关。 总的来说,最新版本的 WinPE 包含绝大多数的网络和大容量存储驱动程序,但是也存在所需驱动程序未包含在其中而需要导入启动 WIM 这种情况。 此时需要注意以下重点事项:

  • 仅导入所需的驱动程序。 请勿简单地将你拥有的每个驱动程序都导入启动映像。
  • 仅考虑添加 NIC 或大容量存储驱动程序。 无需包括其他驱动程序。

SMSTS.log 文件(位于 X:\Windows\temp\SMSTS)是解决这些问题最有用的资源(请记住,在启动期间启用命令提示符以便你可以检查此文件)。 如果你看到记录了有效 IP 地址的行(类似如下所示),则驱动程序可能出现问题: 

SMSTS.logFound network adapter "Intel 21140-Based PCI Fast Ethernet Adapter (Emulated)" with IP Address 10.238.0.3

若要进行确认,仅需按 F8 键并在命令提示符处运行 IPCONFIG,即可确定是否识别了 NIC 以及其是否具有 IP 地址。

WIM 文件

此外,还要确保分发点上存在 x86 和 x64 启动映像。 你可以在以下目录中查看 WIM(它们也存在于内容库中):
C:\RemoteInstall\SMSImages\<PackageID>


确保在启动映像的属性中已将其标记为“从启用 PXE 的分发点部署该启动映像”。


此方法是否解决了你的问题?

Configuration Manager 策略问题

PXE 启动中另一个常见问题与任务序列部署有关。 在以下示例中,任务序列被部署至未知计算机,但其已位于数据库中。 第一个症状是 PXE 启动中止:

3876_image20
 

经过进一步调查,你会在 SMSPXE.log 中注意到以下内容:

SMSPXE.logClient lookup reply: <ClientIDReply><Identification Unknown="0" ItemKey="16777299" ServerName=""><Machine><ClientID/><NetbiosName/></Machine></Identification></ClientIDReply>MP_LookupDevice succeeded: 16777299 1 16777299 1 000:15:5D:00:19:CA, 32E5B71A-B626-4A4B-902E-7F94AD38B5B3: device is in the database.Client boot action reply: <ClientIDReply><Identification Unknown="0" ItemKey="16777299" ServerName=""><Machine><ClientID/><NetbiosName/></Machine></Identification><PXEBootAction LastPXEAdvertisementID="" LastPXEAdvertisementTime="" OfferID="" OfferIDTime="" PkgID="" PackageVersion="" packagePath="" BootImageID="" Mandatory=""/></ClientIDReply>Client Identity: 00:15:5D:00:19:CA, 32E5B71A-B626-4A4B-902E-7F94AD38B5B3: SMSID= OfferID=, PackageID=, PackageVersion=, BootImageID=, PackagePath=, Mandatory=000:15:5D:00:19:CA, 32E5B71A-B626-4A4B-902E-7F94AD38B5B3: no advertisements found00:15:5D:00:19:CA, 32E5B71A-B626-4A4B-902E-7F94AD38B5B3: No boot action. Aborted.00:15:5D:00:19:CA, 32E5B71A-B626-4A4B-902E-7F94AD38B5B3: Not serviced. 

我们可以在其中看到,当 NBS 存储过程运行时,它们发现没有可用的策略,因而启动操作中止。 反之亦然(即,当计算机未知但任务序列已部署至已知计算机的集合)。

尝试使用以下故障排除步骤:

  • 验证你尝试启动的计算机存在于任务序列部署针对的集合中。
  • 确保你勾选了“启用未知计算机在分发点上支持 PXE 设置”。
  • 如果要将任务序列部署至未知计算机,请验证计算机未存在于数据库中。

此方法是否解决了你的问题?

祝贺你!

你的 PXE 启动问题已解决。

抱歉

通过使用此指南似乎无法解决你的问题。 为获得解决此问题的更多帮助,请参阅我们的 TechNet 支持论坛联系 Microsoft 支持

属性

文章 ID:10082 - 上次审阅时间:2016年10月6日 - 修订版本: 5

反馈