This is a simple description how to boot over a network using kernel on the remote server.
Server side configuration
To proivde net boot capabilities, your server need tftp server, loader, dhcp server and kernel for the node.
tftp server
Install
tftpd-hpa - this is a tftp server derived from
OpenBSD tftp with some extra options added. It is useful because the PXE protocol has some non-standard requirements for tftp.
tftpd starts inside the inetd - internet "superserver" by default, so set the root path inside the inetd.conf file. In this example we use
/srv/tftp.
mkdir /srv/tftp
After restariting the superserver (on debian probably /etc/init.d/openbsd-inetd ) run:
nmap -sU localhost
to check if it is working.
pxelinux loader
Install
syslinux - to get the pxelinux executable. Create a directory structure inside the tftp root:
mkdir /srv/tftp/boot
mkdir /srv/tftp/boot/pxelinux.cfg
Copy the loader:
cp /usr/lib/syslinux/pxelinux.0 /srv/tftp/boot/pxelinux.bin
Assume your node have HWaddr 00:13:8F:FD:71:A1. With this, the directory structure should looks like:
/srv/tftp/boot/pxelinux.bin
/srv/tftp/boot/pxelinux.cfg/01-00-13-8f-fd-71-a1
/srv/tftp/boot/pxelinux.cfg/default
/srv/tftp/boot/vmlinuz
/srv/tftp/boot/initrd.img
Examples
Example config files inside the pxelinux.cfg:
listing for config file 01-00-13-8f-fd-71-a1
Linux boot
PROMPT 1
LABEL linux
KERNEL vmlinuz
APPEND initrd=initrd.img vga=0x317
DEFAULT linux
Fai boot
label fai
kernel vmlinuz
append ip=dhcp devfs=nomount vga=0x317 root=/dev/nfs nfsroot=srv/fai/nfsroot FAI_FLAGS=[...] FAI_ACTION=install
default fai
DOS boot
The DOS kernel can be obtained by installing
syslinux
an copy
/usr/lib/syslinux/memdisk into the tftp direcotry where you store the kernels.
Organize a DOS-image, e.g. from
http://www.freedos.org/
and append it as an initrd.
The config file reads
default dos
label dos
kernel Kernel/Dos/memdisk
append ip=dhcp initrd=Kernel/Dos/fdbasecd.img
dhcp server
dhcpd - DHCP server
Read
dhcp
dhcpd.conf example: (some minor changes --> discussion)
subnet 192.168.0.0 netmask 255.255.0.0
{
ignore unknown-clients;
host node2 {
hardware ethernet 00:30:05:C4:E6:73;
fixed-address 192.168.0.2;
}
# option routers 192.168.0.1;
next-server 192.168.0.1;
filename "boot/pxelinux.bin";
}
And read the man pages.