The boot process is an extremely machine-dependent
activity. Not only must code be written for every computer
architecture, but there may also be multiple types of booting on
the same architecture. For example, a directory listing of
/usr/src/sys/boot
reveals a great amount of architecture-dependent code. There is
a directory for each of the various supported architectures. In
the x86-specific i386
directory, there are subdirectories for different boot standards
like mbr
(Master Boot Record),
gpt
(GUID Partition
Table), and efi
(Extensible Firmware
Interface). Each boot standard has its own conventions and data
structures. The example that follows shows booting an x86
computer from an MBR hard drive with the FreeBSD
boot0
multi-boot loader stored in the very
first sector. That boot code starts the FreeBSD three-stage boot
process.
The key to understanding this process is that it is a series
of stages of increasing complexity. These stages are
boot1
, boot2
, and
loader
(see boot(8) for more detail).
The boot system executes each stage in sequence. The last
stage, loader
, is responsible for loading
the FreeBSD kernel. Each stage is examined in the following
sections.
Here is an example of the output generated by the different boot stages. Actual output may differ from machine to machine:
FreeBSD Component | Output (may vary) |
boot0 | F1 FreeBSD F2 BSD F5 Disk 2 |
boot2
[a] | >>FreeBSD/i386 BOOT Default: 1:ad(1,a)/boot/loader boot: |
loader | BTX loader 1.00 BTX version is 1.02 Consoles: internal video/keyboard BIOS drive C: is disk0 BIOS 639kB/2096064kB available memory FreeBSD/x86 bootstrap loader, Revision 1.1 Console internal video/keyboard (root@snap.freebsd.org, Thu Jan 16 22:18:05 UTC 2014) Loading /boot/defaults/loader.conf /boot/kernel/kernel text=0xed9008 data=0x117d28+0x176650 syms=[0x8+0x137988+0x8+0x1515f8] |
kernel | Copyright (c) 1992-2013 The FreeBSD Project. Copyright (c) 1979, 1980, 1983, 1986, 1988, 1989, 1991, 1992, 1993, 1994 The Regents of the University of California. All rights reserved. FreeBSD is a registered trademark of The FreeBSD Foundation. FreeBSD 10.0-RELEASE #0 r260789: Thu Jan 16 22:34:59 UTC 2014 root@snap.freebsd.org:/usr/obj/usr/src/sys/GENERIC amd64 FreeBSD clang version 3.3 (tags/RELEASE_33/final 183502) 20130610 |
[a] This prompt will appear if the user
presses a key just after selecting an OS to boot at
the |
All FreeBSD documents are available for download at https://download.freebsd.org/ftp/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.