Boot pxelinux clients from HP-UX

== Introduction ==
[http://syslinux.zytor.com/pxe.php pxelinux] is a boot loader for booting Linux off a network server, using a Intel PXE (Pre-Execution Environment) conforming ROM.

In short the PXE network card loads the pxelinux ROM file from the server using TFTP. pxelinux then retrieves (also using TFTP) a boot parameter file (comparable to lilo.conf or grubs menu.lst files). This file tells pxelinux what kernel to retrieve (by TFTP) and what kernel arguments to pass to it at boot time.

In a assignment I had to set up several thin client that should boot from a HP-UX 11.11 server using DHCP/BOOTP, TFTP and NFS mounted root partitions.

== The setup ==
All systems where to run the same kernel image but they should have seperate root filesystems. Also the systems where Compact PCI boards with a Pentium 4 processor without any VGA chipset so I wanted a console on the serial interface (ttyS0).

=== The file system setup ===

/tftpdir/
pxelinux.cfg/
default
vmlinuz
pxelinux.0

/nsfroot/
hostA/...
hostB/...

===== vmlinuz =====
The kernel build with support for NFS root filesystem.

==== pxelinux.0 ====
The [http://syslinux.zytor.com/pxe.php pxelinux] "bootloader".

==== pxelinux.cfg/default ====

DEFAULT vmlinuz root=/dev/nfs rw ip=bootp console=ttyS0,115200
TIMEOUT 50

=== Configureing HP-UX ===
To configure the services on the HP-UX host I mostly used {{H:title|HP:s System Administartion Manager|'''sam'''}}. This tool gives you allmost all the help you need to manage virtually all aspects of your HP-UX machine.

==== TFTP ====
* Enable tftp in /etc/inetd.conf
* Copy pxelinux0 and vmlinuz into into /tftpdir
* Create the directory pxelinux.cfg and the default file.

=== DHCP/BOOTP ===
Using {{H:title|HP:s System Administartion Manager|'''sam'''}} go into ''Network and Communications'' -> ''Bootable Devices'' -> ''Fixed-Address Devices Booting From this Server''.

Add a new ''Fixed-Address Device'' I specified the following parameters.
* Host Name : ''hostX''
* Internet Address : 192.168.1.1YY
* Subnet Mask : 255.255.255.0
* Boot File Name : /tftpdir/pxelinux.0
* Station Address (the MAC address of the hosts network card) : 00FF00FF00FF
* Device Adapter Type = Ethernet
Additional Parameters
* First Route (3) : 192.168.1.1
* Send Hostname to Device (12)
* First DNS Server (6) : 192.168.0.100
* Domain Name (15) : example.com
* Root Path (17) : /nfsroot/''hostX''

==== NFS ====
HP-UX requires you to specify all hostnames that should have root access to the exported filesystem. Because of this I opted to export each root filesystem as a seperate entry. Another approch would be to export ''/nfsroot/'' and allow all hosts to mount this (and subdirectories as root.

== Problems ==

=== Option TSIZE ===
pxelinux requires the TFTP server to support the "tsize" TFTP option (RFC 1784/RFC 2349).

The TFTP server shiped with HP-UX 11.11 does not support. Support for option tsize is added in a Site Specific patch. More info can be found here http://forums1.itrc.hp.com/service/forums/questionanswer.do?threadId=631386

=== Limits on rootpath ===
If the root path option in HP-UX DHCP/BOOTP server is set to a value longer than 14 characters this option isn't sent to the client. The result is that the Linux kernel tries to mount the default path which seems to be nfshost:/tftpboot/'''hostname'''.

The solution is to put the client file system in a place where the path is shorter than 14 characters.