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) configuration 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 automatically
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 parameters. In addition
a few command words are recognized that are intended for interactive
use: clear[prefix]
waitwill return to the console prompt after processing the configuration file preventing automatic boot. bootwill end the console and attempt booting the kernel. |
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 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 directory /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 /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 parameters
are ignored as BIOS allows only a maximum baud–rate of 9600 so
the setting b9660 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. Serial console is not supported
by EFI. |
HISTORY
9boot first appeared in 9front (April, 2011). EFI support first
appeared in 9front (Oct, 2014). |