5.3. Загрузчик: третий этап процесса начальной загрузки FreeBSD


Передача управления загрузчику является последним, третьим этапом в процессе начальной загрузки, а сам загрузчик находится в файловой системе, обычно как /boot/loader.

Note: Когда как файлы /boot/boot0, /boot/boot1 и /boot/boot2 здесь присутствуют, они не являются реальными копиями MBR, загрузочного сектора или метки диска соответственно.

Загрузчик являет собой удобный в использовании инструмент для настройки при помощи простого набора команд, управляемого более мощным интерпретатором с более сложным набором команд.

5.3.1. Процесс работы загрузчика
Во время инициализации загрузчик пытается произвести поиск консоли, дисков и определить, с какого диска он был запущен. Соответствующим образом он задает значения переменных и после этого запускает интерпретатор, а простые команды передаются уже ему.

Затем загрузчик читает файл /boot/loader.rc, который по умолчанию использует файл /boot/defaults/loader.conf, устанавливающий подходящие значения по умолчанию для переменных и читает файл /boot/loader.conf для изменения в этих переменных. Затем с этими переменными работает loader.rc, загружающий выбранные модули и ядро.

И наконец, по умолчанию загрузчик выдерживает 10-секундную паузу в ожидании нажатия клавиши, и загружает ядро, если оно не было сделано. Если ожидание было прервано, пользователю выдается приглашение, которое воспринимает простой набор команд, в помощью которых пользователь может изменить значения переменных, выгрузить все модули, загрузить модули и окончательно продолжить процесс загрузки или перезагрузить машину.

Более подробное техническое описание этого процесса дается на странице Справочника loader(8)

5.3.2. Встроенные команды загрузчика
Простой набор команд состоит из:

autoboot секунды
Продолжает загрузку ядра, если не будет прерван в течение указанного в секундах промежутка времени. Он выводит счетчик, и по умолчанию выдерживается интервал в 10 секунд.

boot [-параметры] [имя ядра]
Продолжить процесс загрузки указанного ядра, если оно было указано, и с указанными параметрами, если они были указаны.

boot-conf
Повторно провести тот же самый процесс автоматической настройки модулей на основе переменных, что был произведен при загрузке. Это имеет смысл, если до этого вы выполнили команду unload, изменили некоторые переменные, например, наиболее часто меняемую kernel.

help [тема]
Вывод сообщений подсказки из файла /boot/loader.help. Если в качестве темы указано слово index, то выводится список имеющихся тем.

include имя файла ...
Выполнить файл с указанным именем. Файл считывается и его содержимое интерпретируется строчка за строчкой. Ошибка приводит к немедленному прекращению выполнения команды include.

load [-t тип] имя файла
Загружает ядро, модуль ядра или файл указанного типа с указанным именем. Все аргументы после имени файла передаются в файл.

ls [-l] [маршрут]
Выводит список файлов по указанному маршруту или в корневом каталоге, если маршрут не был указан. Если указан параметр -l, будут выводиться и размеры файлов.

lsdev [-v]
Выводится список всех устройств, с которых могут быть загружены модули. Если указан параметр -v, выводится дополнительная информация.

lsmod [-v]
Выводит список загруженных модулей. Если указан параметр -v, то выводится дополнительная информация.

more имя файла
Вывод указанного файла с паузой при выводе каждой строки LINES.

reboot
Выполнить немедленную перезагрузку машины.

set переменная, set переменная=значение
Задает значения переменных окружения загрузчика.

unload
Удаление из памяти всех загруженных модулей.

5.3.3. Примеры использования загрузчика
Вот несколько практического использования загрузчика.

Чтобы просто загрузить ваше ядро обычным образом, но в однопользовательском режиме:

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

Обновлено: 12.03.2015