Передача управления загрузчику является последним, третьим этапом в процессе начальной загрузки, а сам загрузчик находится в файловой системе, обычно как /boot/loader.
Note: Когда как файлы /boot/boot0, /boot/boot1 и /boot/boot2 здесь присутствуют, они не являются реальными копиями MBR, загрузочного сектора или метки диска соответственно.
Загрузчик являет собой удобный в использовании инструмент для настройки при помощи простого набора команд, управляемого более мощным интерпретатором с более сложным набором команд.
Во время инициализации загрузчик пытается произвести поиск консоли, дисков и определить, с какого диска он был запущен. Соответствующим образом он задает значения переменных и после этого запускает интерпретатор, а простые команды передаются уже ему.
Затем загрузчик читает файл /boot/loader.rc, который по умолчанию использует файл /boot/defaults/loader.conf, устанавливающий подходящие значения по умолчанию для переменных и читает файл /boot/loader.conf для изменения в этих переменных. Затем с этими переменными работает loader.rc, загружающий выбранные модули и ядро.
И наконец, по умолчанию загрузчик выдерживает 10-секундную паузу, ожидая нажатия клавиши, и загружает ядро, если этого не произошло. Если ожидание было прервано, пользователю выдается приглашение, которое воспринимает простой набор команд, в помощью которых пользователь может изменить значения переменных, выгрузить все модули, загрузить модули и окончательно продолжить процесс загрузки или перезагрузить машину.
Более подробное техническое описание этого процесса дается на странице Справочника loader(8)
Простой набор команд состоит из:
Продолжает загрузку ядра, если не будет прерван в течение указанного в секундах промежутка времени. Он выводит счетчик, и по умолчанию выдерживается интервал в 10 секунд.
Продолжить процесс загрузки указанного ядра, если оно было указано, и с указанными параметрами, если они были указаны.
Повторно провести тот же самый процесс автоматической настройки модулей на основе переменных, что был произведен при загрузке. Это имеет смысл, если до этого вы выполнили команду unload, изменили некоторые переменные, например, наиболее часто меняемую kernel.
Вывод сообщений подсказки из файла /boot/loader.help. Если в качестве темы указано слово index, то выводится список имеющихся тем.
Выполнить файл с указанным именем. Файл считывается и его содержимое интерпретируется строчка за строчкой. Ошибка приводит к немедленному прекращению выполнения команды include.
Загружает ядро, модуль ядра или файл указанного типа с указанным именем. Все аргументы после имени файла передаются в файл.
Выводит список файлов по указанному маршруту или в корневом каталоге, если маршрут не был указан. Если указан параметр -l, будут выводиться и размеры файлов.
Выводится список всех устройств, с которых могут быть загружены модули. Если указан параметр -v, выводится дополнительная информация.
Выводит список загруженных модулей. Если указан параметр -v, то выводится дополнительная информация.
Вывод указанного файла с паузой при выводе каждой строки LINES.
Выполнить немедленную перезагрузку машины.
Задает значения переменных окружения загрузчика.
Удаление из памяти всех загруженных модулей.
Вот несколько практического использования загрузчика.
Чтобы просто загрузить ваше ядро обычным образом, но в однопользовательском режиме:
boot -s
Для выгрузки обычных ядра и модулей, а потом просто загрузить ваше старое (или другое) ядро:
unload load kernel.old
Вы можете использовать kernel.GENERIC для обозначения стандартного ядра, поставляемого на установочном диске, или kernel.old для обращения к ранее установленному ядру (после того, как, например, вы обновили или отконфигурировали новое ядро).
Note: Для загрузки ваших обычных модулей с другим ядром используйте такие команды:
unload set kernel="kernel.old" boot-conf
Для загрузки скрипта конфигурации ядра (автоматизированный скрипт, который выполняет то, что вы обычно делаете в конфигураторе ядра во время загрузки):
load -t userconfig_script /boot/kernel.conf