Preboot Execution Environment (PXE)
A system that supports
PXE can retrieve a small binary program over the network and execute it. The small program can then be used to retrieve further informations and possibly boot into an operating system.
- configure system bios to "boot from network"
- system executes dhcp requests. DHCP Servers provide boot options boot-server (66) and boot-file (67).
- system retrieves boot-file (for example
/csco/pxe/pxelinux.0
) from boot-server (which is a TFTPServer, for example fsl00c
)
- it then executes the boot-file
PXELinux
PXELinux is a flexible method to retrieve a linux kernel and ramdisk (initrd, initramfs) from the network.
After retrieving and executing
pxelinux.0
it searches for a configfile on the
TFTPServer, subdirectory csco/pxe/pxelinux.cfg. It has an inbuild order to locate one
- hardware-type + mac-address. For example 01-00-13-95-aa-bb-cc (01 is for ethernet).
- ip address as hex, for example 192.168.1.1 is C0A80101
- repeatedly dropping the last character from this hex address, C0A8010, C0A801, C0A80, ... C
- default
- error message, five minute delay, reset
At GSI we use exact IP Adresses for the configuration. This allows us to replace hardware in case of failure without modifying the
PXE configuration.
Sample configuration file
DEFAULT linux
# display boot prompt
PROMPT 1
# 10 second timeout
TIMEOUT 100
DISPLAY help.txt
LABEL linux
MENU LABEL linux ramdisk
KERNEL kernel
APPEND initrd=ramdisk.img ramdisk_size=32768 root=/dev/ram
LABEL menu
KERNEL menu.c32
This will display the content of help.txt. Then shows a prompt. After ten seconds it will execute the entry default. Default points to linux. Typing menu will display a selectable menu with all known labels
A complete folder tree with kernel and ramdisk. See
TFTPServer for the paths prefix.
/pxe/pxelinux.0
/pxe/help.txt
/pxe/menu.c32
/pxe/pxelinux.cfg/8CB584FC -> symlink on hostname
/pxe/pxelinux.cfg/hostname -> symlink on default
/pxe/pxelinux.cfg/default
/pxe/kernel
/pxe/ramdisk.img
User Configuration
to configure a frontend computer
- register the computer with csco-in (provide information which TFTPServer should be used)
- configure bios of frontend computer to "boot from network"
- read and follow /common/tftp/csco/pxe/pxelinux.cfg/readme.txt which provides a manual to add new FECs
- create the needed symlinks in the
pxelinux.cfg
folder (subfolder csco/pxe/pxelinux.cfg
) on the TFTPServer
if anything besides basic linux should run on the computer, configure
NFSinit