Step One – Install WDSMike_Vainio_Thesis_final
This should be obvious and if you are reading this I imagine you’ve done it already. Ours is running on a Windows Server 2003 box but it should work fine with the latest, more secure, stuff.
- We will be adding bits to the folders within the \\WDS\REMINST share
Step Two – Install PXELinux
PXELinux is part of the SysLinux package
- Download SysLinux from here
- There’s quite a bit in SysLinux but you only need to extract the following files
- ZIP\core\pxelinux.0
- ZIP\com32\menu\vesamenu.c32
- ZIP\com32\modules\chain.c32
- Copy the files into \\WDS\REMINST\Boot\x86
- Rename pxelinux.0 to pxelinux.com
- You also need to make copies of two original WDS files in this folder
- Copy pxeboot.n12 and rename it to pxeboot.0
- Copy abortpxe.com and rename it to abortpxe.0
- Create to new subfolders
- \\WDS\REMINST\Boot\x86\Linux
- \\WDS\REMINST\Boot\x86\pxelinux.cfg
- The pxelinux.cfgfolder is where you store the files that make up the PXE boot (F12) menu.
- All the files we will put in there are text files, even though they don’t use a .txtextension
- First create a new text file called default. This is the first menu that loads.
- Paste the following text into it
01020304050607080910111213141516171819202122
DEFAULT vesamenu.c32PROMPT 0MENU TITLE PXE Boot Menu (x86)MENU INCLUDE pxelinux.cfg/graphics.confMENU AUTOBOOT Starting Local System in 8 seconds# Option 1 - Exit PXE Linux & boot normallyLABEL bootlocalmenu label ^Boot Normallymenu defaultlocalboot 0timeout 80TOTALTIMEOUT 9000# Option 2 - Run WDSLABEL wdsMENU LABEL ^Windows Deployment ServicesKERNEL pxeboot.0# Option 3 - Exit PXE LinuxLABEL AbortMENU LABEL E^xitKERNEL abortpxe.0 - Now create a text file called graphics.conf
- This file controls how the menu is displayed. It’s very versatile so have a play around until it looks as basic or as flashy as you like
- Paste the following text into it
0102030405060708091011
MENU MARGIN 10MENU ROWS 16MENU TABMSGROW 21MENU TIMEOUTROW 26MENU COLOR BORDER 30;44#00000000 #00000000 noneMENU COLOR SCROLLBAR 30;44#00000000 #00000000 noneMENU COLOR TITLE 0#00269B #00000000 noneMENU COLOR SEL 30;47#40000000 #20ffffffMENU BACKGROUND background.jpgNOESCAPE 0ALLOWOPTIONS 0 - If you want to use a custom background, place it in the \\WDS\REMINST\Boot\x86folder.
- The image should be a 640×480 jpeg file.
- Make sure it has the same name as specified in the MENU BACKGROUND line in graphics.conf
- Now we need to change the default boot program in WDS
- Open the Windows Deployment Services Console
- Right Click on your Server and select Properties
- From the Boot tab change the default boot program for x86 architecture to \Boot\x86\pxelinux.com
- In Server 2008 R2 you have to use the wdsutil command line to set the the default boot program with these commands
|
1
2
|
wdsutil /set-server /bootprogram:boot\x86\pxelinux.com /architecture:x86wdsutil /set-server /N12bootprogram:boot\x86\pxelinux.com /architecture:x86 |
Step Three – Test it out
Before you go any further, do a test PXE boot to check everything is OK.
I use a Hyper-V VM to make this testing process quicker. Just make sure it’s set to boot to a legacy network adapter in the settings

