1.4. Этап boot0

Обратите внимание на файл /boot/boot0. Это маленький файл размером 512 байт, и именно его процедура установки FreeBSD запишет в MBR вашего жёсткого диска, если вы выбрали опцию ''bootmanager'' во время установки.

Как уже отмечалось, инструкция INT 0x19 загружает MBR, т.е. содержимое boot0, в память по адресу 0x7c00. Взгляните на файл sys/boot/i386/boot0/boot0.s, который вам поможет разобраться в том, что происходит на данной стадии. Это менеджер загрузки, написанный Робертом Нордиером (Robert Nordier).

MBR, или boot0, содержит специальную структуру - таблицу разделов (partition table), располагающуюся со смещения 0x1be. Она содержит 4 записи по 16 байт каждая, называемые записями о разделах, которые указывают, каким образом диск(и) делится на разделы, или слайсы, если пользоваться терминологией FreeBSD. Один байт из этих 16 указывает на то, является ли раздел (слайс) загрузочным, или нет. Только одна запись должна содержать этот флаг установленным, в противном случае код boot0 не будет выполняться далее.

Запись о разделе содержит следующие поля:

Дескриптор записи о разделе хранит информацию о точном расположении раздела на диске. Оба дескриптора CHS и LBA описывают одну и ту же информацию, но каждый по-своему: LBA (Logical Block Addressing, Логическая блоковая адресация) содержит информацию о начальном секторе и длине раздела, в то время как CHS (Cylinder Head Sector, Цилиндр-Головка-Сектор) хранит координаты начального и конечного секторов раздела.

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

Какие данные должны располагаться в самом первом секторе загрузочного раздела (слайса), в нашем случае, слайса FreeBSD? Как вы уже наверное догадались, это boot2.

Этот, и другие документы, могут быть скачаны с ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите <doc@FreeBSD.org>.
По вопросам, связанным с русским переводом документации, пишите в рассылку <frdp@FreeBSD.org.ua>.
Информация по подписке на эту рассылку находится на сайте проекта перевода.