August 11, 2007 BOOT 8 sgimips

### NAME

boot - sgimips system bootstrapping procedures

### DESCRIPTION

Silicon Graphics MIPS-based computers all feature essentially similar firmware systems. However, as of the Indigo R4x00 series (IP20), quasi- ARCS (Advanced RISC Computing Specification) compatible features are also present. All known PROM implementations support loading executables from disk devices, as well as from the network via BOOTP and TFTP.

### Disk Booting

SGI provides a small filesystem at the beginning of each bootable disk called a Volume Header, which contains a boot loader and other standalone utilities. Booting NetBSD requires that we write our bootloader into to the volume header using sgivol(8).

Once a bootloader is present in the volume header, it may be executed directly by the PROM either manually, or at boot time using the ``OSLoader'' PROM environment variable. The NetBSD bootloader will obtain the kernel filename to boot from the PROM or EEPROM. This is specified by setting the PROM environment variable ``OSLoadFilename'' to an appropriate value. For instance, ``/netbsd.ecoff''.

For example, the following will configure the PROM to use the bootloader ``aoutboot'' to load the kernel ``netbsd.old''

``setenv OSLoader aoutboot
``setenv OSLoadFilename netbsd.old

### Network Booting

The system firmware will obtain an IP address, TFTP server address, and an optional filename from the BOOTP server and download it via TFTP. The PROM's configurable network address environment variable ``netaddr'' must match the address provided by the BOOTP server.

An example BOOTP entry for dhcpd(8) follows:

              host indigo3k {
                      hardware ethernet 08:00:69:42:42:42;
                      fixed-address 192.168.0.2;
                      option host-name "indigo3k.foo";
                      #filename "/netbsd.ecoff";
                      next-server 192.168.0.1;
                      option root-path "/export/indigo3k/root";
                      server-name "192.168.0.1";
              }

To boot a kernel named ``netbsd.ecoff'' the user would type:
``boot -f bootp():/netbsd.ecoff

See dhcpd.conf(5) for more information on configuring as a BOOTP server.

### SEE ALSO

dhcpd.conf(5), dhcpd(8), sgivol(8)

### CAVEATS

Some older PROM revisions do not support loading of ELF images. The build system automatically prepares ECOFF versions, which are correctly interpreted.

### BUGS

NetBSD does not support booting from disk on systems lacking an ARCS-compatible firmware (presently supported systems include Personal Iris and Indigo R3000). It is possible to work around this by creating a sufficiently large volume header and placing the kernel in it, or by network booting.

Some firmware revisions have a bug, which precludes them from communicating with TFTP servers using ports above 32767. When using NetBSD as the TFTP server, this problem may be worked around as follows:

``sysctl -w net.inet.ip.anonportmin=20000
``sysctl -w net.inet.ip.anonportmax=32767

Another bug exists in some firmware revisions, which precludes the PROM from communicating with TFTP servers that employ PMTU (Path MTU) discovery. This bug may be worked around by disabling PMTU on the TFTP server. This does not presently affect NetBSD servers.

This man page is horribly incomplete.