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 protected 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 delimiters are spaces. The configuration
variable drive0 holds information
about the first BIOS drive using tag=value format. 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 ether(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
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 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.|
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.
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.
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.