NAME
loader
—
kernel bootstrapping final
stage
DESCRIPTION
The program called loader
is the final
stage of FreeBSD's kernel bootstrapping process. It
is responsible for bringing the kernel, kernel modules and other files into
memory. It creates a set of
sh(1) like environment variables that are passed to the kernel. It
executes boot scripts written in one of several interpreters. Together with
the scripts, it controls the booting process and interaction with the
user.
It provides a scripting language that can be used to automate tasks, do pre-configuration or assist in recovery procedures. This scripting language is roughly divided in two main components. The smaller one is a set of commands designed for direct use by the casual user, called "builtin commands" for historical reasons. The main drive behind these commands is user-friendliness. The larger component is the scripting language built into the boot loader. FreeBSD provides three different interpreters: Forth, Lua and Simple. The Forth loader is based on an ANS Forth compatible Forth interpreter based on FICL, by John Sadler. The Lua loader is a full Lua interpreter from https://www.lua.org/. The Simple loader only interprets a list of builtin commands without any control structure.
During initialization, loader
will probe
for a console and set the console variable, or set it
to serial console (“comconsole
”) if
the previous boot stage used that. If multiple consoles are selected, they
will be listed separated by spaces. Then, devices are probed,
currdev and loaddev are set, and
LINES is set to 24. Finally, an interpreter specific
file will be executed.
BUILTIN COMMANDS
The commands common to all interpreters are described in the loader_simp(8) “BUILTIN COMMANDS” section.
BUILTIN ENVIRONMENT VARIABLES
The environment variables common to all interpreters are described in the loader_simp(8) “BUILTIN ENVIRONMENT VARIABLES” section.
SEE ALSO
libsa(3), loader.conf(5), tuning(7), boot(8), btxld(8), loader.efi(8), loader_4th(8), loader_lua(8), loader_simp(8)
HISTORY
The loader
first appeared in
FreeBSD 3.1. The loader
scripting language changed to Lua by default in FreeBSD
12.0.
AUTHORS
The loader
was written by
Michael Smith
⟨msmith@FreeBSD.org⟩.
FICL was written by John Sadler ⟨john_sadler@alum.mit.edu⟩.
Warner Losh ⟨imp@FreeBSD.org⟩ integrated Lua into the tree based on initial work done by Pedro Souza for the 2014 Google Summer of Code.