PXE Boot - VESA

created:17 Aug 2008 @ 01:57 am
edited:03 Jul 2009 @ 10:18 pm
Well, I finally managed to upgrade my PXE Boot menu. It now uses the vesamenu.c32 program and some vga backgrounds that I made for it. The config file was easy enough to make, but finding out how to make it was pretty hard.
Due to this, I decided to write another little how to, following on from the PXE Boot article that I did before.

SimpleViewer requires JavaScript and Flash Player. Get Flash.

To view this album using my old gallery, please click here

I am also looking into building programs for the pxelinux environment, so if anyone has experience or suggestions it would be great to hear from you!

The Config File!

  • Well, first things first. You need to download the syslinux package from here. Once you have done this, you need to extract the vesamenu.c32 file from '/com32/menu/vesamenu.c32'
  • Place vesamenu.c32 in your TFTP root so that we can access it from the remote machine.
  • You will need to start writing your config file again (the '/pxelinux.cfg/default' one), so back it up or empty it
  • Now, for the configuration. Put the following code into the file (DO NOT copy the right hand column)
Hopefully you can read through and understand whats going on.
DEFAULT vesamenu.c32
PROMPT 0

NOESCAPE 1
ALLOWOPTIONS 0

TIMEOUT 50
ONTIMEOUT bios

MENU TITLE Main Menu
MENU BACKGROUND vesamenu.png

MENU SEPARATOR

LABEL bios
	MENU LABEL Boot as BIOS defines...
	MENU INDENT 3
	MENU DEFAULT
	localboot 0

MENU SEPARATOR

MENU BEGIN
	MENU LABEL ^0. Local Boot
	MENU TITLE Local Boot
	MENU SEPARATOR
	
	LABEL 0
		MENU LABEL ^0. Return to Main Menu
		MENU EXIT
	
	MENU SEPARATOR
	
	LABEL a
		MENU LABEL ^a. As BIOS defines
		MENU DEFAULT
		localboot 0
	
	MENU SEPARATOR
	
	LABEL b
		MENU LABEL ^b. Floppy Drive
		KERNEL bin/chain.c32 fd0 0



	MENU SEPARATOR

	LABEL c
		MENU LABEL ^c. Hard Drive 0
		KERNEL bin/chain.c32 hd0 0

	LABEL d
		MENU LABEL ^d. Hard Drive 1
		KERNEL bin/chain.c32 hd1 0

	LABEL e
		MENU LABEL ^e. Hard Drive 2
		KERNEL bin/chain.c32 hd2 0

	LABEL f
		MENU LABEL ^f. Hard Drive 3
		KERNEL bin/chain.c32 hd3 0
MENU END
# load vesamenu.c32 immediately


# prevent the user from accssing the pxelinux command line
# prevent the user from changing the boot options

# after 5 seconds do ONTIMEOUT
# execute the bios label when the timeout reaches 0

# set the menu title
# set the menu background

# insert a seperator (for some reason you can select the 
# first seperator if it is not at the top of the menu)

# the bios tag / item
# give the item a label
# indent it 3 spaces
# set this item as the default
# when selected do this


# create a sub menu (will be expanded when selected)
# the ^ indicates a hot key, pressing 0 selects this item





# collapses this submenu and returns to the parent












# set the kernel to chain.c32 and pass the parameters
# to boot from the floppy
# see chain.c for more info (in syslinux-x.xx.tar.gz)





# boot from first hd



# second hd etc...