<<< Headline | Index | http | bash | basics | x11 | net | vpn | humor | sles | cXX | php | db | perl | soft | unsorted | hw | ppp | tips | linux | fbsd | mail
[Timeline] [View Photos] [rtfm] [Search] [Index by Title] [Index by Date]
basics => fbsd-boot: == post:basics/posts/fbsd-boot

FreeBSD boot

   При включении машины выполняется проверка оборудования и установка конфигураций, заданных в BIOS и CMOS. Процедура проверки оборудования запускает тест памяти, а также поиск устройств IDE или SCSI. После этого на экран выводится таблица с данными о найденных устройствах и настройках. Затем BIOS читает главную загрузочную запись (Master Boot Record) (MBR) ведущего устройства первого контроллера в поисках информации о первом загрузочном блоке. Задача MBR и первых двух загрузочных блоков - запустить заг-рузчик, который конфигурирует ядро. Каждый из последующих загрузочных блоков несколько сложнее, чем предыдущий. Размер двух первых из них ограничен 512 байтами (т.е. размером MBR и загрузочного сектора слайса). Ниже мы рассмотрим назначение всех блоков.

Загрузочный блок 0 (bootO). Этот первичный блок находится в MBR и содержит список доступных слайсов, из числа которых с помощью функциональных клавиш можно выбрать нужный для загрузки.
F1   FreeBSD
F2   Linux
F3  ??
Default:   F1
Нажатие соответствующей функциональной клавиши позволяет выбрать нужный слайс. Если подождать несколько секунд, то система выберет слайс, установленный по умолчанию.
Загрузочный блок 1 (boot1). Он содержит несложную программу, которая запускается из загрузочного сектора слайса (slice), выбранного в bootO. Программа использует сокращенную версию утилиты disklabel, разбивающую слайс на разделы (о чем подробно рассказано в главе 19) для нахождения и запуска загрузчика boot2. Заметьте, что boot l не имеет пользовательского интерфейса.
Загрузочный блок 2 (boot1). Наконец, система достигает загрузочного блока, которому отведено достаточно места, чтобы он мог содержать код основного загрузчика, который умеет читать файлы из загружаемой файловой системы. В ранних версиях FreeBSD этот блок выдавал запрос, позволяющий указать, откуда загружать ядро (кроме установки по умолчанию). Теперь он автоматически запускает программу, называемую загрузчиком (loader), которая поддерживает пользовательский интерфейс и имеет другие возможности.
Загрузчик (loader). Эта программа находится в каталоге /boot. Она читает конфигурационные файлы /boot/defaults/loader.conf и /boot/loader.conf, а затем загружает ядро и указанные в них модули. Файл /boot/loader.conf содержит установки, отменяющие /boot/defaults/loader.conf, и работает подобно файлу /etc/rc.conf.
Загрузчик ожидает нажатия клавиши в течение 10 секунд. Если его не последует, он загружает ядро в состоянии, заданном по умолчанию. Если нажать Enter, программа предложит интерфейс командной строки, с помощью которого можно полностью управлять процедурой загрузки ядра.

Пусть, например, требуется загрузить определенный модуль ядра (скажем, /modules/portal.ko) на этапе загрузки, до того как система загрузится целиком. Кроме того, необходимо просмотреть все модули, находящиеся в памяти на текущий момент. Все это можно выполнить посредством приглашения ok, как показано ниже:
ok load portal. ko
/modules/portal.ko   text=0xld18   data=0xlf4+0x4
syms=[0x4+0x8d0+0x4+0x6bf]
ok Ismod
0x100000: kernel (elf kernel, Ox355be4)
Ox455be4: /boot/kernel.conf (userconfig script,       Ox4c)
0x456000: portal.ko (elf module, ОхЗеЬО)
На этом фаза процесса загрузки, связанная с загрузочными блоками, завершается. На финальной стадии управление берет система FreeBSD: ядро загружается в память, проверяет все доступные устройства, выполняет сценарии конфигурирования ресурсов (resource configuration), создающие необходимую рабочую среду, и запускает различные системные службы.
Ядро (kernel). Когда загрузчик закончит свою работу и передаст управление следующей стадии, ядро начинает проверять все найденные устройства и выводить результаты на экран. Именно на этой стадии на экран выводится основная масса сообщений. Все сообщения заносятся в файлы dmesg, прочесть которые позволяет команда dmesg.

init После того как ядро полностью загружено в память, управление передается процессу init, и начинается заключительная стадия процедуры загрузки. Об этом говорит сообщение Automatic reboot in progress (Происходит автоматическая перезагрузка). При этом init запускает Resource Configuration script - сценарий конфигурирования ресурсов (/etc/rc). Этот сценарий в первую очередь проверяет целостность всех файловых систем, указанных в файле /etc/fstab
   Процесс init обращается к каталогу / usr/local/etc/rc.d после того, как запускает все сценарии /etc/rc.*. Все выполняемые файлы из этого каталога, имеющие расширение .sh, запускаются в алфавитном порядке.

basics/posts/fbsd-boot -- Last updated 2010-04-27 Tuesday 12:00:45 Edit

© copyright 2010
Design by: lev