Next | Prev | Up | Top | Contents | Index

Booting across the Network

At the heart of the operation of diskless workstations is the bootp protocol. The bootp protocol is a DARPA standard protocol supported on all Silicon Graphics servers and workstations. One of the devices that the Command Monitor can use for booting is the network. Silicon Graphics provides a TCP/IP boot protocol that lets you boot files that reside on another host in the network, if the other host supports the booting protocol. The network booting protocol is the bootp protocol. It is a datagram protocol that uses the User Datagram Protocol (UDP) of TCP/IP to transfer files across the Ethernet network.

To boot across the network, you must first determine the Internet address of the machine you want to boot. The Internet address is a number assigned by the network administrator of the network to which the system is attached. The format of the number is four decimal numbers between 0 and 255, separated by periods; for example:

192.20.0.2

Use the setenv command to set the netaddr environment variable to this address; for example:

setenv netaddr 192.20.0.2


Booting across the Network with bootp

Once you have set the netaddr environment variable, you can use bootp to refer to a remote file by using a file name of the form:

bootp()[hostname:] path

To configure the gateway to permit cross-network forwarding, follow these steps:

  1. Log in as root or become the superuser by issuing the su command.

  2. Edit the file /etc/inetd.conf on the gateway machine. This file configures the bootp server, which is started by the inetd(1M) daemon.

  3. Change the bootp description so that inetd invokes bootp with the -f flag. Find this line:

    bootp dgram udp wait root /usr/etc/bootp bootp

    Add the -f flag to the final bootp on the line:

    bootp dgram udp wait root /usr/etc/bootp bootp -f

  4. Change the tftp configuration line in one of the following ways:

    Remove the -s flag from the argument list for tftpd:

    tftp dgram udp wait guest /usr/etc/tftpd tftpd -s

    This allows tftpd access to all publicly readable directories. If you are concerned about a possible security compromise, you can instead explicitly list the directories to which tftpd needs access. In this case, you need to add /usr/etc:

    tftp dgram udp wait guest /usr/etc/tftpd tftpd -s /usr/etc

    See tftpd(1M) and tftp(1C) for more information.

  5. Signal inetd to re-read its configuration file.

    killall -1 inetd


Booting Across A Larger Network

If you have access to a larger network, and the bootable file you need is sufficiently remote on the network that the tftp and bootp timeouts and network delays are keeping you from booting successfully, it is possible to use an intermediary host as a bootp server.

As an example, consider the following situation. You have a host named local_host that needs to boot a kernel found on the remote system far_host. But the network is heavily used, resulting in bootp and tftp timing out before the boot operation can take place. However, a third host, near_host, has the optional NFS software and has automount(1M) running, allowing access to the files on far_host. To boot through this method, perform the following steps:

  1. On near_host, the system acting as intermediary, log in as root and edit the file /etc/inetd.conf. This file configures the bootp server, which is started by the inetd(1M) daemon.

  2. On near_host, change the bootp description in the /etc/inetd.conf file so that inetd invokes bootp with the -f flag. Find this line:

    bootp dgram udp wait root /usr/etc/bootp bootp

    Add the -f flag to the final bootp on the line:

    bootp dgram udp wait root /usr/etc/bootp bootp -f

  3. On near_host, change the tftp configuration line in the /etc/inetd.conf file in one of the following two ways:

    Remove the -s /usr/local/boot string from the argument list for tftpd, so that the entry matches the following:

    tftp dgram udp wait guest /usr/etc/tftpd tftpd

    This allows tftpd access to all publicly readable directories.

    If you are concerned about a possible security compromise, you can instead explicitly list the directories to which tftpd needs access. In this case, you need to add /hosts:

    tftp dgram udp wait guest /usr/etc/tftpd tftpd -s /hosts

    See tftpd(1M) and tftp(1C) for more information.

  4. Signal inetd to re-read its configuration file.

    killall -1 inetd

  5. On far_host, the system on the distant subnetwork, use NFS to export the directory containing the needed bootable kernel (in this case, the file is /usr/local/boot/unix). If you need help exporting a directory, see the export(1M) reference page.

  6. On local_host, the system you are trying to boot, give the command:

    boot -f bootp()near_host:/hosts/far_host/usr/local/boot/unix

    If bootp times out, try the command again, as automount may require a bit of time to retrieve the files from the remote system.


Next | Prev | Up | Top | Contents | Index