Начальная загрузка программы boot является машинно-зависимой операцией. На большинстве машин эта операция поддерживается базовой системой ввода/вывода (Basic Input/ Output System - BIOS). BIOS является резидентным в энергонезависимой памяти и вызывается автоматически при запуске процессора. Ожидается, что средства, предоставляемые BIOS, должны поддерживать начальную загрузку автономных программ.
Большинство систем BIOS при перезагрузке выполняет также диагностические операции, чтобы убедиться, что аппаратное обеспечение функционирует правильно.
Программа boot
BIOS не понимает формат файловой системы FreeBSD. Вместо этого процедура начальной загрузки считывает из зарезервированной области загрузочного диска программу. Эта программа сразу же выполняет в FreeBSD программу boot. Последняя является автономной программой общего назначения, которую система может использовать для начальной загрузки и исполнения других автономных программ. Автономной (standalone) является такая программа, boot которая может работать без помощи ядра FreeBSD.
Автономные программы обычно компонуются с автономной библиотекой ввода/вывода, библиотекой, поддерживающей FreeBSD-подобный интерфейс ввода/вывода для различных аппаратных устройств. Автономная библиотека ввода/вывода предоставляет эти возможности через набор автономных драйверов устройств и библиотечных процедур, поддерживающих чтение файлов из файловых систем FreeBSD, которые находятся на устройствах. Программа boot хранится в месте, доступном BIOS, которое представляет собой несколько первых секторов системного диска.
После начальной загрузки и запуска программы boot она должна загрузить файл, содержащий исполняемый образ загружаемой программы, а затем должна запустить загруженную программу. Чтобы загрузить соответствующий файл, boot должна знать имя пути загружаемого файла и аппаратное устройство, на котором файл находится. Программа boot обычно имеет устройство и имя программы по умолчанию, из которых она пытается загрузиться. Часто это значение по умолчанию хранится в загрузочных секторах загрузочного диска вместе с программой boot. BIOS сообщает сведения о начальной загрузке программе boot, инициализируя стек времени выполнения, а затем помещая параметры в стек тем же самым способом, как ядро FreeBSD передает аргументы программам. В качестве альтернативы пользователь может набрать устройство и имя программы для использования.
Программа boot всегда загружает программы по хорошо известным адресам памяти. Поскольку boot первоначально загружается в память по тем же самым хорошо известным адресам, она должна скопировать свой образ по другому адресу памяти, чтобы избежать перезаписывания себя образом загружаемой программы. Это перемещение предполагает, что программа boot должна создаваться с начальным адресом, установленным на адрес памяти, в которую она будет скопирована, в противном случае ссылки на структуры данных в программе boot после ее копирования будут получать доступ к неверным адресам памяти (помните, что boot работает с отключенной трансляцией виртуальных адресов).
- 09/01/2010 10:36 - Инициализация модулей устройств. Подсистема mbuf.
- 08/01/2010 22:03 - Инициализация потоков и процессов ядра
- 08/01/2010 21:52 - Базовые службы и память ядра
- 08/01/2010 21:42 - Инициализация модуля ядра
- 08/01/2010 21:32 - Инициализация ядра