Jump to content


Sign in to follow this  
anyweb

NIC devices that require a special driver for WinPE may cause a ConfigMgr Task Sequence to fail

Recommended Posts

If separate NIC drivers are offered by an OEM manufacturer for use in Windows PE vs. the full Windows OS, the Task Sequence may fail if the Windows OS being deployed is Windows Vista or newer (Vista, Windows 7, 2008, 2008 R2) and if it is being deployed from an "Operating System Install Package" (Windows installation source files).

 

We discuss the cause and solution here:

 

http://blogs.technet.com/configurationmgr/archive/2010/02/09/nic-devices-that-require-a-special-driver-for-winpe-may-cause-a-configmgr-task-sequence-to-fail-if-a-vista-or-newer-os-is-being-deployed-via-an-operating-system-install-package.aspx

 

J.C. Hornbeck | Microsoft

 

If separate NIC drivers are offered by an OEM manufacturer for use in Windows PE vs. the full Windows OS, the Task Sequence may fail if the Windows OS being deployed is Windows Vista or newer (Vista, Windows 7, 2008, 2008 R2) and if it is being deployed from an "Operating System Install Packages" (Windows installation source files).

 

Usually the OEM manufacturer offers separate NIC drivers for use in WinPE vs. the full Windows OS because of special characteristics of the NIC, such as it being a multi-tiered device. WinPE does not support multi-tiered devices, so the OEM manufacturer offers a "monolithic" driver for use in WinPE. An example of such a NIC device is the Broadcom NetXtreme II (based on the 5706, 5708, 5709, and 5716 chipsets) commonly seen on server class hardware. Please see the below link for additional information regarding the Broadcom NetXtreme II NIC:

 

http://www.broadcom.com/support/ethernet_nic/netxtremeii.php

 

Note: The monolithic driver for the Broadcom NetXtreme II NIC does not need to be loaded into the WinPE Boot Images of SP2 of SCCM 2007. SCCM 2007 SP2 utilizes WinPE 3.0 which already contains the NetXtreme II NIC monolithic driver. However it does need to be loaded in the Boot Images of SP1 of SCCM 2007. SCCM 2007 SP1 utilizes WinPE 2.1 which does not contain this driver.

 

When the Task Sequence fails, the errors displayed both in the interface and in the SMSTS.log may be different depending on if the deployment was an SCCM 2007 SP1 vs. SCCM 2007 SP2 Task Sequence. It will also vary depending if the Advertisement for the Task Sequence is set to download and run locally ("Download content locally when needed by running task sequence") or run from DP ("Access content directly from a distribution point when needed by the running task sequence").

 

Below are example error messages for each scenario:

 

SCCM 2007 SP1 & SP2 Run From DP

 

SMSTS.log:

Executing command line: "\\<DP_SERVER>\<DPSHARE>$\<Windows_Installation_Package_ID>\SOURCES\SETUP.EXE" "/unattend:C:\_SMSTaskSequence\unattend.xml" /noreboot OSDSetupWindows

Process completed with exit code 3221225478 OSDSetupWindows

Windows Setup completed with exit code 3221225478 OSDSetupWindows

Entering ReleaseSource() for \\<DP_SERVER>\<DPSHARE>$\<Windows_Installation_Package_ID>\ OSDSetupWindows

reference count 1 for the source \\<DP_SERVER>\<DPSHARE>$\<Windows_Installation_Package_ID>\ before releasing OSDSetupWindows

Released the resolved source \\<DP_SERVER>\<DPSHARE>$\<Windows_Installation_Package_ID>\ OSDSetupWindows

exitCode == 0, HRESULT=80004005 (e:\nts_sms_fre\sms\client\osdeployment\setupwindows\setupwindows.cpp,440) OSDSetupWindows

Windows setup failed, code 3221225478 OSDSetupWindows

setup.run(), HRESULT=80004005 (e:\nts_sms_fre\sms\client\osdeployment\setupwindows\setupwindows.cpp,1707) OSDSetupWindows

Exiting with code 0x80004005 OSDSetupWindows

Process completed with exit code 2147500037 TSManager

!--------------------------------------------------------------------------------------------! TSManager

Failed to run the action: Setup windows and ConfigMgr.

Unspecified error (Error: 80004005; Source: Windows) TSManager

 

The execution of the group (Setup Operating System) has failed and the execution has been aborted. An action failed.

Operation aborted (Error: 80004004; Source: Windows) TSManager

Failed to run the last action: Setup windows and ConfigMgr. Execution of task sequence failed.

Unspecified error (Error: 80004005; Source: Windows) TSManager

