НАЧАЛЬНАЯ ЗАГРУЗКА ОПЕРАЦИОННОЙ СИСТЕМЫ
НАЧАЛЬНАЯ ЗАГРУЗКА ОПЕРАЦИОННОЙ
СИСТЕМЫ
Начинается все с Boot-proma - небольшой
программы, которая хранится в
нестираемой памяти компьютера, и
начинает выполняться сразу после
включения.
Естественно, boot-prom умеет делать
многое - форматировать диски,
инсталлировать операционную
систему, запускать тесты hardware.
Однако главное его предназначение -
найти на диске и запустить на
выполнение файл /unix - ядро
операционной системы.
Специфика SunSPARC.
Boot-prom загружает "BOOT BLOKS" - 1-ю
ПРОГРАММУ НАЧАЛЬНОЙ ЗАГРУЗКИ.
"boot-bloks" расположены в 1-15
секторах раздела, содержащего
корневую файловую систему "/".
Обычно корневая файловая система
располагается на разделе номер 0.
"Boot-blocks" можно записать на
корневой раздел загрузочного диска
(обычно это внутренний диск со
SCSI-номером 3) командой installboot. Для
этого выполняется что-нибудь такое:
installboot /dev/rdsk/c0t3d0s0
Boot-blocks "умеет читать" формат
файловой системы unix - ufs . Он находит
на корневой файловой системе файл
"/ufsboot" - 2-Ю ПРОГРАММУ НАЧАЛЬНОЙ
ЗАГРУЗКИ, и загружает ее.
/ufsboot находит ядро /kernel/unix, и
загружает его.
Ядро Unixа загружается в
оперативную память, подгружая при
этом в процессе своей загрузки
дополнительные загружаемые модули
с драйверами устройств. Как только
ядро "набирает" достаточное
количество драйверов, чтобы
самостоятельно смонтировать
корневую файловую систему, оно тут
же это и делает, после чего начинает
действовать самостоятельно, не
используя кода начальных
загрузчиков.
Специфика станции Motorola 922.
Boot-prom загружает с диска ЗАГРУЗЧИК
- файл /stand/boot, Загрузчик загружает
ядро /stand/unix
Поскольку boot-prom не в состоянии
вместить кода для работы со
стандартной unix'овской файловой
системой, файлы unix и boot лежат в
отдельном разделе жесткого диска -
разделе /stand. На нем создана
"ОЧЕНЬ ПРОСТАЯ ФАЙЛОВАЯ
СИСТЕМА" bfs (Boot File System), чтобы
boot-prom'у было полегче найти и считать
с диска загрузочные файлы.
Специфика Linux.
BIOS загружает блок начальной
рагрузки активного раздела.
Он грузит загрузчик LILO (LInux LOader). Lilo
загружает файл /vmlinuz
Параметры начальной загрузки
записываются в файле /etc/lilo.conf После
любых изменений в этом файле,
необходимо выполнить команду # lilo
Процесс init.
Ядро инициализирует себя и после
этого запускает процесс init. А init -
все остальные процессы, программы,
которые необходимы для нормального
функционирования операционной
системы.
Все дальнейшие действия в системе
определяются этим процессом. Все,
что нужно делать init-у, определяет
специальная таблица.
Процесс init всегда находится на
каком-либо "УРОВНЕ ВЫПОЛНЕНИЯ"
Уровень выполнения определяет
состояние и поведение всей системы.
Уровень обозначается цифрой
0,1,2,3,4,5,6,s,S (или буквой)
0 |
- prom монитор - Полный
останов системы; |
1, s, S |
- single user mode.
Однопользовательский режим; |
2 |
-
многопользовательский режим
без NFS-сервера; |
3 |
-
многопользовательский режим с
NFS-сервером; |
6 |
- перезагрузка; |
Примерный фрагмент управляющей
таблицы /etc/inittab
bchk::sysinit:/etc/bcheckrc/dev/console 2>&1
brc::sysinit:/etc/brc > /dev/console 2>&1
is:3:initdefault:
rc:12345:wait:/etc/rc > /dev/console 2>&1
r0:0:wait:/etc/rc0 > /dev/console 2>&1
r2:23:wait:/etc/rc2 > /dev/console 2>&1
r3:3:wait:/etc/rc3 > /dev/console 2>&1
pf:12345:powerfail:/etc/powerfail > /dev/console 2>&1
co:12345:respawn:/etc/sysmonitor console console
t1:23:respawn:/etc/sysmonitor tty01 9600
t2:23:off:/etc/sysmonitor tty02 9600
Формат таблицы:
ИМЯ:Уровни_выполнения:вид_действия:запускаемая
команда
ИМЯ: - просто имя строчки - они все
должны быть разными вид_действия:
sysinit |
запустить один раз
после начальной загрузки; |
на
соответствующем уровне
выполнения: |
wait |
- запустить один раз и
дожидаться, пока не окончится; |
respawn |
- запустить
параллельно, а если окончится,
перезапускать снова; |
off |
- ничего не делать
(просто игнорировать эту
строку) |
Если посмотреть внимательно на
таблицу, то можно разобраться, что
же в действительности происходит
при загрузке, и откуда бе- рутся все
эти загадочные сообщения.
- Сперва init запускает процессы,
которые "sysinit"
- Отработав все строки
"sysinit" уровня, init идет все
дальше по /etc/inittab и
обнаруживает строку initdefault 3 -
она заставляет его
"перейти" на уровень 3.
- Перейдя на уровень выполнения 3
init и отрабатывает первую
встретившуюся строчку с
уровнем "3" - запускается
командный файл /etc/rc2 - загляните
в него. Там все просто: /etc/rc2
берет и выполняет командные
файлы /etc/rc2.d/S*, лежащие в
каталоге /etc/rc2.d. Каждый файл
выполняется с параметром
"start"
- Отработав /etc/rc2 init точно таким
же образом запускает файл /etc/rc3.
Вслед за этим он запускает
несколько процессов sysmonitor - по
одному на каждый имеющийся
терминал. Это те самые
процессы, которые говорят на
терминал: "Login: "
Пользователь, войдя на
терминал некоторое время
работает, но как только он
"уходит" из системы, на
указанном терминале ничего не
остается. init тут же выполняет
действие "respawn" -
перезапускает на терминал
sysmonitor - и опять жизнерадостное
"Login: " появляется на
терминале.
Специфика Slackware Linux
- По умолчанию init устанавливает
уровень выполнения 5 При
начальной загрузке
отрабатывается файл /etc/rc.d/rc.S
- Затем для перехода в
многопользовательский режим
/etc/rc.d/rc.
из которого запускаются файлы
/etc/rc.d/rc.inet1
устанавливающий сетевые
интерфейсы
/etc/rc.d/rc.inet2
запускающий сетевые
сервисы
/etc/rc.d/rc.local
запускающий несколько
полезных программ и
демонов - например
поддержка мыши, httpd,
русификация консоля, и т.п.
[Назад] [Содержание] [Вперед]
|