booting - bootstrapping procedures
This manual page collects the incantations required to bootstrap Plan 9 machines. Some of
the information here is specific to the installation at Bell Labs; some is generic.
If a CPU server is up, BOOTP and TFTP will run from there; if not, the necessary files and
services must be available on a separate machine, such as a Unix system, to use these pro-
tocols for bootstrapping.
Be sure to read boot(8) to understand what happens after the kernel is loaded.
To bootstrap a terminal or a CPU server, a file server must be running. On all the termi-
nals, typing two control-T's followed by a lower-case r reboots the machine; other methods
of rebooting are mentioned for some machines.
The boot ROM prints
Typing a newline bootstraps the default system. The components of the server string are
defaulted from the right, for example, to bootstrap /sys/src/9/gnot/9gnot type just that
file name; to bootstrap from a different file server, say kremvax, type
The bootstrap devices available are incon, 9600, 19200 and scsi; with scsi the server name
(here nj/astro/Nfs) becomes a unit number, usually 0, and the file name is a boot parti-
tion to use. For example,
says to boot from SCSI disk 0 the kernel in disk partition /dev/hd0boot.
If running with a local cache file system, one normally bootstraps using the SCSI disk.
However, if the local kernel has been destroyed or is hopelessly out of date, bootstrap
using the serial line. To do this, use the boot string
to bootstrap from the serial line at 9600 baud or
for a 19200 baud connection.
First make sure the ndb(8) entry (or the corresponding Unix BOOTP configuration informa-
tion) looks something like this:
ip=184.108.40.206 ether=00000f00acf7 sys=jobs
When powered on and left alone, a Nextstation will download /68020/9nextstation using the
BOOTP and TFTP protocols. (Actually, first it loads /lib/tftpd/boot and uses that to
download the operating system. That file is not shipped as part of the distribution.
Copy it from /usr/template/client/tftpboot/boot on the vendor-supplied file system.) It
then prompts for the user name and password and asks for the Ethernet protocol to use;
request the default.
While the system is downloading, it displays an Ethernet symbol; at this time, holding the
left Command key down and typing the ~ key aborts the download and transfers control to a
ROM-resident monitor. The monitor will use the Ethernet to boot an alternate kernel given
the command, e.g.,
to force the download to come from system kgbvax.
If running with a local cache file system, bootstrap from the disk. While the system is
downloading, it displays a symbol of a spinning disk. The processor first loads a pro-
gram, Disclabel (see home(8)) from the kernel partition /dev/hd1label and then the real
kernel from /dev/hd1boot.
See Next's documentation for other details, in particular how to initialize a new machine
to boot from Ethernet instead of disk.
To turn the power off, hold down the left Command and Alternate keys and press the power
key. To reboot, hold down the left Command and Alternate and press the key in the upper
right corner of the keypad.
Sun Sparcstation 2, 10, or 20
The Sparcstations all behave similarly. First make sure the ndb(8) entry (or correspond-
ing information on a Unix BOOTP server) is correct. If you are running a Plan 9 tftpd
(see bootp(8)), it will download the file specified by the bootf parameter for the machine
in /lib/ndb; /sparc/9ss runs on the Sparcstation 2, /sparc/9ss10 on the Sparcstation 10.
If you are not using Plan 9 tftpd, you will have to copy or link /sparc/9ss or
/sparc/9ss10 to the appropriate file on the downloading system; the file name requested
will be of the form IPaddr.SUNmm where IPaddr is the 8-digit hexadecimal IP address of the
machine requesting the kernel and mm is an architecture identifier.
To bootstrap, type
to the power-on monitor to load the kernel. There is no way to specify an alternate file
to download. Once running, the operating system asks the same questions as on the
The Magnum ROM monitor can boot from the Ethernet or from a local disk. To boot from the
or use the ROM command setenv to set the variable bootfile to that same string and type
boot. To load a different file, tell bootp which file to load, and to force the download
to come from a particular system, bootp()system:file. Any arguments after bootp()file are
passed to /boot. If you are running a Plan 9 BOOTP server (see bootp(8)), the file name
can be omitted and the file specified by the bootf parameter for the machine in /lib/ndb
will be downloaded by default.
To boot Plan 9 from disk it is first necessary to install the boot program, kept in
/sys/src/boot/magnum/partboot. This should be written into the first partition on the
disk, which must be exactly 32K; the second partition should be at least a megabyte and
will hold the kernel to boot. Boot Plan 9 over the Ethernet and follow these instruc-
tions. Use prep(8) to establish a partition table that looks something like this:
partboot 0 64
boot 64 2112
Run these commands to put the necessary files on the disk:
bind -a '#w' /dev
cp /sys/src/boot/magnum/partboot /dev/sd0partboot
cp /mips/9magnum /dev/sd0boot
The kernel, here /mips/9magnum, may be any Magnum kernel. The rc(1) script magnum/home
(see home(8)) automates this whole procedure for stand-alone home Magnums.
Once the disk is established, type to the Magnum boot ROM
to load the Plan 9 bootstrap program or use the ROM command setenv to set the variable
bootfile to that same string and type boot. The bootstrap program will then prompt for
the partition to boot from. If nothing is typed within 15 seconds, a kernel will be
booted from the hard disk partition /dev/sd0boot. Any arguments after dksd(0,0)b are
passed to boot(8).
By /mips/9magnumboot installing as the kernel on disk, it is possible to bootstrap another
kernel using networks or devices unknown to the regular ROM. In other words, use partboot
to load a more sophisticated bootstrapping kernel, and boot again using that. For exam-
dksd(0,0)b il /mips/9magnum
to such a system will bootstrap over the Ethernet using IL.
Once running, the operating system asks the same questions as on the Nextstation.
To boot a PC, it is necessary to get b loaded into memory (see b.com(8)). There are two
ways to do this. A Plan 9 boot floppy prepared by format (see prep(8)) will start b when
the PC is reset or powered on. Without such a floppy, boot DOS normally and type b to the
From DOS, it is possible to give b an argument to specify the booting method. Otherwise,
b will prompt for the method.
To boot the file /386/9pc from Ethernet using BOOTP and tftpd, use the method e!0 or to
The DOS file plan9.ini (see plan9.ini(8)) must specify an Ethernet interface card for this
To boot from the Plan 9 IDE hard disk partition hd0boot, type
To boot from a DOS filesystem the kernel 9pc, type
To boot from a DOS filesystem on a floppy, type
The boot program b will also read the file plan9.ini from the DOS file system on any
floppy or hard disk and pass it to the kernel. Plan9.ini specifies PC configuration
information. See b.com(8) and plan9.ini(8) for details.
Once the kernel is booted, it behaves like the others. See boot(8) for details.
The Plan 9 CPU servers are multi-user, so they do not request a user name when booting.
On the CPU servers, typing a control-P on the console reboots the machine.
SGI Power Series CPU Server
Enter the ROM monitor by typing an ESC at the system startup menu, then select option 5.
The monitor will print a >> prompt. Then type bootp()/mips/9powerboot to load the Plan 9
bootstrap program. The bootstrap program takes two optional arguments, which may be typed
on the same command line: the method with which to attach to a file server (as in boot(8))
and a kernel file to boot. The default method is cyc and the default kernel file is
The bootstrap program reads a configuration description from a file identified by the IP
address of the machine, e.g. /mips/conf/220.127.116.11. 9powerboot then loads the kernel
and passes it the configuration information.
Sun Sparcstation CPU Server
Proceed as for the Sparcstation running as a terminal but load /sparc/9sscpu on Sparcsta-
tion 2's and /sparc/9ss10cpu on Sparcstation 10's.
Mips Magnum CPU Server
Booting is the same as for the Magnum running as a terminal but the file to load is
The CPU servers and terminals run essentially the same program, but the Plan 9 file
servers run a distinct system. The file servers accept only the commands described in
fs(8) on their consoles.
SGI Power Series File Server
Get to the >> prompt as described for the CPU servers. Then boot the system over the Eth-
ernet like a Magnum (sic), loading /mips/9powerfs. The system will come up automatically.
On machines with WORM jukeboxes, several minutes will be spent initializing the jukebox;
the machine will chat happily while this is going on. The first time the system is
booted, it will be necessary to establish the NVRAM and configuration information; see
Mips 6280 File Server
In response to the ROM's >>> prompt, type
Sparc Sparcstation File Server
Proceed as for the Sparcstation running as a terminal, but load /sparc/9ssfs. There is
support for the Sparcstation 2 only.
Mips Magnum File Server
Proceed as for the Magnum running as a terminal, but load /mips/9magnumfs.
b.com(8), boot(8), fs(8), init(8), plan9.ini(8)
Sources for the various boot programs are under /sys/src/boot, except that /mips/9power-
boot is a version of the SGI kernel made in /sys/src/9/power.
The file server should be able to boot from its own disk.