Chapter 2. Setting up NILO

Table of Contents
Host Server Software
OSkit

Host Server Software

There are several pieces of server software that need to be installed to use NILO. These are the DHCPD and TFTPD servers. DHCPD is used to assign IP numbers to the client when it's booting, and TFTPD is used to transfer the files to the client.

Setting up tftp

There are several tftpd servers available. NILO works with the standard TFTP, and will have support for Intel's multicast version with larger block sizes. I'm currently using a version from Intel with all the extensions that seems to be based on the Bootix (was called Incom) Novell version, which is based on the BSD version. There are several other free versions based on the BSD original. NILO doesn't care, and should work with any. The Intel specific one is only needed for true PXE compatability.

Setting up your DHCP server

PXE requires alot of new options to the DHCP protocol, many of which not supported by most DHCP servers. The first version of the prefered DHCPD server is dhcpd-3.b1p10. This is the ISC's reference version, which several other DHCPD servers (particularly on NT) are based on older versions of. Configuring the sofware is standard autoconf like NILO uses. The trick is to configure the server correctly. Here is my current dhcpd.conf.

Example 2-1. dhcpd.conf


	#
	# dhcpd.conf for ISC DHCPD 3.0-b1p10
	#
	option domain-name "welcomehome.org";
	option domain-name-servers 206.168.116.8;
	option broadcast-address 192.203.188.255;
	option routers lsd.welcomehome.org;
	option subnet-mask 255.255.255.0;

	#option vendor-encapsulated-options ff; 
	option broadcast-address 192.203.188.255;

	default-lease-time -1;
	max-lease-time 120;

	# Definition of PXE-specific options
	# Code 1: Multicast IP address of bootfile
	# Code 2: UDP port that client should monitor for MTFTP responses
	# Code 3: UDP port that MTFTP servers are using to listen for MTFTP requests
	# Code 4: Number of secondes a client must listen for activity before trying
	#         to start a new MTFTP transfer
	# Code 5: Number of secondes a client must listen before trying to restart
	#         a MTFTP transfer
	option vendor-encapsulated-options 01:04:00:00:00:00:ff;

	option space PXE;
	option PXE.mtftp-ip    code 1 = ip-address;  
	option PXE.mtftp-cport code 2 = unsigned integer 16;
	option PXE.mtftp-sport code 3 = unsigned integer 16;
	option PXE.mtftp-tmout code 4 = unsigned integer 8;
	option PXE.mtftp-delay code 5 = unsigned integer 8;

	subnet 192.203.188.0 netmask 255.255.255.0 {
	range dynamic-bootp 192.203.188.200 192.203.188.212;
	host nilo-eth0 {
		hardware ethernet 00:40:c7:94:02:d6;	# chinadoll
		fixed-address 192.203.188.15;
		# Bpbatch options. Must be bpbatch.P to boot bpbatch
		# filename "bpbatch.P";
		filename "bootimage";
		# BpBatch command-line argument : -i == interactive (or test)
		# You can also specify a script name (do not include the
		# trailing .bpb extension). Option 155 is for PXE version 2.0, and
		# option 135 is used for PXE version 1.0
		option option-155 "-i";
		#option option-135 "test";
		# PXE specific options
		class "pxeclients" {
		    match if substring (option vendor-class-identifier, 0, 9) = 
		    "PXEClient";
		    option vendor-class-identifier "PXEClient";
		    # At least one of the vendor-specific option must be set. We set
		    # the MCAST IP address to 0.0.0.0 to tell the bootrom to still use
		    # TFTP (address 0.0.0.0 is considered as "no address")
		    option PXE.mtftp-ip 192.203.188.11;
		    vendor-option-space PXE;
		    }
		}
        }