BOOTING(8) BOOTING(8)
NAME
booting - bootstrapping procedures
SYNOPSIS
none
DESCRIPTION
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/DHCP 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 protocols for bootstrapping.
Be sure to read boot(8) to understand what happens after the
kernel is loaded.
Terminals
To bootstrap a diskless terminal or a CPU server, a file
server must be running.
PCs
On a PC, the 9boot(8) program is used to load the kernel
/386/9pc into memory.
Once the kernel is booted, it behaves like the others. See
boot(8) for details.
CPU Servers
The Plan 9 CPU servers are multi-user, so they do not
request a user name when booting.
PC CPU Server
Proceed as for the PC terminal, but have service=cpu set in
plan9.ini(8).
SGI Challenge multiprocessor CPU Server
The Challenge ROM monitor can boot from the Ethernet. To
boot from the Ethernet, type
bootp()/mips/9ch
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 down-
load 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 dhcpd(8)), the file
Page 1 Plan 9 (printed 10/29/25)
BOOTING(8) BOOTING(8)
name can be omitted and the file specified by the bootf
parameter for the machine in /lib/ndb will be downloaded by
default.
Once the kernel is loaded, it prompts for the Ethernet pro-
tocol to use to reach the root file server; request the
default.
ARM CPU Servers
All ARM systems are started by U-boot using similar com-
mands. The kernels (and thus ndb `bootf' parameters) are
`/arm/9gd' for the Marvell PXA168-based Guruplug Display,
`/arm/9plug' for all Marvell Kirkwood plugs (Sheevaplug,
Guruplug, Openrd, etc.), and `/arm/9beagle' for TI OMAP3
boards (IGEPv2 from ISEE, Gumstix Overo). In the following,
replace MAC with your board's MAC address without colons, in
lower case (the format of the `ether' ndb attribute).
First, establish a /cfg/pxe (plan9.ini) file for the new CPU
server. For Kirkwood plugs,
cd /cfg/pxe; cp example-kw MAC
and edit `/cfg/pxe/MAC' to taste. For PXA plugs, replace
`kw' with `pxa'; for OMAP boards, replace `kw' with `omap'
and be sure to edit the line for `ether0' to set
ea=MAC
Second, configure U-boot to load the appropriate kernel and
/cfg/pxe file at suitable addresses and start the kernel.
For Sheevaplugs and Openrd boards, type this at U-boot once:
setenv bootdelay 2
# type the next two lines as one
setenv bootcmd 'bootp; bootp; tftp 0x1000 /cfg/pxe/MAC; bootp;
tftp 0x800000; go 0x800000'
saveenv
For Guruplugs Displays, do the same but type this after
`setenv bootcmd' instead:
'dhcp; tftpboot; tftpboot 0x1000 /cfg/pxe/MAC; bootz 0x500000'
For Kirkwood Guruplugs, type this after `setenv bootcmd':
'dhcp 0x800000; tftp 0x1000 /cfg/pxe/MAC; go 0x800000'
For IGEPv2 boards, type this after `setenv bootcmd':
'tftp 0x80300000 /cfg/pxe/MAC; dhcp 0x80310000; go 0x80310000'
Page 2 Plan 9 (printed 10/29/25)
BOOTING(8) BOOTING(8)
For Gumstix Overo boards, type this after `setenv bootcmd':
'bootp 0x80310000; bootp 0x80300000 /cfg/pxe/MAC; go 0x80310000'
Thereafter, the boards will automatically boot via BOOTP and
TFTP when reset.
SEE ALSO
ndb(6), 9boot(8), boot(8), init(8), plan9.ini(8)
SOURCE
Sources for the various boot programs are under
/sys/src/boot.
Page 3 Plan 9 (printed 10/29/25)