5.2. Загрузочные блоки: первый и второй этапы начальной загрузки

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

В этом процессе задействованы специальные микросхемы Постоянных Запоминающих Устройств (ПЗУ), которые определяют, что делать и в свою очередь, передают управление другим микросхемам, которые выполняют проверку памяти и целостности системы, конфигурируют устройства и предоставляют другим программам способ выяснить подробную информацию о настройках.

В случае обычных персональных компьютеров в этом процессе участвует BIOS (который ответственен на начальную загрузку) и CMOS (которая хранит конфигурацию). BIOS и CMOS умеют работать с дисками и также знают, где на диске находится программа, которая знает, как загрузить операционную систему.

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

Загрузочные блоки (как правило) отвечают за поиск загрузчика, его запуск и поэтому должны уметь находить программу в файловой системе, уметь ее запустить, а также должны иметь возможность выполнять некоторую настройку своей работы.

5.2.1. boot0

На самом деле это предшествующий всему загрузочный блок по имени boot0, который находится в Главной Загрузочной Записи (Master Boot Record), особой части диска, которая используется при начальной загрузке системы для определения порядка загрузки, и содержит список возможных слайсов для загрузки.

boot0 очень прост, так как программа в MBR может иметь размер, не превышающий 512 байт.

Эта программа выводит нечто вроде следующего:

Example 5-1. Образец экрана boot0

    F1 DOS
    F2 FreeBSD
    F3 Linux
    F4 ??
    F5 Drive 1

    Default: F2
    	

5.2.2. boot1

boot1 находится в загрузочном секторе загрузочного слайса, то есть там, где boot0 или любая другая программа из MBR ожидает найти программу, которую следует запустить для продолжения процесса загрузки.

boot1 очень прост, так как он тоже может иметь размер, не превышающий 512 байт, и знает достаточно о метке диска FreeBSD, хранящей информацию о слайсе, для того, чтобы найти и запустить boot2.

5.2.3. boot2

boot2 устроен несколько более сложно, и умеет работать с файловой системой FreeBSD в объеме, достаточном для нахождения в ней файлов и может предоставлять простой интерфейс для выбора и передачи управления ядру или загрузчику.

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

Example 5-2. Образец экрана boot2

    >> FreeBSD/i386 BOOT
    Default: 0:wd(0,a)/kernel
    boot: