Hi All,
For the past few days I'm experiencing "0x800700C1" errors during the Build & Capture task sequences for an older OS image (Windows 2003 x86) which used to work flawlessly in the past. After detailed investigation of the logs it turns out that the task sequence is failing right after the "Perpare OS" step which is also responsible for implementing the WinPE boot image and the boot sector changes prior the capturing step. The associated error messages within the logs are indicating few times the following:
"is not a valid Win32 application"
While this didn't make too much sense initially, digging down the logs a bit further shown that the problem occurs right after the following command is engaged:
"C:\_SMSTaskSequence\WinPE\SMS\bin\i386\bootsect.exe" /NT60 SYS /MBR
I tested the command manually and it certainly gives back the same error which makes me think that the included within the x86 boot image bootsect.exe binary is not x86 compatible or there is another problem with it.
While my SCCM Boot Images are customized with very few boot drivers, there were no other major changes applied to them and furthermore the same issue was experienced also with the unmodified x86 boot image so this whole problem relates back to the Windows 8.1 ADK distribution.
Anybody else experiencing similar problems ?
---------------------------------------------------------------------------------------------------------------------------------------------
Update:
In the meantime I made an additional investigation with the bootsect.exe file directly from the Windows 8.1 x86 ISO images (same as the one with WinPE 5.0) and it turns out that this version of the file just can't be used on Windows 2003 x86 OS instances. The same "is not a valid Win32 application" error appears with it.
I can confirm that there is no problem with bootsect.exe binary from the Windows 8.0 ISO images, so most probably the solution to my original problem will be to replace manually the file within the original WinPE 5.0 image with an older version.
---------------------------------------------------------------------------------------------------------------------------------------------
Update:
I figured out why the issue is happening even with older WinPE images. The problem resides with SCCM and more specifically with the modifications of the boot images. It doesn't matter whether or not you would be using old or new image. When you upload the boot image to SCCM, it automatically includes the "SMS" folder in it's internal structure which contains the new version of the "bootsect.exe" and also other binaries related to the boot modification processes. During the "Perpare OS" step the SCCM client copies over the referenced boot image and extracts some of the files out of this folder to the ""C:\_SMSTaskSequence\WinPE\" location. Because the provided "bootsect.exe" version is simply incompatible with W2K3 OS, the task just fails despite of the provided older WinPE boot image. So all in all it seems that the problem cannot be resolved without manual intervention at the boot image, but more testing will be required before making any final conclusions. For the time being I would say that SCCM 2012 R2 cannot be considered as fully compatible for managing W2K3 OSD procedures.
---------------------------------------------------------------------------------------------------------------------------------------------
Workaround:
And so the temporary (maybe even long-term) solution is to replace the bootsect.exe file with an older version then continue with the capture step as per the defined SCCM task sequence. Now the only difficulty was to decide whether to change the boot image directly through DISM or to go for a more comfortable way and implement a global change that would reflect all boot images. Normally I wouldn't go with global changes easily but this time I went for the latter by replacing the the ADK 8.1 based bootsect.exe file at its installation point which in my case is:
E:\Program Files (x86)\Windows Kits\8.1\Assessment and Deployment Kit\Deployment Tools\x86\BCDBoot\
The reason why I went this way was to ensure that whenever I'm updating my boot images with new drivers, the "correct" bootsect.exe file would get integrated instead of the latest version. Furthermore whenever there is a requirement to redistribute the images to DP's, the boot images will get updated/reconstructed and therefore the bootsect.exe binary would be reinserted, so the manual modification of the WIM files is not really a solution.
Of course this global modification method is absolutely unsupported, so if anybody reading this would decide to make similar implementation, he/she will take the responsibility over potential risks and consequences. I haven't tested the older version of the bootsect.exe file with newer OS versions (8.1 / 2012R2) so it is important to note that there is a big potential risk involved with the above described modification as it could break build/capture/deploy tasks for the new OS's. Perhaps I'll give it a test and see how things would work.
So all in all let's hope that MS would release a fixed version of bootsect.exe with their next ADK release.