TFTP Initialization State

Microsoft.Windows.Server.2008.WDSRole.TFTPInitialization (UnitMonitor)

When the WDSServer service is started, the Trivial File Transfer Protocol (TFTP) server reads the configuration settings in the registry that apply to the TFTP server. Note that the TFTP server will not function correctly until it has initialized successfully.

Knowledge Base article:

Summary

You use the Windows Deployment Services Trivial File Transfer Protocol (TFTP) server to download the files that are needed to do a network boot using the Pre-Boot Execution Environment (PXE). PXE technology is a standard created by Intel that establishes a common and consistent set of pre-boot services within the boot firmware. The end goal is to enable a client to do a network boot and receive a network boot program (NBP) from a network boot server.

The TFTP server downloads boot files such as Pxeboot.com, Wdsnbp.com, Bootmgr.exe, and Default.bcd, as well as the boot image that contains Windows Preinstallation Environment (Windows PE).

You use the Trivial File Transfer Protocol (TFTP) server for Windows Deployment Services to download the files that are needed to do a network boot using the Pre-Boot Execution Environment (PXE). If the registry data is corrupt or the TFTP server does not have sufficient permissions, the TFTP server will not be able to download these files.

Resolutions

To resolve this issue, do the following in the specified order:

To perform these procedures, you must either be a member of the local Administrators group or have been delegated the appropriate authority.

Ensure that the registry data is correct

Caution: Incorrectly editing the registry might severely damage your system. Before making changes to the registry, you should back up any valued data.

To ensure that the registry data is not corrupt:  

If the WDSTFTP registry key does not exist, use the procedure in the following section to ensure that the registry permissions are correct.

Ensure that the registry permissions are correct

To ensure that the TFTP server has the correct registry permissions and settings:

Element properties:

TargetMicrosoft.Windows.Server.2008.WDSRole
Parent MonitorSystem.Health.ConfigurationState
CategoryAvailabilityHealth
EnabledTrue
Alert GenerateTrue
Alert SeverityMatchMonitorHealth
Alert PriorityNormal
Alert Auto ResolveTrue
Monitor TypeMicrosoft.Windows.3SingleEventLog3StateUnitMonitorType
RemotableTrue
AccessibilityPublic
Alert Message
TFTP Initialization State
Event ID: {0} -- {1}
RunAsDefault

Source Code:

<UnitMonitor ID="Microsoft.Windows.Server.2008.WDSRole.TFTPInitialization" Accessibility="Public" Enabled="onEssentialMonitoring" Target="Microsoft.Windows.Server.2008.WDSRole" ParentMonitorID="SystemHealth!System.Health.ConfigurationState" Remotable="true" Priority="Normal" TypeID="Windows!Microsoft.Windows.3SingleEventLog3StateUnitMonitorType" ConfirmDelivery="true">
<Category>AvailabilityHealth</Category>
<AlertSettings AlertMessage="Microsoft.Windows.Server.2008.WDSRole.TFTPInitialization.AlertMessage">
<AlertOnState>Error</AlertOnState>
<AutoResolve>true</AutoResolve>
<AlertPriority>Normal</AlertPriority>
<AlertSeverity>MatchMonitorHealth</AlertSeverity>
<AlertParameters>
<AlertParameter1>$Data/Context/EventDisplayNumber$</AlertParameter1>
<AlertParameter2>$Data/Context/EventDescription$</AlertParameter2>
</AlertParameters>
</AlertSettings>
<OperationalStates>
<OperationalState ID="Success" MonitorTypeStateID="FirstEventRaised" HealthState="Success"/>
<OperationalState ID="Warning" MonitorTypeStateID="SecondEventRaised" HealthState="Warning"/>
<OperationalState ID="Error" MonitorTypeStateID="ThirdEventRaised" HealthState="Error"/>
</OperationalStates>
<Configuration>
<FirstComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</FirstComputerName>
<FirstLogName>Application</FirstLogName>
<FirstExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>WDSTFTP</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>256</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</FirstExpression>
<SecondComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</SecondComputerName>
<SecondLogName>Application</SecondLogName>
<SecondExpression>
<And>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>WDSTFTP</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery>EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value>260</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</SecondExpression>
<ThirdComputerName>$Target/Host/Property[Type="Windows!Microsoft.Windows.Computer"]/NetworkName$</ThirdComputerName>
<ThirdLogName>Application</ThirdLogName>
<ThirdExpression>
<And>
<Expression>
<RegExExpression>
<ValueExpression>
<XPathQuery Type="UnsignedInteger">EventDisplayNumber</XPathQuery>
</ValueExpression>
<Operator>MatchesRegularExpression</Operator>
<Pattern>^(257|258|259)$</Pattern>
</RegExExpression>
</Expression>
<Expression>
<SimpleExpression>
<ValueExpression>
<XPathQuery Type="String">PublisherName</XPathQuery>
</ValueExpression>
<Operator>Equal</Operator>
<ValueExpression>
<Value Type="String">WDSTFTP</Value>
</ValueExpression>
</SimpleExpression>
</Expression>
</And>
</ThirdExpression>
</Configuration>
</UnitMonitor>