Booting MDT 2013 LiteTouch with FOG
-
Method #1
The first method involves creating the boot CDROM image in MDT, moving that image to a directory on the FOG server and then creating a customer PXE boot menu in FOG. I’m not going to cover any of the MDT image creation process in this post. At this point of you need to integrate FOG and MDT you should already know how to setup and use MDT.
- On your MDT server select your Deployment Share->Update Deployment Share. This will update your litetouch boot image files with the latest settings from your MDT configuration. When the update process completes change to the DeploymentShare\boot folder. There are 2 files we will use for this method of integration. These files are LiteTouchPE_x86.iso and LiteTouchPE_x64.iso.
- We need to prepare the FOG server by creating a location to save these ISO image so they are accessible by the FOG web server. Depending on the version of linux you are using we will need to create a directory in /var/www/html (or if the /var/www/html directory does not exist then we will use /var/www). This path is to the FOG web server’s root or base directory. We will create a folder called isoimg (ISO Images) for this method. Use the following command
md /var/www/html/isoimg
ormd /var/www/isoimg
depending on your linux distribution. - Move the ISO files we identified in step 1 to /var/www/html/isoimg or /var/www/isoimg depending on your linux distribution (for the rest of this post I’ll use /var/www/html as the web server’s root directory)
- Change to the web servers root directory with
cd /var/www/html
- Change the owner of the isoimg to user fog and group fog with this command
chown -R fog.fog isoimg
- Ensure that both iso images are in the isoimg folder and are owned by the fog user.
- From the FOG management GUI select the following Fog Configuration->iPXE New Menu Entry
- Fill in the following details:
Menu Item: mdtlti.x86
Description: MDT LiteTouch x86 Boot
Parameters:
initrd http://${fog-ip}/isoimg/LiteTouchPE_x86.iso
chain memdisk iso raw
Menu show with: All Hosts - From the FOG management GUI select the following Fog Configuration->iPXE New Menu Entry
- Fill in the following details:
Menu Item: mdtlti.x64
Description: MDT LiteTouch x64 Boot
Parameters:
initrd http://${fog-ip}/isoimg/LiteTouchPE_x64.iso
chain memdisk iso raw
Menu show with: All Hosts - Your configuration should now be set to boot the MDT ISO images from within the FOG PXE menu.
Be aware with this method you will get the MDT CDROM prompt To Boot press any key (as you would if you booted via a real cdrom)
-
Method #2
(Will fill in details in a bit)
-
(reserved space)
-
(reserved space)
-
(reserved space)
-
Method #2
This second method involves taking the LiteTouchPE_x86.wim and LiteTouchPE_x64.wim created in the MDT environment and combining them with elements of the WAIK to create a directly bootable MDT litetouch image that can be launch via FOG’s ipxe menu.
- On your MDT server select your Deployment Share->Update Deployment Share. This will update your litetouch boot image files with the latest settings from your MDT configuration. When the update process completes change to the DeploymentShare\boot folder. There are 2 files we will use for this method of integration. These files are LiteTouchPE_x86.On your MDT server select your Deployment Share->Update Deployment Share. This will update your litetouch boot image files with the latest settings from your MDT configuration. When the update process completes change to the DeploymentShare\boot folder. There are 2 files we will use for this method of integration. These files are LiteTouchPE_x86.wim and LiteTouchPE_x64.wim.
- Download the Windows Automated Installation Kit (WAIK) for Windows 7 from the following link: http://www.microsoft.com/en-us/download/details.aspx?id=5753
- Install WAIK on a development system (workstation). You will only need WAIK installed long enough to extract the boot images.
- Once WAIK is installed Follow this path Start menu->All Programs->Microsoft Windows AIK->Deployment Tools->Command Prompt. Selecting this menu should open a cmd shell. This next step we will create both the 32-bit and the 64-bit versions of the WinPE boot environments. In the command shell key in the following:
mkdir %temp%\fog\mdtboot
copype x86 %temp%\fog\mdtboot\x86
copype amd64 %temp%\fog\mdtboot\x64 - Download wimboot from this link: http://git.ipxe.org/releases/wimboot/wimboot-latest.zip
- Extract the wimboot file from the zip file and save the (wimboot) file only in the follow folder: %temp%\winpe\fog
- Copy LiteTouchPE_x86.wim and LiteTouchPE_x64.wim from the MDT deployment share to the %temp%\fog\mdtboot folder
- Using 7-zip or similar tool create a zip file of %temp%\fog*.* as mdtfog.zip
- Move the mdtfog.zip file to the FOG web server’s base directory (either /var/www/html or /var/www depending on the linux distrobution).
- On the FOG server navigate to the FOG web server’s base directory as indicated in step 7
- Use the linux unzip program to extract the mdtfog.zip archive to the web server’s base directory using this command: unzip mdtfog.zip (warning if unzip is not installed for your linux distrobution you will need to install it using the following command [rhel based] yum install unzip -y [deb based] sudo apt-get install unzip )
- From the FOG management GUI select the following Fog Configuration->iPXE New Menu Entry
- Fill in the following details:
Menu Item: winpe.BootMDT
Description: Boot MDT LiteTouch
Parameters:
cpuid --ext 29 && set arch x64 || set arch x86
kernel http://${fog-ip}/wimboot
initrd http://${fog-ip}/mdtboot/${arch}/ISO/boot/bcd BCD
initrd http://${fog-ip}/mdtboot/${arch}/ISO/boot/boot.sdi boot.sdi
initrd -n boot.wim http://${fog-ip}/mdtboot/LiteTouchPE_${arch}.wim boot.wim
boot
Menu show with: All Hosts - Your configuration should now be set to boot MDT via the wim images from within the FOG PXE menu.
-
#wiki tagging this.
-
@george1421 Bumping this thread, wanting to get it added to the wiki.
-
This tutorial is written for 1.30 fog version
how to add the same PXE parameters in 1.2.0 fog ? -
-
@lebrun78 To do the same type of thing in 1.2.0, you need to use the “Advanced Menu” option and enter the fields necessary there. 1.3.0 does not exist…yet, It is trunk. I only state that so people don’t think 1.3.0 has indeed released when in fact it has not.
I don’t know if wimboot or mdtboot exist in the document root of the next-server field either.
-
@george1421 Thank you for this tutorial - it worked great but I did discover that these steps are not compatible if booting into FOG using UEFI, it only works if using Legacy. When I tried at first using UEFI, it would load to the boot menu and once I picked my WinPE entry iPXE would fail with this error “Could not boot: Exec format error (http://ipxe.org/2e008081)”. Then i tried using Legacy mode to boot into Fog and launched my iso and it worked like a charm. I know this is not a fog issue but iPXE but figured I would post this in case someone else come across this issue.
@Wayne-Workman I think this would be a good note to add when these steps are added to wiki.
-
@kinger37 Thank you for reporting this.
To be honest it was only written and tested with bios (legacy) mode in mind. I’m going to suspect this is a uefi/memdisk issue. UEFI is a different critter so I suspect there might have some issues. Also I’d have to circle back to see if the MDT image supports uefi booting. Either way I should update the article to only indicate that legacy mode is required.
-
Hello
How could I had a password access to this new item in boot menu ?
-
Looking at the httpd log, all files are loaded but I get a blinking cursor on my testing vm.
I suppose it’s a problem with bcd, may be the path is incorrect ?192.168.122.10 - - [01/Dec/2016:11:54:34 +0100] "POST /fog/service/ipxe/boot.php HTTP/1.1" 200 1493 "-" "iPXE/1.0.0+ (3a02)" 192.168.122.10 - - [01/Dec/2016:11:54:34 +0100] "GET /fog/service/ipxe/bg.png HTTP/1.1" 200 44908 "-" "iPXE/1.0.0+ (3a02)" 192.168.122.10 - - [01/Dec/2016:11:54:38 +0100] "GET /fog/service/ipxe/advanced.php HTTP/1.1" 200 437 "-" "iPXE/1.0.0+ (3a02)" 192.168.122.10 - - [01/Dec/2016:11:54:38 +0100] "GET /wimboot HTTP/1.1" 301 316 "-" "iPXE/1.0.0+ (3a02)" 192.168.122.10 - - [01/Dec/2016:11:54:38 +0100] "GET /wimboot/ HTTP/1.1" 200 1298 "-" "iPXE/1.0.0+ (3a02)" 192.168.122.10 - - [01/Dec/2016:11:54:38 +0100] "GET /mdtboot/x64/media/Boot/BCD HTTP/1.1" 200 262144 "-" "iPXE/1.0.0+ (3a02)" 192.168.122.10 - - [01/Dec/2016:11:54:38 +0100] "GET /mdtboot/x64/media/Boot/boot.sdi HTTP/1.1" 200 3170304 "-" "iPXE/1.0.0+ (3a02)" 192.168.122.10 - - [01/Dec/2016:11:54:38 +0100] "GET /mdtboot/LiteTouchPE_x64.wim HTTP/1.1" 200 298875280 "-" "iPXE/1.0.0+ (3a02)"
-
@lebrun78 Well what I see I’m not sure of. There is one of two that are wrong.
I see this line
GET /mdtboot/x64/media/Boot/BCD
and this line
GET /mdtboot/LiteTouchPE_x64.wim
but the config file says this:
initrd http://${next-server}/mdtboot/${arch}/ISO/boot/bcd BCD
and
initrd -n boot.wim http://${next-server}/mdtboot/LiteTouchPE_${arch}.wim boot.wim
While I’m just guessing, I might expect the BCD line to be wrong. On the web server its getting
/mdtboot/x64/media/Boot/BCD
but the real file name isbcd
not BCD. The other thing you have bcd in a different path than the instructions as CaSE iS important for linux. Make sure you have the directory structure setup as I have it outlined in Method 2 -
I had ti change the case of bcd because it is like this, in uppercase that was generate by copype.
So I change that in the ipxe menu config.cpuid --ext 29 && set arch x64 || set arch x86 kernel http://${next-server}/wimboot initrd http://${next-server}/mdtboot/${arch}/media/Boot/BCD BCD initrd http://${next-server}/mdtboot/${arch}/media/Boot/boot.sdi boot.sdi initrd -n boot.wim http://${next-server}/mdtboot/LiteTouchPE_${arch}.wim boot.wim boot Menu show with: All Hosts``` Should I change the case of the bcd file ?
-
@lebrun78 well this one has me a bit perplexed.
I want you to post the output of the following commands.
ls -la /var/www/html
and
ls -la /var/www/html/mdtboot
and
ls -la /var/www/html/mdtboot/x64/media/Boot
-
Here are the results :
ls -la /var/www/html total 36 drwxr-xr-x 6 root root 4096 1 déc. 10:42 . drwxr-xr-x 6 root root 4096 19 nov. 00:49 .. drwxr-xr-x 11 apache apache 4096 23 nov. 12:15 fog drwxr-xr-x 12 apache apache 4096 8 oct. 2012 fog.prev -rw-r--r-- 1 root root 68 8 oct. 2012 index.html -rw-r--r-- 1 root root 45 18 mai 2015 #index.php# -rw-r--r-- 1 root root 45 8 oct. 2012 index.php drwxr-xr-x 4 root root 4096 1 déc. 11:54 mdtboot drwxr-xr-x 3 root root 4096 1 déc. 10:16 wimboot
ls -la /var/www/html/mdtboot total 516716 drwxr-xr-x 4 root root 4096 1 déc. 11:54 . drwxr-xr-x 6 root root 4096 1 déc. 10:42 .. -rw-r--r-- 1 root root 298875280 3 nov. 17:13 LiteTouchPE_x64.wim -rw-r--r-- 1 root root 230219137 3 nov. 17:09 LiteTouchPE_x86.wim drwxr-xr-x 5 root root 4096 1 déc. 11:53 x64 drwxr-xr-x 5 root root 4096 1 déc. 11:54 x86
ls -la /var/www/html/mdtboot/x64/media/Boot total 4300 drwxr-xr-x 40 root root 4096 29 nov. 17:13 . drwxr-xr-x 41 root root 4096 29 nov. 17:13 .. -rw-r--r-- 1 root root 262144 25 mai 2016 BCD drwxr-xr-x 2 root root 4096 29 nov. 17:13 bg-bg -rw-r--r-- 1 root root 1024 25 mai 2016 bootfix.bin -rw-r--r-- 1 root root 3170304 25 mai 2016 boot.sdi drwxr-xr-x 2 root root 4096 29 nov. 17:13 cs-cz drwxr-xr-x 2 root root 4096 29 nov. 17:13 da-dk drwxr-xr-x 2 root root 4096 29 nov. 17:13 de-de drwxr-xr-x 2 root root 4096 29 nov. 17:13 el-gr drwxr-xr-x 2 root root 4096 29 nov. 17:13 en-gb drwxr-xr-x 2 root root 4096 29 nov. 17:13 en-us drwxr-xr-x 2 root root 4096 29 nov. 17:13 es-es drwxr-xr-x 2 root root 4096 29 nov. 17:13 es-mx drwxr-xr-x 2 root root 4096 29 nov. 17:13 et-ee drwxr-xr-x 2 root root 4096 29 nov. 17:13 fi-fi drwxr-xr-x 2 root root 4096 29 nov. 17:13 Fonts drwxr-xr-x 2 root root 4096 29 nov. 17:13 fr-ca drwxr-xr-x 2 root root 4096 29 nov. 17:13 fr-fr drwxr-xr-x 2 root root 4096 29 nov. 17:13 hr-hr drwxr-xr-x 2 root root 4096 29 nov. 17:13 hu-hu drwxr-xr-x 2 root root 4096 29 nov. 17:13 it-it drwxr-xr-x 2 root root 4096 29 nov. 17:13 ja-jp drwxr-xr-x 2 root root 4096 29 nov. 17:13 ko-kr drwxr-xr-x 2 root root 4096 29 nov. 17:13 lt-lt drwxr-xr-x 2 root root 4096 29 nov. 17:13 lv-lv -rw-r--r-- 1 root root 799072 15 juil. 19:06 memtest.exe drwxr-xr-x 2 root root 4096 29 nov. 17:13 nb-no drwxr-xr-x 2 root root 4096 29 nov. 17:13 nl-nl drwxr-xr-x 2 root root 4096 29 nov. 17:13 pl-pl drwxr-xr-x 2 root root 4096 29 nov. 17:13 pt-br drwxr-xr-x 2 root root 4096 29 nov. 17:13 pt-pt drwxr-xr-x 2 root root 4096 29 nov. 17:13 Resources drwxr-xr-x 2 root root 4096 29 nov. 17:13 ro-ro drwxr-xr-x 2 root root 4096 29 nov. 17:13 ru-ru drwxr-xr-x 2 root root 4096 29 nov. 17:13 sk-sk drwxr-xr-x 2 root root 4096 29 nov. 17:13 sl-si drwxr-xr-x 2 root root 4096 29 nov. 17:13 sr-latn-rs drwxr-xr-x 2 root root 4096 29 nov. 17:13 sv-se drwxr-xr-x 2 root root 4096 29 nov. 17:13 tr-tr drwxr-xr-x 2 root root 4096 29 nov. 17:13 uk-ua drwxr-xr-x 2 root root 4096 29 nov. 17:13 zh-cn drwxr-xr-x 2 root root 4096 29 nov. 17:13 zh-hk drwxr-xr-x 2 root root 4096 29 nov. 17:13 zh-tw
-
@lebrun78 The thing that jumps out to me is that wimboot is file not a directory. The wimboot file is the kernel that merges all of these files together.