imageWhen deploying Windows 7 via OSD in SCCM 2007 SP2, upon rebooting from the WinPE stage to Windows 7 Mini-Setup, Windows may not start and the following error occurs instead:

Status: 0xc0000001
Info: An unexpected error has occurred.

Examining the following logs may reveal the following errors:

SMSTS.log

Applying driver package "<Driver_Package_ID>". OSDDriverClient
...
Writing configuration information to C:\_SMSTaskSequence\PkgMgrTemp\drivers.xml OSDDriverClient
Successfully saved configuration information to C:\_SMSTaskSequence\PkgMgrTemp\drivers.xml OSDDriverClient
Setting temporary directory to 'C:\_SMSTaskSequence\PkgMgrTemp'. OSDDriverClient
Calling Package manager to add drivers to the offline driver store. OSDDriverClient
Command line for extension .exe is "%1" %* OSDDriverClient
Set command line: "X:\windows\Pkgmgr\pkgmgr.exe" /o:"C:;C:\Windows" /n:"C:\_SMSTaskSequence\PkgMgrTemp\drivers.xml" /l:"C:\_SMSTaskSequence\PkgMgrTemp\PkgMgr" OSDDriverClient
Executing command line: "X:\windows\Pkgmgr\pkgmgr.exe" /o:"C:;C:\Windows" /n:"C:\_SMSTaskSequence\PkgMgrTemp\drivers.xml" /l:"C:\_SMSTaskSequence\PkgMgrTemp\PkgMgr" OSDDriverClient
Process completed with exit code 2 OSDDriverClient
uExitCode == 0, HRESULT=80070002 (e:\nts_sms_fre\sms\client\osdeployment\osddriverclient\sysprepdriverinstaller.cpp,553) OSDDriverClient
Package manager failed with return code 2 OSDDriverClient
AddPnPDriverToStore( pszSource, sTargetSystemDrive, sTargetSystemRoot, wProcessorArchitecture), HRESULT=80070002 (e:\nts_sms_fre\sms\client\osdeployment\osddriverclient\sysprepdriverinstaller.cpp,663) OSDDriverClient
Failed to add driver to driver store. Code 0x80070002 OSDDriverClient
InstallDriver( iInstallParams->sContentId, iInstallParams->sSource, iInstallParams->pBootCriticalInfo ), HRESULT=80070002 (e:\nts_sms_fre\sms\client\osdeployment\osddriverclient\driverinstaller.cpp,557) OSDDriverClient
...
pDriverInstaller->InstallDriverPackage( sPackageId, pBootCriticalInfo ), HRESULT=80070002 (e:\nts_sms_fre\sms\client\osdeployment\osddriverclient\osddriverclient.cpp,409) OSDDriverClient
Failed to provision driver. Code 0x80070002 OSDDriverClient
Exiting with return code 0x80070002 OSDDriverClient
Process completed with exit code 2147942402 TSManager
!--------------------------------------------------------------------------------------------! TSManager
Failed to run the action: Apply Driver Package.
The system cannot find the file specified. (Error: 80070002; Source: Windows) TSManager

PkgMgr.log