If it doesn’t load make sure you have the following files and folders in the right place within the \\WDS\REMINST share
- \Boot\x86\pxelinux.com
- \Boot\x86\vesamenu.c32
- \Boot\x86\chain.c32
- \Boot\x86\pxeboot.0
- \Boot\x86\abortpxe.0
- \Boot\x86\background.jpg
- \Boot\x86\Linux\
- \Boot\x86\pxelinux.cfg\
- \Boot\x86\pxelinux.cfg\default
- \Boot\x86\pxelinux.cfg\graphics.conf
Step Four– Add new boot options
If you can boot into the new menu and still load WDS then we are ready to add our Linux distros and other tools. If not, go back to step one and check everything.
This stage is relatively easy. It is just a case of putting the relevant netboot files for your preferred distribution in to the \Boot\x86\Linux folder and then adding a menu option for them. You can find more info on where to get these from on the official WDSLinux wiki. I’ll show you a more generic way of doing things using Debian as an example
- Create a new subfolder
- \Boot\x86\Linux\Debian\
- Download the netboot files (initrd.gz and linux) from a Debian mirror
- Copy them into the Debian subfolder
- Create a menu entry for them in \Boot\x86\pxelinux.cfg\default
123456
LABEL debian6Netinstallmenu label ^Debian 6-0 Net-install# Load the correct kernelkernel /Linux/Debian/Linux# Boot optionsappend priority=low vga=normal initrd=/Linux/Debian/initrd.gz
That’s all there is to it. As long as you download the correct files and boot the correct boot options on the append line of the menu, you should be OK.
What if I need 64-bit options
This is easy too just replicate everything we did in \Boot\x86 into \Boot\x64. Don’t forget to change the WDS Server boot program for the x64 architecture (as shown in step 2) to \Boot\x64\pxelinux.com
Taking it further
Hopefully you are reading this because you have numerous ideas of what you could boot to. To help you along I’ve included my current default menu as well as adding sub-menus for Linux and Tools. Most of them were fairly straightforward as they had special PXE version with instructions on their website, e.g. GParted & Clonezilla
default
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
|
DEFAULT vesamenu.c32PROMPT 0MENU TITLE PXE Boot Menu (x86)MENU INCLUDE pxelinux.cfg/graphics.confMENU AUTOBOOT Starting Local System in 8 seconds# Option 1 - Exit PXE Linux & boot normallyLABEL bootlocalmenu label ^Boot Normallymenu defaultlocalboot 0timeout 80TOTALTIMEOUT 9000# Option 2 - Run WDSLABEL wdsMENU LABEL ^Windows Deployment ServicesKERNEL pxeboot.0# Go to Linux sub-menuLABEL linuxMENU LABEL ^Linux DistrosKERNEL vesamenu.c32APPEND pxelinux.cfg/graphics.conf pxelinux.cfg/linux.menu# Go to Tools sub-menuLABEL toolsMENU LABEL ^ToolsKERNEL vesamenu.c32APPEND pxelinux.cfg/graphics.conf pxelinux.cfg/tools.menu# Exit PXE LinuxLABEL AbortMENU LABEL E^xitKERNEL abortpxe.0 |
linux.menu (save in same place default)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
MENU TITLE Install a Linux DistroLABEL debian6.0-amd64-Netinstallmenu label ^Debian 6-0 amd64-Net-install:kernel /Linux/Debian-Net-Install-amd64/Linuxappend priority=low vga=normal initrd=/Linux/Debian-Net-Install-amd64/initrd.gzLABEL Centos5.0-Installmenu label ^Centos 5-0 32bit install:kernel /Linux/Centos-5.0-32-bit/vmlinuzAPPEND ks initrd=Linux/Centos-5.0-32-bit/initrd.img ramdisk_size=100000LABEL Debian-5.08-Installermenu label ^Install 5.08 (Lenny)kernel /Linux/debian-installer/i386/linuxappend vga=normal debian-installer/allow_unauthenticated=true initrd=/Linux/debian-installer/i386/initrd.gzLABEL Main MenuMENU LABEL ^Back to Main MenuKERNEL vesamenu.c32APPEND pxelinux.cfg/default |
tools.menu (save in same place default)
|
01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
|
MENU TITLE ToolsLABEL memtestmenu label ^Memory Test: Memtest86+ v4.20kernel \Linux\memtest\memtestpLABEL Clonezilla LiveMENU LABEL ^Clonezilla Livekernel \Linux\Clonezilla\vmlinuzappend initrd=\Linux\Clonezilla\initrd.img boot=live live-config noswap nolocales edd=on nomodeset ocs_live_run="ocs-live-general" ocs_live_extra_param="" ocs_live_keymap="" ocs_live_batch="no" ocs_lang="" vga=788 nosplash fetch=http://192.0.0.24:81/RemoteInstall/Boot/x86/Linux/Clonezilla/filesystem.squashfsLABEL gpartedMENU LABEL ^GParted Livekernel \Linux\gparted\vmlinuzappend initrd=\Linux\gparted\initrd.img boot=live config noswap noprompt nosplash fetch=http://192.0.0.24:81/RemoteInstall/Boot/x86/Linux/GParted/filesystem.squashfsTEXT HELPGParted live version: 0.8.1-3. Live version maintainer: Steven ShiauDisclaimer: GParted live comes with ABSOLUTELY NO WARRANTYENDTEXTLABEL Main MenuMENU LABEL ^Back to Main MenuKERNEL vesamenu.c32APPEND pxelinux.cfg/default |
Conclusion
This is a really useful tool to have in our SysAdmin arsenal. I encourage you to give it a go. Let me know if your successful, or if you are having any problems getting it working, in the comments section. I’d also love to hear of any other tools you’ve added to the PXE menu.
https://thommck.wordpress.com/2011/09/09/deep-dive-combining-windows-deployment-services-pxelinux-fo…
https://sysadminblogger.wordpress.com/tag/memtest-wds/
Found on Spiceworks: https://community.spiceworks.com/topic/1449197-wds-pxeboot-gparted-clonezilla-linux-distros?utm_source=copy_paste&utm_campaign=growth
Found on Spiceworks: https://community.spiceworks.com/topic/1449197-wds-pxeboot-gparted-clonezilla-linux-distros?utm_source=copy_paste&utm_campaign=growth