Setupact.log and Setuperr.log:

 

SP1:

 

<Date> <Time>, Info IBS SetImageXMLOnBB:Could not cache the WinPE image XML info [\\<DP_Server>\<DP_Share>$\<Windows_Installation_Package_ID>\SOURCES\Boot.wim]. Error code is [0x35]

<Date> <Time>, Info [0x060115] IBS Callback_Productkey_Validate_Unattend:Using ProductKey WillShowUI value of [OnError]; retrieving key from unattend file...

<Date> <TIME>, Error [0x060412] IBS IsValidTargetLanguage: Unable to get languages from the lang.ini file.[gle=0x00000035]

or

<Date> <TIME>, Error [0x060412] IBS IsValidTargetLanguage: Unable to get languages from the lang.ini file.[gle=0x00000040]

<Date> <TIME>, Error [0x060467] IBS Failed to retrieve compressed image size for '\\<DP_Server>\<DP_Share>$\<Windows_Installation_Package_ID>\SOURCES\Install.wim'[gle=0x00000035]

or

<Date> <TIME>, Error [0x060467] IBS Failed to retrieve compressed image size for '\\<DP_Server>\<DP_Share>$\<Windows_Installation_Package_ID>\SOURCES\Install.wim'[gle=0x00000040]

<Date> <TIME>, Info [sETUP.EXE] Called script [X:\windows\Setup\Scripts\ErrorHandler.cmd] to handle fatal error

<Date> <TIME>, Info [0x070042] DIAG CallBack_DiagnosticDataSend: Called with notification for Error published by ErrorHandler

<Date> <TIME>, Info [0x0601d7] IBS InstallWindows:Error Type = 3211266

 

SP2:

 

<Date> <Time>, Info [0x060115] IBS Callback_Productkey_Validate_Unattend:Using ProductKey WillShowUI value of [OnError]; retrieving key from unattend file...

<Date> <TIME>, FatalError [0x090001] PANTHR Unhandled exception (code 0xC0000006: IN_PAGE_ERROR) occurred at 0x735E87D4 in \\<DP_SERVER>\<DPSHARE>\<Windows_Installation_Package_ID>\SOURCES\win32ui.dll (+000287D4). Minidump attached (51636 bytes).

 

SCCM 2007 SP1 Download & Run Locally

 

SMSTS.log:

 

 

Executing command line: "C:\_SMSTaskSequence\Packages\<Package_ID>\SOURCES\SETUP.EXE" "/unattend:C:\_SMSTaskSequence\unattend.xml" /noreboot OSDSetupWindows

Process completed with exit code 0 OSDSetupWindows

Windows Setup completed with exit code 0 OSDSetupWindows

 

GetDirectoryListing() entered OSDSetupHook

Initializing HTTP transport. OSDSetupHook

Setting URL = http://<SCCM_MP_Server>/SMS_DP_SMSPKG<Drive_Letter>$/<Package_ID>/. OSDSetupHook

Address = <SCCM_MP_Server>, Object = /SMS_DP_SMSPKG<Drive_Letter>$/<Package_ID>/, Port = 80. OSDSetupHook

WinHttp credentials set OSDSetupHook

CLibSMSMessageWinHttpTransport::Send: URL: <SCCM_MP_SERVER>:80 PROPFIND /SMS_DP_SMSPKG<Drive_Letter>$/<Package_ID>/ OSDSetupHook

Error. Received 0x80072ee7 from WinHttpSendRequest. OSDSetupHook

unknown host (gethostbyname failed) OSDSetupHook

hr, HRESULT=80072ee7 (e:\nts_sms_fre\sms\framework\osdmessaging\libsmsmessaging.cpp,7714) OSDSetupHook

sending with winhttp failed; 80072ee7 OSDSetupHook

oHttpTransport.Send((char*)S_DAVQUERY, (sizeof(S_DAVQUERY)/sizeof(S_DAVQUERY[0]))-sizeof(char), pReply, nReplySize), HRESULT=80072ee7 (e:\nts_sms_fre\sms\framework\tscore\downloadcontent.cpp,585) OSDSetupHook

SendResourceRequest() failed with 0x80072ee7 OSDSetupHook

SendResourceRequest(), HRESULT=80072ee7 (e:\nts_sms_fre\sms\framework\tscore\downloadcontent.cpp,371) OSDSetupHook

oDavRequest.GetDirectoryListing(setDirs, setFiles), HRESULT=80072ee7 (e:\nts_sms_fre\sms\framework\tscore\resolvesource.cpp,2419) OSDSetupHook

