MDT 2013/WDS Win 2012R2 – using pxelinux as pxe boot loader

Hello world,

In the previous post, we have seen how it was possible to easily combine WDS and MDT 2013 in order to build a portable deployment infrastructure.  In the past (and the solution is still valid), we were using custom tftp solution and we were using the pxelinux boot loader to customize and personalize our deployment solution. We like the fact that we can use only Microsoft built-in tools to setup our portable deployment infrastructure (we can script the installation process – maybe described in another post).  The other advantage of using WDS component is the fact that the TFTP part includes all the latest additions to the protocol ( You can specify size block through the GUI in order to speed up your download)

Overview

We assume that you have followed the setup instructions as described in this post .  You have checked that you configuration is working as expected.  Now, you would like to customize the user experience.  We usually brand on deployment infrastructure. We will be using the pxelinux (which is open source) component.  The pxelinux component enables you to create a custom menu while the system is booting up and let you select which operations you want to perform.

Step 1 – Download the pxelinux components

We first need to download the components and file we need in order to customize the tftp part of our deployment server solution.  We will be downloading the syslinux package from this location.  When saved on your computer, you can unzip it into your favorite location.  For this post, we assume that you have unzipped the package under c:\syslinux-6.02\

Step 2 – Copy the files in your WDS server

You will need to copy the files listed below into the WDS boot folder location.  In other words, copy the following files

  • <%Location%>\syslinux-6.02\bios\com32\chain\chain.c32
  • <%Location%>\syslinux-6.02\bios\com32\cmenu\libmenu\libmenu.c32
  • <%Location%>\syslinux-6.02\bios\com32\libutil\libutil.c32
  • <%Location%>\syslinux-6.02\bios\com32\menu\menu.c32
  • <%Location%>\syslinux-6.02\bios\com32\menu\vesamenu.c32
  • <%Location%>\syslinux-6.02\bios\com32\lib\libcom32.c32
  • <%Location%>\syslinux-6.02\bios\com32\elflink\ldlinux\ldlinux.c32
  • <%Location%>\syslinux-6.02\bios\core\pxelinux.0

where <%Location%> is the location where you have unzipped the syslinux package

into the following folders

  • <%DriveLetter%>\RemoteInstall\Boot\x86
  • <%DriveLetter%>\RemoteInstall\Boot\x64

Step 3 – Rename some files

You might want to rename the following files

x86 architecture
  • <%DriveLetter%>\RemoteInstall\Boot\x86\abortpxe.com into abortpxe.0
  • <%DriveLetter%>\RemoteInstall\Boot\x86\pxeboot.n12  into pxeboot.0
  • <%DriveLetter%>\RemoteInstall\Boot\x86\pxelinux.0  into pxelinux.com

x64 architecture

  • <%DriveLetter%>\RemoteInstall\Boot\x64\abortpxe.com  into abortpxe.0
  • <%DriveLetter%>\RemoteInstall\Boot\x64\pxeboot.n12  into pxeboot.0
  • <%DriveLetter%>\RemoteInstall\Boot\x64\pxelinux.0  into pxelinux.com

 

At the end, you should end up with something like the following screenshot

Click on picture for better resolution

 

Step 4 – Create the boot loader menu 

We will create a folder named pxelinux.cfg under the following folders

  • <%DriveLetter%>\RemoteInstall\Boot\x86\
  • <%DriveLetter%>\RemoteInstall\Boot\x64\

Under the following locations,

  • <%DriveLetter%>\RemoteInstall\Boot\x86\pxelinux.cfg
  • <%DriveLetter%>\RemoteInstall\Boot\x64\pxelinux.cfg

we will create a file called default.  The file is empty for the moment. We will come back to it a little bit later and we will populate it accordingly

Step 5 – Configure the WDS to use the pxe

Now, we have to tell WDS to use pxelinux.com file instead of the default pxeboot.n12.  In Windows 2012 R2, there is no gui anymore to configure such options.  You will need to use the command line. So, from a command line, you will execute the following commands

