====== Booting SCCM via HTTP ====== [[http://www.microsoft.com/systemcenter/configurationmanager/en/us/default.aspx|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. ===== Preparation ===== ==== Create the boot files ==== === sccm.iso === {{ :clipart:cdrom.jpeg?150x150|A CD-ROM}} 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''. === wimboot === Download the latest version of [[http://git.ipxe.org/releases/wimboot/wimboot-latest.zip|wimboot.zip]], and extract the file ''wimboot''. === bootstrap.vbs === 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 === winpeshl.ini === 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". === sccm.ipxe === Create a text file ''sccm.ipxe'' containing: {{ :clipart:ram.jpeg?160x116|Some RAM}} #!ipxe kernel wimboot initrd bcd BCD initrd boot.wim boot.wim boot ==== Modify the boot image ==== === Modify the boot image (using Windows) === You can use the ''ImageX'' tool (available as part of the [[http://www.microsoft.com/en-us/download/details.aspx?id=5753|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 === Modify the boot image (using Linux) === You can use the ''imagex'' tool (available as part of [[http://sourceforge.net/projects/wimlib/|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 ==== Publish the boot files ==== {{ :clipart:nic.jpeg?158x148|A network card}} Copy the files: * ''sccm.ipxe'' * ''wimboot'' * ''sccmfiles/boot/bcd'' * ''sccmfiles/sources/boot.wim'' to a single directory on your web server. ===== Booting ===== 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 [[:howto:dhcpd|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: {{ :screenshots:sccm_boottext.png?540x300 |Screenshot of SCCM booting}} A few seconds later, you should see the usual SCCM "Welcome to the Task Sequence Wizard" screen: {{ :screenshots:sccm_ui.png?600x450 |Screenshot of SCCM booted via HTTP}} Congratulations on successfully booting SCCM via HTTP! {{ :clipart:smile.png?200x200 |Success}}