Retrying download... OSDSetupHook

 

No errors in the Setupact.log or Setuperr.log

 

SCCM 2007 SP2 Download & Run Locally

 

Deployment runs successfully

Cause

 

The basic cause of the problem is that network connectivity is lost in WinPE when the NIC driver is installed. When running from DP, the Task Sequence will fail immediately after the NIC driver install takes place. When downloading and running locally, the Task Sequence will fail a few minutes after the the NIC driver install takes place and right after the initial Windows setup is complete. Loss of network connectivity is caused by how and when the NIC driver is installed by the SCCM OSD Task Sequence.

 

In Windows Vista or newer (Vista, Windows 7, 2008, 2008 R2), drivers can be installed during one of several different passes during an unattended Windows installation. These passes are described in the below TechNet article:

 

Add Device Drivers During Windows Setup

http://technet.microsoft.com/en-us/library/cc766485(WS.10).aspx

 

When either the "Apply Driver Package" task or "Auto Apply Driver" task is included as part of an SCCM 2007 OSD Task Sequence that is deploying an Operating System via an "Operating System Install Packages" (Windows installation source files), the Task Sequence will automatically generate and/or add to an unattend.xml file specifying for the drivers to be installed during the windowsPE phase. According to the above TechNet article, drivers installed during windowsPE phase are not only installed within WinPE, but also in the full Windows OS installation:

 

"If you need drivers for Windows PE to see the local hard disk drive or a network, this configuration pass must be used to add the necessary drivers to the Windows PE driver store. The windowsPE configuration pass also configures settings that apply to installation. This means that drivers in the Windows PE driver store are also reflected into the offline Windows image or copied to the Windows image driver store during offline servicing."

 

The problem with installing NIC drivers that are different for WinPE vs. the full Windows OS is that attempting to install such drivers during the windowsPE phase will cause network connectivity in WinPE to stop working and fail. This occurs because the incorrect drives are "reinstalled" while still in WinPE.

 

The exact failure is different depending if SCCM 2007 SP1 or SCCM 2007 SP2 is being used. SP1 utilizes WinPE 2.1 and SP2 utilizes WinPE 3.0. In SP1, when the driver is attempted to be installed while in WinPE 2.1, the network connectivity is lost permanently. In SP2, when the driver is attempted to be installed while in WinPE 3.0, network connectivity is also lost. However, WinPE 3.0 handles the issue better and after a few seconds recovers and network connectivity is regained.

 

If the Task Sequence is being run from the DP, in both SP1 and SP2, the Task Sequence will fail during the initial Windows Setup. When Windows Setup installs the NIC driver, the Task Sequence will fail immediately after the NIC driver has been installed. Specifically, when the failure happens, the Task Sequence is accessing the Windows installation source files directly on the DP. Since it cannot access these files anymore due to the loss of network connectivity, Windows Setup fails, which causes the Task Sequence to fail.

 

If the Task Sequence is downloading and running locally, the Task Sequence will not fail immediately upon the installation of the NIC driver. Since the Windows installation source files have already been downloaded and are located locally on the hard drive, the Task Sequence will continue with Windows Setup using the Windows installation source files located locally on the hard drive even if there is no network connectivity. The initial Windows Setup will then succeed but once it completes, since network connectivity is needed once again to continue the Task Sequence, in the case of SP1 and WinPE 2.1 where network connectivity never comes back, the Task Sequence fails when it cannot access the network to continue. However, in SP2 that utilizes WinPE 3.0, since network connectivity has been regained by the point that the initial Windows Setup completes and network connectivity is needed again by the Task Sequence, the Task Sequence continues and completes successfully. so the issue does not occur.

Resolution

 

There are several solutions to the problem:

 

1) Upgrade to SP2 of SCCM 2007, and then choose the option to download and run the Task Sequence locally ("Download content locally when needed by running task sequence") in the properties of the Advertisement of the Task Sequence.

 

2) Capture a reference image of the Windows OS on another model PC that does not utilize the affected NIC, and then deploy Windows OS via a Task Sequence that deploys from an Operating System Image instead of an Operating System Install Package. The way drivers are injected and installed in an Operating System Image is different than an Operating System Install Package (drivers are injected directly into the Operating System Image's Driver Store) so the process completes successfully.

 

3) Install an additional NIC card that does not require separate drivers for WinPE vs. the full Windows OS into the PC . Disconnect the NIC that requires separate drivers for WinPE vs. the full Windows OS, and then use the newly installed NIC exclusively during the Task Sequence.

 