<Date> <Time>, Info CBS Pkgmgr: called with: ""X:\windows\Pkgmgr\pkgmgr.exe" /o:"C:;C:\Windows" /n:"C:\_SMSTaskSequence\PkgMgrTemp\drivers.xml" /l:"C:\_SMSTaskSequence\PkgMgrTemp\PkgMgr""
00000001 Shim considered [l:252{126}]"\??\C:\Windows\Servicing\x86_microsoft-windows-servicingstack_31bf3856ad364e35_6.1.7600.16385_none_0935b76c289e0fd5\pkgmgr.exe" : got STATUS_OBJECT_PATH_NOT_FOUND
<Date> <Time>, Info CSI 00000001 Shim considered [l:252{126}]"\??\C:\Windows\Servicing\x86_microsoft-windows-servicingstack_31bf3856ad364e35_6.1.7600.16385_none_0935b76c289e0fd5\pkgmgr.exe" : got STATUS_OBJECT_PATH_NOT_FOUND
00000002 Shim considered [l:246{123}]"\??\C:\Windows\WinSxS\x86_microsoft-windows-servicingstack_31bf3856ad364e35_6.1.7600.16385_none_0935b76c289e0fd5\pkgmgr.exe" : got STATUS_SUCCESS
<Date> <Time>, Info CSI 00000002 Shim considered [l:246{123}]"\??\C:\Windows\WinSxS\x86_microsoft-windows-servicingstack_31bf3856ad364e35_6.1.7600.16385_none_0935b76c289e0fd5\pkgmgr.exe" : got STATUS_SUCCESS
<Date> <Time>, Info CBS
<Date> <Time>, Info CBS pkgmgr called with: ""X:\windows\Pkgmgr\pkgmgr.exe" /o:"C:;C:\Windows" /n:"C:\_SMSTaskSequence\PkgMgrTemp\drivers.xml" /l:"C:\_SMSTaskSequence\PkgMgrTemp\PkgMgr""
<Date> <Time>, Info CBS Executing DISM: "C:\Windows\WinSxS\x86_microsoft-windows-servicingstack_31bf3856ad364e35_6.1.7600.16385_none_0935b76c289e0fd5\dism.exe" /image:"C:\\" /sysdrivedir:"C:\\" /norestart /logpath:"C:\_SMSTaskSequence\PkgMgrTemp\PkgMgr.txt" /apply-unattend:"C:\_SMSTaskSequence\PkgMgrTemp\drivers.xml"
<Date> <Time>, Info CBS Could not create process with command line ""C:\Windows\WinSxS\x86_microsoft-windows-servicingstack_31bf3856ad364e35_6.1.7600.16385_none_0935b76c289e0fd5\dism.exe" /image:"C:\\" /sysdrivedir:"C:\\" /norestart /logpath:"C:\_SMSTaskSequence\PkgMgrTemp\PkgMgr.txt" /apply-unattend:"C:\_SMSTaskSequence\PkgMgrTemp\drivers.xml"" [HRESULT = 0x80070002 - ERROR_FILE_NOT_FOUND]
<Date> <Time>, Info CBS Failed to start dism.exe. [HRESULT = 0x80070002 - ERROR_FILE_NOT_FOUND]
<Date> <Time>, Info CBS pkgmgr return code: 0x2
<Date> <Time>, Info CBS Pkgmgr: return code: 0x2

This issue can occur if you are attempting to use a WinPE 2.x based Boot Image created with the WAIK 1.x for a Windows 7 deployment. Windows 7 deployments require a WinPE 3.0 or newer based Boot Image created with the WAIK 2.x or newer.

Examining the logs reveals that the deployment is trying to use Pkgmgr.exe (Package Manager), which is a WinPE 2.x/WAIK 1.x tool, to try to inject drivers into Windows 7. PkgMgr.exe is not compatible with Windows 7 and it has been replaced with DISM.exe in WinPE 3.x/WAIK 2.x. DISM.exe is required to inject drivers properly into Windows 7.

Using the incorrect Boot Image causes the deployment to try to use a combination of PkgMgr.exe and DISM.exe, and ends up causing it to fail.

Resolution

Check to make sure that the Task Sequence deploying Windows 7 is using a WinPE 3.x based Boot Image.

To check the Boot Image that the Task Sequence deploying Windows 7 is using:

  1. In the ConfigMgr 2007 console under the "Operating System Deployment" --> "Task Sequences" node, right click on the affected Task Sequence and choose "Properties".
  2. Click on the "Advanced" tab
  3. Under the option "Use a boot image:", make sure that the Boot Image selected is a WinPE 3.x based Boot Image

To check the version of the Boot Image to verify that it is a WinPE 3.x Boot Image:

  1. In the ConfigMgr 2007 console under the "Operating System Deployment" --> "Boot Images" node, right click on the Boot Image as determine in the above steps and choose "Properties".
  2. Click on the "Images" tab.
  3. Click on the "Reload" button.
  4. Check the value of the field "OS version".

For WinPE 3.x based Boot Images, the version number should at least be at 6.1.7600.16385. If the version number is 6.0.6001.18000 or older, this is a WinPE 2.x based Boot Image which will not work with Windows 7 deployments.

Frank Rojas | Configuration Manager Support Escalation Engineer