TFTP server PXE configuration


Requirement

The configuration rely on a NFS boot-up image.



Boot order

TFTP can manage different configurations, up to 1 per host!

This is how a ThinClient (= netBoot client) will retrieve its configuration:


TFTP getConfiguration()


As you can see you have 3 possibilities:


1. MAC @ filter. Configuration file name must be:

  • Start with ARP type '01-'
  • all in lower case hexadecimal
  • dash '-' separators instead of ';'

for example a MAC @ 88:99:AA:BB:CC:DD would search for the filename 01-88-99-aa-bb-cc-dd.


2. IP @ filter. Configuration file name must be:

  • host IP / network address in hexadecimal
  • all in upper case

e.g. 192.0.2.91 -> C000025B


3. Default configuration


To learn more about all the available option, check out http://www.syslinux.org/wiki/index.php/PXELINUX



Default configuration

Note:

All the following examples will have 2 different kernel:

  • 1 kernel for Debian Wheezy (QA)
  • 1 kernel for Ubuntu 14.04 (Production)

Each kernel can be used by several NFS images as long as the images has the right kernel's libraries and modules.


Create / edit the default configuration file

vim /tftpboot/pxelinux.cfg/default


Simple configuration

This is just a text display + user input. The user must type the name of the image he want to use.

Put the following:

# Debian 7.x (QA)
LABEL wheezy
    # Kernel
    KERNEL images/wheezy/vmlinuz 
    # Initrd + NFS root file
    APPEND initrd=images/wheezy/initrd.img root=/dev/nfs nfsroot=172.16.50.2:/nfs/qa

# Ubuntu 14.04 (prod)
LABEL trusty
    # Kernel
    KERNEL images/trusty/vmlinuz 
    # Initrd + NFS root file
    APPEND initrd=images/trusty/initrd.img root=/dev/nfs nfsroot=172.16.50.2:/nfs/prod


# Prompt user for selection
PROMPT 1
# No timeout
TIMEOUT 0
  • Each LABEL is a specific name that will displayed on boot
  • PROMPT 0 = enable user prompt so you can choose the configuration
  • TIMEOUT 0 = timeout (in seconds) before the default option is chosen. 0 == no timeout



Graphic menu

Set up background image

In a "graphic" menu you can set an image as menu background.

Remember:

  • You'll have to specify the exact size of the picture later on - so note the picture size !! Recommendation: 640x480
  • Remember that the SysLinux cannot display more than depth=16 and 65536 colors


ImageMagic command to convert a picture:

convert -depth 16 -colors 65536 my_custom_image.png splash.png


Then copy the splash:

cp splash.png /tftpboot/pxelinux.cfg/
chown -R root:root /tftpboot/pxelinux.cfg/splash.png


Menu content

Put:

#### GENERIC OPTIONS #####
# Enable graphical menu
DEFAULT pxelinux.cfg/vesamenu.c32
# Prompt for user input? (0 = choose from menu, 1 = you can type anything)
PROMPT 0
# Allow or not the user to left the menu (1 = user is locked to the menu)
NOESCAPE 1
# Time before using default option
TIMEOUT 50


#### Menu settings #####
MENU TITLE my super netboot menu
# Setup background image (the resolution is $WIDTH $HEIGHT and must match the given picture)
MENU RESOLUTION 640 480
MENU BACKGROUND pxelinux.cfg/splash.png
# Setup text properties
MENU WIDTH 80
MENU ROWS 14
MENU MARGIN 10


#### Distributions #####
# Debian wheezy (QA)
LABEL wheezy
    MENU LABEL Debian 7.x [wheezy] - QA
    MENU DEFAULT
    KERNEL images/wheezy/vmlinuz 
    APPEND initrd=images/wheezy/initrd.img root=/dev/nfs nfsroot=172.16.50.2:/nfs/qa

# Ubuntu 14.04 (prod)
LABEL trusty
    MENU LABEL Ubuntu 14.04 [trusty] - Production
    KERNEL images/trusty/vmlinuz
    APPEND initrd=images/trusty/initrd.img root=/dev/nfs nfsroot=172.16.50.2:/nfs/prod

MENU END


Note all the "MENU" commands + PROMPT 0