9BOOT(8) 9BOOT(8)
NAME
9bootfat, 9bootiso, 9boothyb, 9bootpxe, bootia32.efi,
bootx64.efi, efiboot.fat - PC bootloader for FAT, ISO and
PXE network booting
SYNOPSIS
Started by PC BIOS/EFI or chainloaded by partition
bootsector
DESCRIPTION
9boot is the bootloader used on PCs to start the Plan 9
kernel. Its task is to read and parse the plan9.ini(8) con-
figuration file, gather some basic system information like
the amount of usable system memory, do some basic system
initialization and load the kernel from the boot media into
memory.
After reading the configuration, the loader will automati-
cally attempt to boot the kernel that was specified by the
bootfile= parameter. If there is no such parameter, any key
gets pressed on the keyboard 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 the
plan9.ini(8) file with key=value pairs setting boot parame-
ters. In addition a few command words are recognized that
are intended for interactive use:
clear[prefix]
can be used to remove parameters from the configura-
tion. If a prefix is specified, the first parameter
that matches the prefix is removed. If the prefix argu-
ment is omitted, the whole configuration will be reset.
show displays the current configuration in memory.
wait will return to the console prompt after processing the
configuration file preventing automatic boot.
boot will end the console and attempt booting the kernel.
There are many ways to boot a PC so 9boot was split into a
number of distinct programs, one for each boot method.
FAT BOOTING
When booting Plan 9 from a harddisk or USB pen drive, a
FAT16/32 partition (9fat) is used to store the kernel and
plan9.ini(8) configuration. Due to size limitations, instead
of loading the kernel directly, the bootsector (pbs) of the
Page 1 Plan 9 (printed 10/30/25)
9BOOT(8) 9BOOT(8)
FAT partition loads a 2nd stage bootloader (9bootfat) from
the root directory of the filesystem.
CD-ROM BOOTING
Booting from CD-ROM requires only the 9bootiso bootloader to
be included in the ISO-9660 image under /386/9bootiso, set
as a non-emulation bootblock (see -B in mk9660(8)). Boot
parameters are read from /cfg/plan9.ini.
ISO HYBRID BOOTING
With the 9boothyb loader, an ISO image can be made into a
bootable disk by creating a MBR and appending a bootable DOS
partition containing 9boothyb renamed to 9bootfat. The
loader will read the ISO filesystem as if it were stored on
a CD-ROM drive.
NETWORK BOOTING
With a PXE capable BIOS and network card one can download
9bootpxe and boot the kernel from a TFTP server (see
dhcpd(8) and ndb(6) for details). Once started, 9bootpxe
will read the file /cfg/pxe/$ether or, if this file is not
present, /cfg/pxe/default from the tftp server, where $ether
is the MAC address of the client's network card in lower
case hex, and uses this as its plan9.ini(8) file.
EFI BOOTING
EFI firmware looks for the files bootia32.efi (for 386) or
bootx64.efi (for amd64) in the boot media and executes them.
For local disk media, these files are located in the direc-
tory /efi/boot of the FAT formatted boot partition. For
CD-ROM media, the boot partition is provided as a embedded
FAT filesystem image efiboot.fat (see -E in mk9660(8)). In
the network boot case, the bootia32.efi or bootx64.efi files
are used as the BSP program instead of 9bootpxe. Once
started, the boot media (PXE, ISO, FAT) is discovered and
plan9.ini(8) configuration is read from it in the same way
as with the BIOS-based 9boot* loaders. If the EFI loader
was executed from a FAT partition, it will first search for
plan9.ini(8) in the same FAT filesystem that it was loaded
from, and if not found, will search for plan9.ini(8) in any
other partition in an implementation-defined order. The
kernel is always loaded from the same partition that
plan9.ini(8) is read from.
FILES
/386/pbs
/386/9bootfat
/386/9bootiso
/386/9boothyb
/386/9bootpxe
/386/bootia32.efi
/386/bootx64.efi
Page 2 Plan 9 (printed 10/30/25)
9BOOT(8) 9BOOT(8)
/386/efiboot.fat
SOURCE
/sys/src/boot/pc
/sys/src/boot/efi
SEE ALSO
plan9.ini(8), mk9660(8), dhcpd(8), ndb(6)
https://uefi.org
BUGS
The uart number is picked up from console= but the parame-
ters are ignored as BIOS allows only a maximum baud-rate of
9600 so the setting b9600 l8 s1 is assumed. Some BIOS
emulate/redirect keyboard input and CGA output to the serial
console, which causes doubling of characters. This can be
avoided using *nokbd= and *nocga= parameters. Also, in some
of these emulations the BIOS uart functions can produce some
problems that can be avoided using the *nouartbios= parame-
ter. Serial console is not supported by EFI.
9bootfat only supports short (8+3) file-names.
HISTORY
9boot first appeared in 9front (April, 2011). EFI support
first appeared in 9front (Oct, 2014).
Page 3 Plan 9 (printed 10/30/25)