4) The affected NIC drivers need to be somehow installed during the offlineServicing pass instead of the windowsPE pass. However there is no way to change the default behavior of the SCCM 2007 OSD Task Sequence tasks "Apply Driver Package" and "Auto Apply Drivers" to install drivers during a pass other than the windowsPE pass.Although by default the pass used by and automatically generated by an SCCM 2007 OSD Task Sequence in the unattend.xml file cannot be changed, some additional tasks can be added to the Task Sequence that manipulates both the unattend.xml file and where the drivers are installed from. This process is described below:

 

A) Open Notepad.

 

B) Below, choose the appropriate architecture of the Windows OS being deployed, copy the lines below the architecture, and paste them into the Notepad:

 

x86:

 

<?xml version="1.0" encoding="utf-8"?>

<unattend xmlns="urn:schemas-microsoft-com:unattend">

<settings pass="offlineServicing">

<component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="x86" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<DriverPaths>

<PathAndCredentials wcm:action="add" wcm:keyValue="1">

<Path>C:\_SMSTaskSequence\Drivers2</Path>

</PathAndCredentials>

</DriverPaths>

</component>

</settings>

</unattend>

 

x64:

 

<?xml version="1.0" encoding="utf-8"?>

<unattend xmlns="urn:schemas-microsoft-com:unattend">

<settings pass="offlineServicing">

<component name="Microsoft-Windows-PnpCustomizationsNonWinPE" processorArchitecture="amd64" publicKeyToken="31bf3856ad364e35" language="neutral" versionScope="nonSxS" xmlns:wcm="http://schemas.microsoft.com/WMIConfig/2002/State" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">

<DriverPaths>

<PathAndCredentials wcm:action="add" wcm:keyValue="1">

<Path>C:\_SMSTaskSequence\Drivers2</Path>

</PathAndCredentials>

</DriverPaths>

</component>

</settings>

</unattend>

 

C) Save the Notepad file with the name unattend.xml

 

When saving the file, make sure that "All Files (*.*)" is selected next to "Save as type:" so that it does not append the .txt extension to the file.

 

D) In the SCCM 2007 Admin console, under the "Computer Management" -->"Software Distribution" --> "Packages" node, create a new package that contains the unattend.xml file created in Steps B & C. A Program does not need to be created for the Package. After creating the Package, make sure to copy the Package to the Distribution Points.

 

E) In the SCCM 2007 Admin Console, under the "Computer Management" -->"Operating System Deployment" --> "Task Sequences" node, right click on the affected Task Sequence and choose "Properties".

 

F) In the "Apply Operating System" task, check the option "Use an unattended or sysprep answer file for a custom installation". Next to the "Package:" field, click on the "Browse..." button and select the package created in Step D. Next to the field "Filename:", enter in unattend.xml

 

G) Create a Driver Package that ONLY contains the drivers of the affected NIC device. Make sure to add the Driver Package to the Distribution Points after creating it.

 

H) If applicable, create a second Driver Package that contains all of the other drivers that need to be installed on the PC during the Task Sequence. Do NOT include the affected NIC drivers in this second Driver Package. Make sure to add the Driver Package to Distribution Points after creating it.

 

I) Remove any "Auto Apply Driver" tasks from the Task Sequence.

 

J) Immediately after the "Apply Network Settings" task, add an "Apply Driver Package" task and point it to the Driver Package created in Step G that only contains the affected NIC driver.

 

K) Immediately after the "Apply Driver Package" task created in Step J, add a "Run Command Line" task. In the "Name:" box, type in:

 

Rename Drivers Directory

 

In the "Command line:" box, enter in

 

cmd /c move "%_SMSTSMDataPath%\Drivers" "%_SMSTSMDataPath%\Drivers2"

 

L) Immediately after the "Run Command Line" task created in Step K, add another "Run Command Line" task. In the "Name:" box, type in:

 

Recreate Drivers Directory

 

In the "Command line:" box, enter in

 

cmd /c md "%_SMSTSMDataPath%\Drivers"

 

M) If applicable, immediately after the "Run Command Line" task added in Step L, add an "Apply Driver Package" and point to the Driver Package created in Step H that contains all of the rest of the drivers for the PC.

 

It is possible to use solution #4 and the above steps using the "Auto Apply Drivers" task instead. Instead of creating two separate Driver Packages and two separate "Apply Driver Package" tasks, two "Auto Apply Drivers" tasks that utilize driver categories can be used instead. A special driver category would need to be created for the affected NIC driver, and a separate category would need to be created for all other drivers. For the first"Auto Apply Drivers" task , choose the option "Limit driver matching to only consider drivers in selected categories", and then select the special category created for the affected NIC driver. In the second "Auto Apply Drivers" task, also select the option "Limit driver matching to only consider drivers in selected categories", but this time select the category created for all other drivers. Make sure that the affected NIC driver is NOT included in the "all other drivers" category.

 

