Brno Czech Republic. Jun 13, 2008. Why am I doing this? I recently saw the lab admin with some nifty Syslinux PXE configuration sweetness. I looked at what he had done with the office PXE and I wanted to do the same thing with the Anaconda vlan PXE. So this document is intented to document what I did to get everything running. I already have a PXE running, but it is borring and has no personality. I want to have a series of ncurses type menus that are modified automaticaly when you add or erase a label in the Syslinux configuration file. In other words this document will not be thorough in the creation of a PXE server from scratch. For that type of documentation go to http://syslinux.zytor.com/wiki, they have a very cool wiki there :) What are my use cases? 1. For the PXE options to be intuitive. I don't like the idea of copying the damn label. My head can't cope with such madness :) 2. To have different configuration files and for all of them to come together in a centralized menu hierarchy. Where do I look for information? http://syslinux.zytor.com/menu.php http://syslinux.zytor.com/wiki/ (I) Download current version of syslinux: The important files here are the pxeconfig.0 and the menu.32 files. they are the ones that give you the menu capabilities. And don't forget to backup everything you had in your previous installs, if you had something.[1] Commands [user@host]# wget http://www.kernel.org/pub/linux/utils/boot/syslinux/syslinux-3.63.tar.bz2 [user@host]# tar xvfj syslinux-3.63.tar.bz2 (II) Configure the defautl file. Location: pxelinux.cfg/default The idea is to point to every other config file from this config file. It would be something like: default -> graphics.conf default -> menu1 default -> menu2 default -> menu3 . . . Additionally we set some other minor stuff like the names of the main window and crap. # # Lets pull in the file that makes possible the menu. This file is located in # rootpath/menu.c32. Where the pxelinux.cfg directory is. # default menu.c32 # # Since we are not going to use the prompt. Thats the whole point of this, disable it. # prompt 0 # # We are going to keep some relevant info in the PXE that the user can acces. The info # contains some contact information and crap and will be accessible with the F1 key. # F1 msgs/main.msg # # Window title # menu title Anaconda PXE Environment. Press F1 for more info. # # Set up the graphic stuff by including a file. The defautl colorint works fro me. # #menu include pxelinux.cfg/graphics.conf # # Have a message telling the user how many seconds are remaining. # menu autoboot Back to BIOS in # seconds. # # timeout # timeout 1000 # # Lets have the default booting "label" first # The -1 on the localboot means that the bios decides whats next. # label localboot menu indent 2 menu label - Next in BIOS. menu default localboot -1 # blank line menu separator # # Now we call all the submenus. We must call the menu.c32 and pass the graphics.conf and the config file. # label Someone menu indent 2 menu label - ^Someones's Labels. kernel menu.c32 append pxelinux.cfg/graphics.conf pxelinux.cfg/someone label Carlos . . . . (III) Configure the back button on every submenu.k After you enter into a menu you must be able to go back to the original menu :) This is done by simply adding a label to the beginning of each submenu. menu title Someone's Labels label return menu label <-- ^Return kernel menu.c32 append pxelinux.cfg/default . . . [1]: Remember, I already had a PXE environment configured. You must do that first and then follow this tutorial to setup the menu thingy.