GPTZFSBOOT(7) Standards, Environments, and Macros GPTZFSBOOT(7)

gptzfsbootdisk bootcode for BIOS-based computers

gptzfsboot is used on BIOS-based computers to boot from a filesystem on disk device. Depending on disk partitioning and boot file system, the gptzfsboot is installed in a zfs pool boot area or boot partition of a disk with installboot(8).

The GPT standard allows a variable number of partitions, but gptzfsboot only boots from tables with 128 partitions or less.

gptzfsboot tries to find all ZFS pools that are composed of BIOS-visible hard disks or partitions on them. gptzfsboot looks for ZFS device labels on all visible disks and in discovered supported partitions for all supported partition scheme types. Disks are probed in BIOS defined order. After a disk is probed and gptzfsboot determines that the whole disk is not a ZFS pool member, the individual partitions are probed in their partition table order. Currently GPT and MBR partition schemes are supported.

The default boot partition is recorded into gptzfsboot binary by installboot(8) and the default boot file system is determined at run time. gptzfsboot does support booting from the ZFS, UFS and PCFS file systems.

The filesystem specified by the bootfs property of the ZFS pool is used as a default boot filesystem. If the bootfs property is not set, then the root filesystem of the pool is used as the default. loader(7) is loaded from the boot filesystem. If /boot/config is present in the boot filesystem, boot options are read from it.

The ZFS GUIDs of the boot pool and boot file system are made available to loader(7).

Normally gptzfsboot will boot in fully automatic mode. However, it is possible to interrupt the automatic boot process and interact with gptzfsboot through a prompt.

The filesystem specification and the path to loader(7) is specified as

[zfs:pool/filesystem:][/path/to/loader]

Both the filesystem and the path can be specified. If only a path is specified, then the default filesystem is used. If only a pool and filesystem are specified, then /boot/loader is used as a path.

Additionally, the gptzfsboot does support two commands to get information about the system. ?directoryname can be used to list the content of named directory and status command can be used to query information about discovered devices. The output format for ZFS pools is similar to that of zpool status (see zpool(8)).

The configured or automatically determined ZFS boot filesystem is stored in the loader(7) loaddev variable, and also set as the initial value of the currdev variable.

The following options are supported by gptzfsboot and loader(7):

Dual console. Use both text and serial console with gptzfsboot and loader(7).
Probe for keyboard. If there is no keyboard, switch on the dual console and serial console.
speed
Set serial port speed.
Set serial console.
Keep the gptzfsboot console quiet.
Keep the VGA text mode for loader(7).

The following options will be passed to the kernel:

Single user
Verbose boot

/boot/config
parameters for the boot block (optional)
/boot/gptzfsboot
boot code binary

gptzfsboot is installed in combination with a “protective MBR” (see installboot(8)). To install gptzfsboot on the c0t0d0s0 drive:

installboot /boot/pmbr /boot/gptzfsboot /dev/rdsk/c0t0d0s0

loader(7), installboot(8), zpool(8)

July 17, 2019 OmniOS