Quick and dirty PXE boot

Most new Servers or Workstations aren’t equipped with a floppy drive anymore, but from time to time I need to boot from a floppy drive. And I don’t want to burn a CD each time I need to boot from a floppy drive.. so the solution is tftpd32 and PXELINUX. With those 2 tools I’m able to boot disk images from the LAN.


You need tftpd32 from Ph. Jounin (http://tftpd32.jounin.net/) and PXELINUX, which is a part of the SYSLINUX package (http://syslinux.zytor.com).


Tftpd32 act’s as DHCP and TFTP server (of course you can use another DHCP Server) while PXELINUX provide booting Linux from the network.


You can download the ready-for-use package here.


Directory structure of this package:

root dir                –     executable files

bootimages       –    the uncompressed (*.IMA) disk images.

pxelinux.cfg        –    the PXELINUX config file


my simple default pxe configuration:

—————————————————

MENU TITLE ABC Systems AG, PXE BOOT MENU


##

## settings for the simple menu system

##

DEFAULT vesamenu.c32

PROMPT 0

##

## boot options, ^means hotkey

##

    label bart

        MENU LABEL bootdisk#1, this starts the bart disk(*)

        MENU PASSWD password

        kernel memdisk

        append initrd=bootimagesIMAGE1.ima


    label test

        MENU LABEL various, starts the temp. disk image(*)

        MENU PASSWD password

        kernel memdisk

        append initrd=bootimagesIMAGE2.IMA


    label dmitest

        MENU LABEL dmitest, various dmi tests

        kernel dmitest.c32

               

##

## various settings

##

MENU BACKGROUND pxelinux.cfgbg.png

NOESCAPE 1

ALLOWOPTIONS 0

timeout 600


menu color title        1;31;49    #eeff1010 #cc553333 std

menu color sel            7;37;40    #ff000000 #bbaa9999 all

menu color border        30;44      #ffffffff #00000000 std

menu color pwdheader    31;47      #eeff1010 #20ffffff std

—————————————————


Screenshot of the configured DHCP Server:


Change the Current Directory and the IP settings, so that they fit your needs.


The result should look like this menu: