Сопровождаемый загрузкой системы запуск компьютера приводит к уникальной дилемме. Дело в том, что изначально еще до самого старта операционки компьютер не может ничего. В частности ему не известно, как должны запускаться программы с дисков. Таким образом, компьютер не способен запустить программное обеспечение с дискового или флеш накопителя в отсутствии, собственно, операционной системы. Ну а как же запускается сама операционная система?
При рассмотрении данной проблемы имеет место аналогия с одной из историй из книги «Приключения барона Мюнхгаузена», когда ее герой стал утопать в болоте и ему самостоятельно пришлось себя вытаскивать из него, тянув себя за волосы. С того момента, как в мире началась глобальная компьютеризация термин начальной загрузки был применим исключительно к механизмам, которые использовались для того, чтобы загружать операционную систему, однако позже его сократили до обыкновенного и обиходного термина «загрузка».
В рамках аппаратного обеспечения с х86-архитектурой загрузкой «оси» управляет BIOS, он же Basic Input/Output System. Для этого ему нужно найти на жестком носителе MBR, которая в свою очередь располагается на определенном участке дискового пространства. Таким образом, может осуществлять загрузку и запускать MBR притом, что MBR может брать на себя весь остальной функционал, который, собственно, отвечает за загрузку операционки.
Выполняемая часть MBR называется BootManager или менеджером загрузки, в частности если речь идет о взаимодействии с пользователем. При этом загрузочный менеджер занимает больше дискового пространства в рамках его первого трека, либо непосредственно в файловой системе операционки. Особенность загрузки FreeBSD заключается в том, что термин BootLoader, он же загрузчик, чаще всего используется для того, чтобы описать более позднюю загрузочную фазу. Если говорить о наиболее популярны загрузочных менеджерах, то в первую очередь следует упомянуть BootEasy или boot0, который является стандартным загрузочным менеджером во FreeBSD, а также LILO, GAG и Grub. Среди всех перечисленных вариантов загрузочных менеджеров помещаться в MBR может исключительно boot0.
Если на диск устанавливается одна ОС, то одной стандартной MBR будет вполне достаточно. В данном случае MBR будет осуществлять поиск в рамках дискового пространства первого активного (загрузочного) слайса. После того, как слайс будет найдет с него последует код запуска остального массива операционки. Если, например, говорить о работе с утилитой fdisk, то изначально в ней по умолчанию установлена подобная MBR, базирующаяся на файле boot/mbr.
Если же на дисках устанавливается сразу несколько операционных систем, то можно устанавливать другие загрузочные менеджеры, которые позволяют выдавать списки самых разных операционных систем, позволяя выбирать вам один из предлагаемых вариантов.
Остальная часть системы начального варианта загрузки FreeBSD делится на 3 этапа. Первый предполагает запуск непосредственно из MBR, который имеет достаточно сведений для того, чтобы перевести ПК в специальный режим и перейти к загрузке последующего этапа.
На втором этапе может выполняться немного больше функций, прежде чем дело дойдет до третьего этапа.
На завершающем этапе работа по загрузке операционки завершается. Поскольку стандартные компьютеры имеют ограничения по размерам запускаемых программ в рамках первого и второго этапа, работа, собственно и поделена на поэтапное выполнение.
Чтобы обеспечить последовательное выполнение работ FreeBSD требуется как можно более гибкий загрузчик.
Далее инициируется запуск ядра, опознающего устройства и выполняющего инициализацию каждого из них. По завершении процесса загрузки ядра, последнее переключает контроль управления пользовательскому процессу inint8, который выполняет проверку дисков на то, могут ли они использоваться. Далее init8 инициирует запуск пользовательского процесса отладки ресурсов, в рамках которого монтируются системы файлов, а также выполняется настройка адаптеров сети для сетевой работы. Кроме того на данном этапе производится щапуск процессов, которые, как правило, выполняются в рамках FreeBSD в процессе ее загрузки.