I faced very strange issue while I was trying to build Windows Server 2016 release on Cisco UCS B200M4. Server is booting from NetApp storage and I’m using UEFI bios. Deployment was failing on SCCM OSD step : “Apply Operating System“.
So lets make some version introduction. I used ConfigMgr versions 1610,1702 and recently 1706. Windows ADK versions were 1511, then 1703 and currently 1709. With all versions I was facing same error.
I tried to run same deployment on the same hardware, booting from SAN with the legacy bios and it worked fine.
I also tried to make same deployment on the VM on the VMWARE with the UEFI bios, but with local disk and deployment worked fine.
And last scenario was to deploy Windows Server on Cisco UCS B200M4 with UEFI bios and booting from SAN, but deployment was with the ISO file – deployment worked fine.
I could easily use legacy bios, but I need UEFI for Secure Boot.
I started digging in the log file
So in the log file 80004005 – unspecified error, so I moved a little bit higher and I saw
System partition not set – very weird, I followed Microsoft guide for UEFI disk partitioning from the following link. In the log file I noticed that installer tries to run following command
"bcdboot.exe" C:\WINDOWS /l en-US
however correct one should be
bcdboot C:\WINDOWS /s S: /f UEFI /l en-US
but even if I try to add the correct command to the SCCM task sequence it was still failing.
I checked partitioning – all partitions were properly created in previous step.
So let’s go back to the log file
In the log one can see that !BootDevicePath.empty() is returning 80004005. I had a case open with Microsoft, so I asked what is this step doing and at some point I got my answer :
“The line !sBootDevicePath.empty() is checking the value of sBootDevicePath which is populated by invoking the WMI method root\wmi\BcdStore.GetSystemPartition(). BcdStore is a Windows built in WMI class.”
Now I was able to check what is going on with the WMI query in powershell
And in fact system partition was not set in the WMI, even system disk was not set. However when I knew the WMI class, I could check for the methods in this class and I learnt that there method called SetSystemStoreDevice() and when I called this method with the proper letter, in my case EFI partition have assigned letter S:
all was fine – system disk was set, system partition was set.
So for my case workaround is to add one step before “Apply Operating System” with calling WMI method of BCDStore WMI class and then deployment works fine. This was a very strange case and I have no idea which SCCM step is not performed correctly – “Format and Partition Disk” or “Apply Operating System” – however when I add the following step
after “Format and Partition Disk” and before “Apply Operating System” – whole OS deployment works fine