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
Where do I get this Anime Girl image you used as boot menu background? Can you give me link plz?
Man,
Was not easy to find it back !
Try this link http://www.wallpaperfo.com/Technology/Computer/headphones_computers_blue_hair_red_eyes_sitting_graphics_tablets_anime_girls_looking_back_digital_pa_49296
Hope this is ok
Till next time
See ya
Yay! Thank you very much!
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.
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
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
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
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!
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
Where do you put the background image?
I tried it but it won’t show up.
Regards,
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
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!
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
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 =/
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
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
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.
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
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
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
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
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.
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
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
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
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….
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
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
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
hello Chris,
it’s late for me.. I will have a look to your question in the coming days
till next time
see ya
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
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
No prolem Chris,
I hope you will find your way in your infrastructure..:-)
Till next time
see ya
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?
hello,
I will have a look this weekend and come back to you
Till next time
see ya
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.
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
RON,
How you install the TFTP on server 2012 R2, i try but could not install it.
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
I want to start panda safe ISO via PXE how do I do that ?
hello cor,
You would need to add a new entry in the boot menu and use the memdisk
for more info, check this link http://www.syslinux.org/wiki/index.php/MEMDISK
till next time
see ya
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?
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
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
get the uefi syslinux files
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 ?
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!
Unfortunately it does not work, it’s possible that someone help me? which you log into the server? it is a windows server
@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
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.