There seems to be very little documentation for this that i could find, so maybe someone will find this useful.
As always, these notes ('cause thats all they are!) are aimed for Debian. If you are not using debian, it's your loss ;)
The idea is to have one server running a DHCP and tftp boot server. Your main servers then use PXE to allocate the machine an IP address on boot, then transfering pxelinux, which in turns downloads your required kernel, and boots up normally.
If you manage lots of servers, it can make your life a *lot* easier when upgrading kernels - although it doesn't happen that often, have you tried installing the same kernel on 50 machines? Believe me, it gets damn boring.
Install dhcpd, atftpd, and syslinux packages.
With a config something like this
## your domain name..
option domain-name "anlx.net";
## Set this tyo your DNS Servers...
option domain-name-servers 192.168.0.254;
option subnet-mask 255.255.255.0;
## These don't really matter here.
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.0.0 netmask 255.255.255.0 { }
group {
# Image to download.
filename "/tftpboot/pxelinux.0";
# Server we boot from - the one that dhcp and tftp runs on
server-name "192.168.0.254";
host server1 { hardware ethernet 00:02:b3:f3:fa:49;
fixed-address 192.168.0.1; }
host server2 { hardware ethernet 00:02:b3:f3:ea:48;
fixed-address 192.168.0.2; }
host server3 { hardware ethernet 00:02:b3:f3:fa:47;
fixed-address 192.168.0.3; }
}
Your TFTP server needs to have the file "pxelinux.0" in the root folder. In debian you can find this in /usr/lib/syslinux/pxelinux.0 after installing the syslinux package. Just copy the things over.
Now create a directory, "pxelinux.cfg" in your root TFTP folder (normally /tftpboot). This is the folder that pxelinux looks for it's config files on booting up the server.
It starts by looking for a file that has the name od the servers' IP on hex. If it can't find it, it knocks a charecter off the end, then tries again, and continues until it finds one. If it can't, it tries to load up "default". For more info, see the man page.
So, i've got one file, called "default" in my pxelinux.cfg/ folder:
DEFAULT LABEL linux KERNEL kernel APPEND root=/dev/sda2
This tells pxelinux to try to loas the file "kernel" from the TFTP server.
So, suprise suprise, i have my linux kernel, called "kernel" in the root of my TFTP server.
and they all worked happily.