PCIPL(8) PCIPL(8)
NAME
iplfat, ipliso, iplpxe - PC bootloader for FAT, ISO and PXE
network booting
SYNOPSIS
Started by PC BIOS or chainloaded by partition bootsector
DESCRIPTION
Ipl is a PC bootloader capable of loading 32- or 64-bit Plan
9 kernels. It loads configuration from plan9.ini(8), and
gathers additional system information (discussed below). It
loads the kernel into memory, and jumps to it in 32-bit pro-
tected mode. During operation, output is sent both to the
VGA and serial consoles.
The interpreted configuration is placed at CONFADDR, 0x1200
along with any discovered hardware information. The E820
memory map is presented as *e820, and consists of 3-tuples
of memory type, base address and end address. All delim-
iters are spaces. The configuration variable drive0 holds
information about the first BIOS drive using tag=value for-
mat. The required tags are tbdf, chan, and sectors. USB
drives also have the tag usb=y. For PXE-capable systems,
ether0 holds information about the first PXE device. The
required tags are ea, the ethernet address, and tbdf. The
kernels use this information to select the first ethernet
port. (see devether(3))
The loader will automatically attempt to boot the kernel
specified by bootfile. If there is no such parameter, a key
is pressed or the kernel file was not found then the loader
enters the interactive boot console.
The syntax of the boot console is the same as in plan9.ini,
except for multiple configurations (boot menus). The word
clear [ prefix ] can be used to remove parameters from the
current configuration. If a prefix is specified, the first
matching parameter is removed. If the prefix is omitted, the
whole configuration will be reset. If the word wait appears
in the configuration then ipl will return to the console
prompt after processing the file.
The word boot will resume booting the kernel, while panic
will warm boot the machine.
The menu symtax differs from standard plan9.ini files, but
the semantics are the same. The menu section contains two
types of items: optionn, and default. The option syntax is
optionn=blockname, Blockname is the name of the block to be
included. There is no descriptive text. The syntax for
Page 1 Plan 9 (printed 4/20/26)
PCIPL(8) PCIPL(8)
default is default=blockname. With a default, ipl will wait
for 10 seconds for a response, otherwise selecting the
default. Without a default, ipl will wait indefinitely.
There are many ways to boot a PC; there is one ipl program
for each boot method.
FAT Booting
When booting from a harddisk or USB pen drive, a FAT16/32
partition, 9fat, is used to store the kernel and plan9.ini.
Due to size limitations, instead of loading the kernel
directly, the bootsector, pbs, of the FAT partition loads a
2nd stage bootloader, iplfat, from the root directory of the
filesystem.
CD-ROM Booting
Booting from CD-ROM requires only the ipliso bootloader to
be included in the ISO-9660 image under 386/ipliso, set as a
non-emulation bootblock (see mk9660(8)). Boot parameters are
read from cfg/plan9.ini.
Network Booting
With a PXE capable BIOS and network card one can download
iplpxe and boot the kernel from a TFTP server (see dhcpd(8)
and ndb(6) for details). Once started, iplpxe will read the
file /cfg/pxe/ether from the tftp server to use as its
plan9.ini. Ether is the MAC address of the PXEing interface
in lower case hex.
EXAMPLES
On a typical FAT-booted server, iplfat might set the follow-
ing based on hardware configuration
*e820=1 0x0 0x9b000 2 0x9b000 0xa0000 [...]
2 0xff000000 0x100000000
drive0=sectors=0x1e78780 tbdf=0x2000 usb=y chan=0x5
On a typical PXE-booted server, iplpxe might also set
ea=002590c1a56e tbdf=0x0c030000
Note that drive0 is set by both iplpxe and iplfat.
This configuration file will boot from either a primary or
secondary file server. To select the secondary file server,
one must override the default within 10 seconds.
[menu]
option0=wrens
option1=swift
[wrens]
Page 2 Plan 9 (printed 4/20/26)
PCIPL(8) PCIPL(8)
fs=10.220.1.17
bootfile=9cpu
[swift]
fs=10.220.1.22
bootfile=9paecpu
[common]
console=0 b115200
ether0=type=i82598
auth=10.220.1.1
nobootprompt=il -g 10.220.10.1 ether /net/ether0 10.220.1.1 /112
FILES
/386/iplmbr
/386/iplpbs
/386/iplfat
/386/ipliso
/386/iplpxe
SOURCE
/sys/src/boot/pcipl
SEE ALSO
devether(3), plan9.ini(8).
BUGS
Booting from disk requires a FAT filesystem.
Page 3 Plan 9 (printed 4/20/26)