Previous: bootme.html Next: tftp.html

On "master" there is no "bootme" file. Instead we use a symbolic link called bootme that points to the real forth boot script. Either "bootlinux" or "bootmacos". Changing the symbolic link would then change the entire cluster over to boot into either macos or linux. It was impressive to have so much control with just one symbolic link, but it became apparent that a fine grained per machine control was necessary to have smooth resource sharing between students needing to run MacOS, and cluster users/developers wanting to run Linux. Either that or implement some kind of time reservation scheme that would only waste time and resources. Dynamic realtime scheduling is far superior.

This kind of per machine boot control is achieved by using Wietse Venema's tcp wrapper (tcpd) compiled with the extended version of the access control language. This is the default with debian (woody and sid) and is described in the hosts_options(5) man page.

We use the "twist" option in /etc/hosts.allow, twisting the tftp request into a unique directory for each client making a tftp request. The "%a" macro expands into the IP address of the requestor, which is then used as the name of the unique directory. This turned out to be a simple and elegant solution. The necessary changes to inetd.conf and hosts.allow are shown below.

inetd.conf:

Specifically, we add the following lines to /etc/inetd.conf and restart the inetd.

# this is restricted in /etc/hosts.allow to the internal .prv network # it is also twisted into a unique dir/host. named by IP address for simplicity [see /etc/hosts.allow] tftp dgram udp wait.400 nobody /usr/sbin/tcpd /usr/sbin/in.tftpd /tftpboot

hosts.allow:

Here are the lines that need to be added to the /etc/hosts.allow file:

# spawn a new tftpd process into the unique dir with the same name as # the IP address of the connecting host (%a) in.tftpd: 192.168.2.0/255.255.255.0: twist /usr/sbin/in.tftpd /tftpboot/%a

Next: TFTP Directory Policy and Use