x86 architecture

  • wdsutil /set-server /bootprogram:boot\x86\pxelinux.com /architecture:x86
  • wdsutil /set-server /N12bootprogram:boot\x86\pxelinux.com /architecture:x86

x64 architecture

  • wdsutil /set-server /bootprogram:boot\x64\pxelinux.com /architecture:x64
  • wdsutil /set-server /N12bootprogram:boot\x64\pxelinux.com /architecture:x64

At this stage, you can reboot the computer or simply restart the wds service

Step 7 – Create you menu 

if you go back to the location

  • <%DriveLetter%>\RemoteInstall\Boot\x86\pxelinux.cfg
  • <%DriveLetter%>\RemoteInstall\Boot\x64\pxelinux.cfg

You will have to edit the default file and append the following content

DEFAULT vesamenu.c32
PROMPT 0
MENU COLOR TITLE 0 #ffffffff #00000000 none
MENU BACKGROUND test.png
MENU TITLE PORTABLE MDT CAPABILITY
#—boot to MDT WINPE IMAGES
LABEL MDT
MENU LABEL MDT Boot Images
KERNEL pxeboot.0

#—boot to hard disk
LABEL local
MENU DEFAULT
MENU LABEL Boot from Harddisk
LOCALBOOT 0
Type 0x80

Step 8 – Test your configuration

If you go to your client computer where you need to deploy the operating system, you will be presented with the following screen when starting the pxe boot process

Click on Picture for Better Resolution 

After pressing F12, you should see the boot menu you have created using the pxelinux component.

Click on Picture for Better Resolution 

Using WDS management console;  you should be able to skip the pressing F12 message.  We did not test it (yet) but we will definitely give it a try to smooth a little bit more the deployment process.

Final Notes

Voila ! We have seen in this post and the previous one how you could use only built-in tools to create a deployment infrastructure.  In this post, we have seen how you could customize a little bit further the deployment infrastructure using open source pxelinux components.  We used this component in the past in order to setup the custom tftp solution.  However, we never combined the pxelinux and the WDS components.  We have found most of the information over here

Till Next Time

See ya

Sources : http://www.syslinux.org/wiki/index.php/WDSLINUX

