LittleFe:PXE Booting
In order to setup PXE booting the client nodes must get their DHCP information from the node serving the kernel. We have setup dhcpcd on littlefe0 with the following entry for each littlefe node to know where to get it's kernel.
group {
next-server 192.168.10.100; filename "pxelinux.0"; use-host-decl-names on;
host littlefe1 { hardware ethernet 00:40:63:d8:a2:2c; fixed-address 192.168.10.101; } host littlefe2 { hardware ethernet 00:40:63:d8:a2:93; fixed-address 192.168.10.102; }
....
}
The "filename" entry here specifies the pxe boot loader. We use the pxe linux bootloader based on the syslinux bootloader (http://syslinux.zytor.com/pxe.php). The filename is relative to the tftpd root directory, /tftpboot/ on littlefe0. The "/tftpboot/pxelinux.cfg" specifies the kernel binary, again relative to the tftp root directory, and kernel options to be passed on client nodes. We pass the following options:
DEFAULT vmlinuz-2.6.12 ramdisk_size=16384 ip=dhcp root=/dev/nfs nfsroot=192.168.10.100:/diskless/
This specifies which kernel binary to load. It also prepares a ramdisk and tells the client to mount /diskless/ nfs export from littlefe0.
The ramdisk is further prepared by the /init/local script. This script formats the ramdisk, mounts it to /mnt/ramdisk, and copies the skeleton ramdisk directory sturcture from /mnt/ramdisk_skel. Currently we put three directories on the ramdisk, /var/lock/ , /var/run/ , and /var/spool/ each of these are linked to the equivalent ramdisk directory, ie /var/lock -> /mnt/ramdisk/lock.