NOTE:

As a possible resolution, attempting to not install any driver for the NIC while in WinPE via the "Apply Driver Package" task and/or the "Auto Apply Drivers" task and instead trying to install the NIC driver later in the Task Sequence during the full Windows OS portion (after the "Setup windows and ConfigMgr" task), via an "Install Software" task, does not resolve the problem. Once the Task Sequence detects that it does not have network connectivity in the full Windows OS (due to the NIC driver not being installed), the Task Sequence will fail. It will never get to the "Install Software" task that installs the NIC driver. Additionally, even if the Task Sequence did get to the "Install Software" task that installs the NIC driver, there would be no way of reaching the DP and downloading the software package containing the NIC driver since there is no network connectivity.

 

Frank Rojas | System Center Support Escalation Engineer

Share this post


Link to post
Share on other sites


Hi Niall, hi folks

 

Very interesting post...

 

Trying to manage a ZTI of Windows 7 on VM Baremetal and HW-Baremetal (32Bit and 64Bit), I am searching for the right NIC Driver for WM ESX (Adapter E 1000)and wondering:

 

1. Do I only need to add the .inf Files to the boot images (what about the cab and other Files)?

 

2. I added a .exe File to my SCCM2007 SP2 that's supposed to include the NIC driver from Intel: Network Adapter Driver for Windows Vista on Intel Site which is supposed to be esx compatible as this guide says. But these are Applications and no .infs. how do i get the infs (if really needed) out of the application instead of running it?

 

3. Aren't there drivers in the Windows 7 .iso Files?

 

4. In the "How can I deploy Windows Vista"-Section you are mentioning an SMSInstall account. Is it aequivalent to the SMSread or SMSadmin Account we had to create for Windows 7 Deployment?

 

I managed to boot the Client (for taking a capture) but the TS fails after "Initializing Windows PE" and "Running: Build and Capture Windows 7".

 

I know, lots of questions but I would be VEEEEEERY thankfull for any explanations here....Or eiven better a link to successfully installed and used NIC Drivers for the TS not to fail.

 

 

wish a nice and sunny week-end

 

Anna

Share this post


Link to post
Share on other sites

1. Do I only need to add the .inf Files to the boot images (what about the cab and other Files)?

 

the driver import will take what it needs only (usually the infs)

 

2. I added a .exe File to my SCCM2007 SP2 that's supposed to include the NIC driver from Intel: Network Adapter Driver for Windows Vista on Intel Site which is supposed to be esx compatible as this guide says. But these are Applications and no .infs. how do i get the infs (if really needed) out of the application instead of running it?

 

if you are using SP2 then for boot images use windows 7 network drivers, for SP1 use windows vista drivers, if you have an exe with drivers in it then extract the drivers using whatever silent install switch came with the drivers (what hardware supplier was it ?)

 

remember that there are two sets of drivers we are interested in here,

 

* drivers for our boot.wim files (they will be only vista or windows 7 based and only network or storage)

* drivers for the OS we are deploying, which could be xp, vista, server 2003/2008, windows 7

 

3. Aren't there drivers in the Windows 7 .iso Files?

yes but not for all hardware, so adding network drivers is common, dell for example provides driver packs for their latest models for configmgr, just import the lot to support an entire family of products like Dell E Series

 

4. In the "How can I deploy Windows Vista"-Section you are mentioning an SMSInstall account. Is it aequivalent to the SMSread or SMSadmin Account we had to create for Windows 7 Deployment?

 

yes SMSread is the same as SMSInstall, basically a 'user', whereas SMSadmin would have special administrative permissions, for example a local administrator on the sccm server..

Share this post


Link to post
Share on other sites

Hi Niall

 

didn't see your answers to my questions...

 

thanks a lot, you're a real "family-guy".

 

I postet a new topic here

 

I'll give a try just after my break! and hope for any suggestions on the other topic i just postet

 

 

cheers Anna

Share this post


Link to post
Share on other sites

I think this is the problem I've been having with my Dell OptiPlex 7020 machines when trying to image. The only thing that I can tell is, I am using the same driver throughout the image process for the WinPE and OS Deployment, the driver never changes (because this is the only driver the machine will accept in Windows, and also the only driver that allows WinPE to boot successfully), yet I still lose my IP address during the imaging phase and then it fails right near the end.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...