60 thoughts on “MDT 2013/WDS Win 2012R2 – using pxelinux as pxe boot loader

  1. Where do I get this Anime Girl image you used as boot menu background? Can you give me link plz?

  2. Awesome article! Worked like a champ!

    So, how would I add other menu items, such as; Lubuntu 14.04, Gparted, Backtrack, Hiren’s Boot CD, Redo Backup, or Trinity Rescue CD? I’m a bit confused about copying netinstall files (initrd.gz and linux) because they’re really small files.

  3. Hello Rock,

    For the moment, I’m really overloaded by my work and my ongoing projects….
    So; I cannot give you a detailed step by step instruction…..
    You have two options….With Pxelinux, you can boot iso images (if bios and cd image support this) directly. You only need to add an additional entry into your PXE MENU File (a good example is described here – I haven’t read it all but seems clear) http://higaknowit.com/2011/08/16/pxelinux-for-booting-of-iso-images/

    ISO might not be the best way to have pxe, So you might need to adapt the pxemenu based on the software you wanna boot from… The commands can be different for each program you wanna boot.

    Example for GPARTED -> see http://gparted.org/livepxe.php

    Try this link where there is a tutorial on how to customize pxelinux and add a lot of software http://www.clearfoundation.com/component/option,com_kunena/Itemid,232/catid,28/func,view/id,52645/

    You should use these links as base….

    Hope this help

    Till next time
    See ya

  4. Hello Griffon

    i went through the site wou mentioned as source before coming accros yours. since i used your posts to setup and configure me WDS, i thought i’d continue with it.

    i have, however an observation : on http://www.syslinux.org/wiki/index.php/WDSLINUX he mentioned :
    ” […] Rename pxelinux.0 to pxelinux.com ” en ou mentioned to rename pxeboot.0 to pxelinux.com. is it normal ?

    Great posts by the way, you’ve been bookmarked

    contunue the good posts …

    Wismerhill

  5. Hello there,
    sorry for the late answer, your comment was categorized as spam by the system
    to answer your question, it actually does not matter what you are using as long as your are consistent with your infrastructure. If you name the file pxelinux.O then you have to use this name in the DHCP Server options. If you use pxelinux.com, same story.. In the past, I always renamed to pxelinux.0 and I get that habit, and it’s working just fine

    Hope this answer your question
    till next time
    See ya

  6. Griffon, I noticed the same thing Wismerhill saw, but I think you misunderstood the question. You have a few typos in the “Rename some files” section.

    In both found instances, abortpxe.o should be abortpxe.0 (letter vs number).
    Same for pxeboot.0 into pxelinux.com… I think you meant pxelinux.0 into pxelinux.com, yes? (I believe this, specifically, is what Wismerhill was asking about.)

    That said, great post! I wish this had gone up just a few days earlier, as I’d just trudged through figuring this out manually (upgraded from syslinux pre-5.0, which didn’t have the additional file requirements). I’m bookmarking it for future reference. Thank you!

  7. Hello Jerry,

    Yes, you are right…. I didn’t fully understood the question.. I thought that the problem was related to the fact that I was renaming some files with 0 at the end
    Yes, you are right, there was a mistake (not a typo), the pxelinux.0 should be renamed into pxelinux.com

    Sorry for the little mistake and type…the post should have been corrected and should contain the correct info

    Thank you guys, for your positive comments and checking on us for proper info…. 🙂
    Till next time
    See you

  8. Hello there,

    If you look at the post and on the screeenshots, you will see that there is a file called test.png located in the RemoteInstall\boot folder.
    If the image is not displayed, maybe you have to change the size of the image….try a smaller size 640×480 and try again

    Till next time
    See ya

  9. Does this work with UEFI devices? I’ve got this setup with 2008R2 right now, but I’m migrating to a 2012R2 setup since I’m supporting Surface Pro 3 tablets. The SP3 tablets will only boot UEFI. If it doesn’t, do you know if it is at all possible to specify PXE Linux for non-UEFI enabled devices? Thanks!

  10. Hello Mark,

    I never tested this with UEFI devices. I think that pxelinux/syslinux provide basic support for uefi. So, I would need to test and come back to you to see if this is indeed a possiblility.
    standard MDT/WDS supports UEFI. So as a fallback plan, you can avoid using pxelinux and go for the standard tools provided by microsoft

    Hope this help
    Till next time
    See ya

  11. Hey there, great post!

    I’ve got a little problem, when I enter the PXE boot it keeps telling me that it can’t find the configuration file.

    Put it where it belongs but still it wont work.

    DHCP and TFTP work fine. Cant figure out the problem =/

  12. Hello Chris,

    I’m assuming that you indeed boot on PXE, you got your dhcp informantion and a download might be starting and then you have an error Can’t find configuration file.
    You have a black screen with information about bcd settings. (I’m guessing here). This is generally due to the fact that bcd file is not correctly configured.
    Before implementing the instructions of the post with WDS/PXELINUX, have you followed the instructions in http://c-nergy.be/blog/?p=4557

    Have you imported your Boot image into the WDS which will create the bcd on the file ??

    provide us a little bit more information about your setup

    hope this help
    Till next time

    See ya

  13. Hello Griffon,

    Thanks for the response. Well yeah thats pretty much it. But it wont bother me with the bcd settings. It just keeps in the same screen you have on your post just with the addition “Cant locate configuration file”. I will go through your link, thanks for it. The thing is, the server is not a standalone server, the AD comes from another server. Im not that experienced in Servers, I’ll see if it works 🙂

    Thanks again, I will update you as soon as it works. Or not.

    Best wishes,
    Chris

  14. So, the last 2 hours I did everything from scratch.

    Removed WDS, reinstalled it, installed MTD and AIK, loaded the lite touch file, tried to boot with it (worked, test computer received it but I got an error code. Forgot to make a screenshot or to write it down. Nevermind, moved on). Put in the linux files, used the commands to change the boot source.

    Still “Unable to locate configuration file”. *sigh*

    Im out of ideas of how I can get it to work.
    As I said, its not a standalone server. But this shoudlnt be a problem I think.

    NOTE: first time I tried, I forgot to put in the pxelinux.cfg folder. As I realized I put it in tried again, still same problem.

  15. Ultrafacepalmofdeath.

    Found the problem.
    The “default” file was .txt …..

    changed it to normal file, voila, boot interface.

    I should have tried this earlier.

    Well anyway, I cant thank you enough for this post!

    best wishes,
    Chris

  16. Hello Chris,
    Ok, No I got the issue and I’ve seen that you have fixed you issue.
    Yes this happens quite often. File extensions are not shown in windows by default and this can lead to the issue you had.

    Thank you for sharing and for the feeback
    till next time
    see ya

  17. Hello again,

    so I’m looking for help and I couldnt figure out who else would be able to solve the problem.
    I got the PXE running, but I cant boot any .iso’s but one.

    The one running is a toolstar .iso from a bootable floppy, many, many years old. (from 1999 or so)

    The other software we use is not available on a medium. Its just .img files.
    So if I start up one of them, for example W98 DOS, it keeps telling me “bootstrap too large to read”. I figured out it has to be either the kernel not able to read it or the .img or .iso itself beeing corrupted. But either way I doesnt make sense as I am able to get W98 DOS to work with a bootable floppy AND a bootable CD. And the kernel is able to start toolstar so why not able to boot W98 ?

    Most of the other software are spin-offs of toolstar. These wont work either which makes me believe its really the .img files that cause this problems.

    My default file entry for toolstar looks like this:
    LABEL >> TOOLSTAR 3.70
    KERNEL memdisk
    INITRD /images/dbboot.iso
    APPEND iso raw

    This one works. For W98 its almost the same:
    LABEL >> W98 DOS (NW!)
    KERNEL memdisk
    INITRD /images/W98.iso
    APPEND iso raw
    And it won’t work.

    I’m using the memdisk kernel taken from the pxelinux package. Im really new to this and Im not that much into kernels.

    Do you have any idea what causes this problem ?

    best wishes and thanks in advance,
    Chris

  18. Hello Chris,

    Why are you using old technologies like Windows DOS, you should have all necessary tools with WINPE, no ?
    For the DOS, can you try to remove the append iso raw

    in the past, we were using something like this

    LABEL W98 DOS
    KERNEL memdisk
    INITRD W98.ima (or W98.ISO)

    Give it a try
    Till next time

  19. Well, ask me something easier. I dont even know if anyone still even uses this old stuff anymore in my company but I got told “get everything to work” and so Im trying.

    I removed the append iso raw but then the system just reboots.

    The original old files are .img I suppose that they just wont work that easily. I made a bootable CD from the files and created a .iso using imgburn. But that doesnt seem to make it.
    I dont get the bootstrap too large to load anymore but now it just boots into a command line.
    Which is kinda weird as its always the same command line for every file.

  20. Hello Chris;

    I have test it and it works…The most difficult part was to find w98 dos image.
    If you have a img file try to use this one; img format should be supported by pxeboot

    My PXELINUX MENU

    LABEL W98
    MENU WIN98 DOS BOOTABLE IMAGE
    kernel /memdisk
    append iso
    initrd /w98.iso
    #initrd /w98.iso raw if the line above fails

    This should work perfectly.
    If this is not working for you, the boot image you are using might not be good

    Till next time
    see ya

  21. Hey Griffon,

    unfortunately thats what I was trying the whole time.
    Last week I asked around in the company what .img are still used. Basically its just different variations of toolstar with small additions and changes. But these, as well as W98, as an .img wont freaking work.

    If I take the .img it tells me bootstrap too large to load. The original toolstar taken from a floppy works. The other ones, modified ones, are only available as an .img and they won’t load. If all else fails I have to rewrite the program to the point where it is needed.

    I’ll give it another shot and I’ll see what happens, but I’m pretty much 100% sure it won’t work. It’s gotta be the .img files that has some kind of problem, even though I have no clue what it could be.

    Thanks again,
    Chris

  22. I’m sorry, I dont get the “bootstrap too large to load” I get basically this one:
    http://i43.tinypic.com/25f517s.png

    Its not the exact code, but I have no chance to upload a picture of it right now.
    For me it stops at “Loading boot sector… booting…” and there it stucks.
    I dont get the disk error message.

    Best wishes,
    Chris

  23. Hello Chris,

    Can you download the 98 iso from this location (https://staff.washington.edu/curreri/windows-98-boot-cd-download-this-iso/) and try to use this one on your PXELINUX server.
    If this image is working, I would recommend you to update this working image with the additonal tools you need.
    You can see what’s on the old image

    If you cannot get the dos image to boot from pxelinux…I would try to inject the tools you need in the winpe image instead

    Hope this help….

  24. Heyya,

    yesterday I found an old dusty box with a bunch of old dusty floppys in it. Some of them where the software we needed. Made a bootable CD of them, took the iso with ImgBurn and hey! It works. I really have no clue why the original .img files wont boot, but well, nevermind.

    Conclusion: Allways keep those tools on a floppys, haha.

    Again, thanks really much for your help I appreaciate your blog!
    Nevertheless I will try out your W98 iso and see if it works.

    Maybe this afternoon, depends on when I have the time to check it out.

    Best wishes,
    Chris

  25. Hey Chris,

    Good to hear… I told you that the image you were using was may be broken 🙂
    I’m glad to see that you have fixed your issue
    Keep going man

    Till next time
    See ya

  26. Heyaa Griffon!

    Got a problem for a few days now and I thought I’d ask your for help and advice.
    So, after I switched the server, everything was fine for a few days. Then someone came up to me and said “My program doesnt work anymore!”. Well, some coworkers down in the testing area are using a DOS 6.22 floppy that enables a network boot. Every then and now we get stoneage computers with network cards that dont support PXE boot without any drivers. So the floppy contains these drivers, installs the needed ones and connects to my server for a simple pxe boot menu.

    The thing is, WS2012 wont let you connect anymore with DOS. As far as I know 2012 always needs a user that can be as simple as possible but it still needs a user. But DOS 6.22 does not know “net use \\ip /user:name password”. So I googled it for about 2 days, even ripped open a brandnew (!!!) DOS 6.22 box for the manual in it (opening it almost made me cry…the certificate still smelled new, haha) but didnt find anything useful. I came up with the idea to use a w98 boot floppy that, as far as I can tell, should know the “user” and “password” addition in “net use[..]”. But the versions I found contain neither net.exe nor any other significant files.

    So, long story short.
    Is there a way (Even though I doubt it) to connect to the server via DOS 6.22 ?
    If not, what could I do to find a W98 boot version that is able to ?

    If I just had a running floppy (I think a CD should do it too, but im not 100% sure) with W98 or XP I could build the stuff I need around it.

    Best wishes and thanks in advance,
    Chris

  27. Hello Chris,

    Please stop using MS DOS stuff…
    You can try old stuff and link to create your network boot floppy ( see http://www.nu2.nu/bootdisk/network/ or http://www.netbootdisk.com/about.htm or http://rom-o-matic.net/gpxe/gpxe-git/gpxe.git/contrib/rom-o-matic/). I do not know if there are still working or if they have the net.Exe version you need.

    When using MDT, you know that the soft creates a LiteTouch.iso file that can used to boot a computer if pxe is not supported. If you burn the iso into a cdrom or to a usb, if you can boot from it, you can boot the system with the cd/usb which will then connect to your MDT

    Hope this help
    Till next time

  28. Hi Griffon,

    well, I would (for heavens sake) if I could but I can’t.
    I’m basically ‘forced’ to use it. But I managed to upgrade to W98 (yay!).

    Pushed the stuff on a samba server still getting minor errors but thats ok. Gotta sort ’em all out over time.

    And yeah, I was about to try Bart’s but didnt have the time to check it out (as semester started I dont have time to do anything >.<).

    I'll see if I can get it to work this week.

    Thanks for the links and for the help!

    Cheers!
    Chris

  29. I followed your directions on how to setup this prelinux booter. I have done it 3 times. I have the MDT and DHCP running fine I can distribute as MDT/WDS image fine. I then go into and following the directions outlined above and keep coming up with

    TFTP Download: boot\X64\prelinux.com

    It cycles through this same msg for awhile then exits. Any ideas or suggestions what I need to do to fix this?

  30. Griffon.. I found they changed TFTP on Windows 2012R2 to be a feature option that needed to be installed. I installed the option and away I went. Thank you for the offer of help.

  31. Hey Ron,

    I was about to have a look at it…. Hopefully you already figured that out
    Thank you very much for providing back your findings….

    Thank for the visit

    till next time
    See ya

  32. Hello,

    You do not need to install TFTP Server. WDS is providing you the TFTP server capability
    So, you have to install WDS and place the pxelinux file into the correct folder structure (as explained on the post)

    Hope this help
    Till next time
    See ya

  33. legacy boot works perfectly with pxelinux .
    but I also want to use UEFI to start on a PC with UEFI network boot Windows deployment server .

    How do I exactly?

  34. Hello Cor,

    First, you need to have a machine capable of booting from UEFI and you need to ensure that your UEFI “software” has network drivers that can be used for pxe boot.
    By default, the windows wim image contains already uefi images and can be used to deploy images on uefi systems
    If you install MDT 2013 update 1 (because this is the one I’m using now) when you create a task sequence, you will see at dis partitioning steps that uefi command is already included in the task sequence

    Hope this help
    Till next time

  35. Hey,
    Unfortunately, the answer I got what is not the right answer.

    What I meant is more that a normal legacy PXE boot just neat boot a Linux PXE boot menu.

    But I also have a couple of computers that only support UEFI PXE boot but does not support pxelinux not.
    How can I fix that he UEFI network boot or boot device

  36. Okay, syslinux uefie files Should I die just copy it into the root map ? and then should die Doing ? Do I still have some of SET ?

  37. Great, someone is doing the same as me! Welcome cor my labmate!
    I invested some time in this but didn’t get it working yet.
    What I got right now: Without modification WDS will be used for UEFI deployments. With some changes the system will boot to Grub2, but I don’t have network support and the config won’t load…
    1. Get the efiloaders package (I did this on my Cobbler deployment system) and copy them to …\boot\%arch%\Linux\Grub on your WDS Server
    In order to change that we need to use wdsutil again. (4 times)
    wdsutil /set-server /bootprogram:boot\x86\Linux\Grub\grub2x64.efi /architecture:x86uefi
    wdsutil /set-server /N12bootprogram:boot\x86\Linux\Grub\grub2x64.efi /architecture:x86uefi
    wdsutil /set-server /bootprogram:boot\x64\Linux\Grub\grub2x64.efi /architecture:x64uefi
    wdsutil /set-server /N12bootprogram:boot\x64\Linux\Grub\grub2x64.efi /architecture:x64uefi
    That should get you started!
    Links which helped me most: http://reboot.pro/topic/19414-chainload-winpe-pxe-uefi/ and http://ocsovszki-dorian.blogspot.de/2014/10/uefi-pxe-boot-with-grub2-using-windows.html
    Please let us know what you find out!

  38. Unfortunately it does not work, it’s possible that someone help me? which you log into the server? it is a windows server

  39. @Cor,

    If you do not explain the issue or error, It become difficult to help…. Please describe your situation and the issue you are experiencing….
    waiting for some feedback

    Till next time
    See ya

  40. Hi, I was wondering if you could help me setup my uefi pxe boot with grub or something else. I followed the steps and got bios mode working. I’m not too sure where to get the grub files and where to put it in my wds server files.

Leave a Reply