boot -chain example with UEFI (=sucessor of BIOS):
UEFI | … | the pc is powered on and the UEFI begins with self-test routines |
↓ | ||
HDD (configured in UEFI) |
… | UEFI boots from the configured device (e.g. “1st boot device = HDD”) |
↓ | ||
GPT
(sector 1-33) |
… | UEFI reads the GPT of the device and the partition with the bootme-flag is further loaded |
↓ | ||
GPT-Partition 1
with bootme-flag (part.-type: freebsd-boot) (sector: e.g. 34-1058) |
… | includes the zfs-bootloader (=gptzfsboot) and this loader searches for zpool’s with enabled bootfs-property (the first found zpool with this property is choosen) |
↓ | ||
ZPOOL
(bootfs = zroot) (part.-type: freebsd-zfs) |
… | the further boot continues from the zfs, which is set as bootfs (e.g. “zroot”) |
↓ | ||
ZFS
(root filesystem with FreeBSD installation) |
… | the zfs-bootloader reads the zfs and loads the kernel |
↓ | ||
Kernel
(FreeBSD) |
… | read configuration, load modules, initilialize devices (etc cetera) |
↓ | ||
init / rc.d |
… | read configuration, configure devices, start daemons (etc cetera) |
some useful commands:
#install the protected-mbr (=pmbr) into the first sector (=mbr) of the device /dev/ada0 gpart bootcode -b /boot/pmbr /dev/ada0 #install the zfs-bootloader (=gptzfsboot) into partition 1 of the device /dev/ada0 gpart bootcode -p /boot/gptzfsboot -i 1 /dev/ada0
if there are any errors in my explanations, please don’t hesitate to contact me.