Training courses

Kernel and Embedded Linux

Bootlin training courses

Embedded Linux, kernel,
Yocto Project, Buildroot, real-time,
graphics, boot time, debugging...

Bootlin logo

Elixir Cross Referencer

.\"	$NetBSD: boot.8,v 1.7 2017/02/17 22:30:28 christos Exp $
.\"
.\" Copyright (c) 2006 Stephen M. Rumble
.\" All rights reserved.
.\"
.\" Redistribution and use in source and binary forms, with or without
.\" modification, are permitted provided that the following conditions
.\" are met:
.\" 1. Redistributions of source code must retain the above copyright
.\"    notice, this list of conditions and the following disclaimer.
.\" 2. The name of the author may not be used to endorse or promote products
.\"    derived from this software without specific prior written permission.
.\"
.\" THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
.\" IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
.\" OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
.\" IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
.\" INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
.\" NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
.\" DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
.\" THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
.\" (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
.\" THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
.\"
.Dd February 17, 2017
.Dt BOOT 8 sgimips
.Os
.Sh NAME
.Nm boot
.Nd sgimips system bootstrapping procedures
.Sh DESCRIPTION
.Tn Silicon Graphics
MIPS-based computers all feature essentially similar firmware systems.
However, as of the Indigo R4x00 series (IP20), quasi-
.Tn 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.
.Sh Disk Booting
.Tn 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
.Nx
requires that we write our bootloader into to the volume header using
.Xr sgimips/sgivol 8 .
.Pp
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
.Dq OSLoader
PROM environment variable.
The
.Nx
bootloader will obtain the kernel filename to boot from the PROM or EEPROM.
This is specified by setting the PROM environment variable
.Dq OSLoadFilename
to an appropriate value.
For instance,
.Dq /netbsd.ecoff .
.Pp
For example, the following will configure the PROM to use the bootloader
.Dq aoutboot
to load the kernel
.Dq netbsd.old
.Pp
.Dl Ic setenv OSLoader aoutboot
.Dl Ic setenv OSLoadFilename netbsd.old
.Sh 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
.Dq netaddr
must match the address provided by the BOOTP server.
.Pp
An example BOOTP entry for
.Xr dhcpd 8
follows:
.Pp
.Bd -unfilled -offset indent
	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";
	}
.Ed
.Pp
To boot a kernel named
.Dq netbsd.ecoff
the user would type:
.Dl Ic boot -f bootp():/netbsd.ecoff
.Pp
See
.Xr dhcpd.conf 5
for more information on configuring
.Xr dhcpd 8
as a BOOTP server.
.Sh SEE ALSO
.Xr dhcpd.conf 5 ,
.Xr dhcpd 8 ,
.Xr sgimips/sgivol 8
.Sh CAVEATS
Some older PROM revisions do not support loading of ELF images.
The build system automatically prepares ECOFF versions, which are
correctly interpreted.
.Sh BUGS
.Nx
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.
.Pp
Some firmware revisions have a bug, which precludes them from communicating
with TFTP servers using ports above 32767.
When using
.Nx
as the TFTP server, this problem may be worked around as follows:
.Pp
.Dl Ic sysctl -w net.inet.ip.anonportmin=20000
.Dl Ic sysctl -w net.inet.ip.anonportmax=32767
.Pp
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
.Nx
servers.
.Pp
This man page is horribly incomplete.