# Setting up a BOOTP server

There are two BOOTP servers available for GNU/Linux. The first is CMU `bootpd`. The other is actually a DHCP server: ISC `dhcpd`. In &debian-gnu; these are contained in the `bootp` and `isc-dhcp-server` packages respectively.

To use CMU `bootpd`, you must first uncomment (or add) the relevant line in `/etc/inetd.conf`. On &debian-gnu;, you can run `update-inetd --enable bootps`, then `/etc/init.d/inetd reload` to do so. Just in case your BOOTP server does not run &debian;, the line in question should look like:

    bootps  dgram  udp  wait  root  /usr/sbin/bootpd  bootpd -i -t 120

Now, you must create an `/etc/bootptab` file. This has the same sort of familiar and cryptic format as the good old BSD `printcap`, `termcap`, and `disktab` files. See the `bootptab` manual page for more information. For CMU `bootpd`, you will need to know the hardware (MAC) address of the client. Here is an example `/etc/bootptab`:

    client:\
      hd=/tftpboot:\
      bf=tftpboot.img:\
      ip=192.168.1.90:\
      sm=255.255.255.0:\
      sa=192.168.1.1:\
      ha=0123456789AB:

You will need to change at least the ha option, which specifies the hardware address of the client. The bf option specifies the file a client should retrieve via TFTP; see tftp-images for more details.

By contrast, setting up BOOTP with ISC `dhcpd` is really easy, because it treats BOOTP clients as a moderately special case of DHCP clients. Some architectures require a complex configuration for booting clients via BOOTP. If yours is one of those, read the section dhcpd. Otherwise you will probably be able to get away with simply adding the `allow bootp` directive to the configuration block for the subnet containing the client in `/etc/dhcp/dhcpd.conf`, and restart `dhcpd` with `/etc/init.d/isc-dhcp-server restart`.