System Center Configuration Manager (SCCM), formerly known as Systems Management Server (SMS), is a Microsoft product used to deploy and manage large groups of Windows computers. If you are using iPXE, then you can boot an SCCM client using HTTP, which is much faster and more reliable than the default TFTP protocol. Over a Gigabit Ethernet network, a typical 200MB SCCM image should download in less than two seconds.
In the Configuration Manager console, open up Site Database → Computer Management → Operating Systems Deployment. Right-click on Task Sequences and choose Create Task Sequence Media.
In the Create Task Sequence Media Wizard, choose Bootable Media and CD/DVD set, and save the media file as sccm.iso.
Extract all files from the ISO image sccm.iso to a directory sccmfiles.
Download the latest version of wimboot.zip, and extract the file wimboot.
Create a text file bootstrap.vbs containing:
Set os = WScript.CreateObject ( "WScript.Shell" )
os.Run "%COMSPEC%", 7, false
os.Run "%COMSPEC% /c title Initialising... && wpeinit " & _
"&& net start dnscache", 1, true
os.RegWrite "HKLM\SYSTEM\CurrentControlSet\Control\PEBootType", _
"Ramdisk:OpticalDrive", "REG_SZ"
os.Run WScript.ScriptFullName & "\..\TsmBootStrap.exe /env:WinPE " & _
"/configpath:%SYSTEMDRIVE%\sms\data", 1, true
Create a text file winpeshl.ini containing:
[LaunchApps] "wscript.exe","%SYSTEMDRIVE%\sms\bin\x64\bootstrap.vbs"
If you are using a 32-bit client computer, then you will need to change “x64” to “x86”.
Create a text file sccm.ipxe containing:
#!ipxe kernel wimboot initrd bcd BCD initrd boot.wim boot.wim boot
You can use the ImageX tool (available as part of the Windows Automated Installation Kit (WAIK)) to mount the boot image and modify the files:
mkdir mntpnt imagex /mountrw sccmfiles\sources\boot.wim 1 mntpnt xcopy /e /f /y sccmfiles\sms mntpnt\sms copy /y winpeshl.ini mntpnt\Windows\System32\ copy /y bootstrap.vbs mntpnt\sms\bin\x64\ imagex /unmount /commit mntpnt
You can use the imagex tool (available as part of wimlib) to mount the boot image and modify the files:
mkdir mntpnt imagex mountrw sccmfiles/sources/boot.wim 1 mntpnt cp -drn sccmfiles/sms/* mntpnt/sms/ rm -f mntpnt/Windows/System32/winpeshl.ini cp winpeshl.ini mntpnt/Windows/System32/ cp bootstrap.vbs mntpnt/sms/bin/x64/ imagex unmount mntpnt --commit
Copy the files:
sccm.ipxewimbootsccmfiles/boot/bcdsccmfiles/sources/boot.wimto a single directory on your web server.
You should now be able to configure iPXE to boot from the file sccm.ipxe on your web server. For example, if you are using ISC dhcpd then you can edit /etc/dhcpd.conf to contain
filename "http://my.web.server/sccm.ipxe";
You should see iPXE download and boot your SCCM files:
A few seconds later, you should see the usual SCCM “Welcome to the Task Sequence Wizard” screen:
Congratulations on successfully booting SCCM via HTTP!