@ Карта сайта News Автора!

Bog BOS: Загрузка Linux

Последние изменения:
2017.05.19: sysadmin: Файловая система zfs под Linux для архива

Последнее изменение файла: 2015.03.19
Скопировано с www.bog.pp.ru: 2017.08.20

Bog BOS: Загрузка Linux

В статье описывается процесс загрузки Linux (x86, GRUB, SysV init): последовательность выполнения, настройка загрузчиков и /etc/inittab.

Последовательность загрузки (x86)

  1. инициализация контроллера RAM
  2. декомпрессия BIOS из флеш в RAM
  3. защита от записи захваченного куска и передача туда управления
  4. обход периферии и установка дополнительных модулей BIOS в ROM (VGA, SCSI)
  5. POST и инициализация поддерживаемых BIOS устройств
  6. проверка устройств, указанных как пригодных для загрузки, на наличие "магического" слова (про загрузку с CD-ROM см. описание спецификации El Torito)
  7. загрузка загрузочного сектора (< 512 байт) в память и передача ему управления; если загрузка с жёсткого диска, то загрузочный сектор лежит в MBR (первом секторе, Master Boot Record) главного (master) жёсткого диска на первой шине ATA
  8. первоначальный загрузчик находит и загружает программу загрузки 2 этапа (stage 2) и передаёт ей управление (GRUB, LILO, SYSLINUX); используется BIOS API; обычное место загрузчика 2 этапа - /boot/
  9. загрузчик 2 этапа выбирает, находит и загружает ядро и RAM диск (initrd) в память; GRUB читает конфигурацию из /boot/grub/grub.conf; конфигурация для LILO хранится в MBR; GRUB и LILO позволяют вывести список возможных загружаемых систем на экран и выбрать нужную с помощью клавиатуры; GRUB позволяет изменить параметры загрузки (корневая файловая система, ядро, RAM диск, параметры ядра) с помощью текстового редактора; используется BIOS API; RAM диск содержит образ файловой системы с модулями (драйверами) устройств, необходимыми для монтирования корневой файловой системы; в случае со встроенным Linux RAM диск содержит всю систему
  10. ядро повторно обходит и инициализирует периферийные устройства, для которых есть встроенные драйвера
  11. ядро монтирует RAM диск (предварительно разжав) и загружает с него необходимые модули, инициализирует соответствующие устройства
  12. если необходимо, то ядро инициализирует LVM и программный RAID
  13. ядро размонтирует RAM диск и освобождает занимаемую им память
  14. ядро монтирует корневую файловую систему в режиме "только чтение"; в процессе дальнейшей работы ядро загружает дополнительные модули с корневой файловой системы
  15. запускается процесс /sbin/init (далее описывается загрузка в стиле System V)
  16. init разбирает конфигурационный файл /etc/inittab для определения дальнейших действий; если при загрузке указан уровень s (или S), то inittab не читается, а система переходит в однопользовательский режим (shell на /dev/console с правами root); строка с действием initdefault определяет "уровень выполнения" (run level) по умолчанию, т.е. режим работы системы (однопользовательская, многопользовательская, с доступом в сеть, с графическим окружением и т.д.); строка с действием sysinit (/etc/rc.d/rc.sysinit) определяет скрипт инициализации;
  17. init выполняет скрипт /etc/rc.d/rc.sysinit (проверка и монтирование остальных файловых систем, swap и т.д.)
  18. в "нормальном" /etc/inittab при переходе на любой уровень запускается скрипт /etc/rc.d/rc с указанием уровня в качестве параметра; данный скрипт запускает скрипты /etc/rcуровень.d/K* (в алфавитном порядке) с параметром stop и скрипты /etc/rcуровень.d/S* с параметром start; в конце запускается /etc/rc.d/rc.local; по традиции скрипты являются символьными ссылками на скрипты в директории /etc/init.d/; вместо /etc/init.d/ может использоваться /etc/rc.d/init.d/; вместо /etc/rcуровень.d/ может использоваться /etc/rc.d/rcуровень.d; реальность несколько сложнее

Загрузчики

В различных дистрибутивах и различных ситуациях могут использоваться следующие загрузчики:

LILO и GRUB работают через BIOS, а большинство BIOS позволяют доступ только к первым двум IDE-дискам (считая ATAPI CD-ROM) в пределах первых 1023 цилиндров. Так что каталог (или раздел) /boot, в котором хранятся как файлы самого загрузчика, так и загружаемые файлы (ядро, initrd) должен удовлетворять данным ограничениям.

Уровни выполнения и /etc/inittab

Формат файла /etc/inittab (комментарии начинаются с символа '#'):

идентификатор:перечень-уровней-выполнения:действие:процесс

где

При запуске процесса устанавливаются переменные окружения: PATH, INIT_VERSION, RUNLEVEL, PREVLEVEL, CONSOLE.

Уровни выполнения для Red Hat Linux:

Переход на другой уровень можно сделать с помощью программы telinit или прямо через /dev/initctl. telinit с указанием уровня q (Q) заставляет init перечитать /etc/inittab. Использование SIGPWR и /etc/powerstatus признано устаревшим.

Загрузчик может передать процессу init параметры

Ссылки

@ Карта сайта News Автора!

Bog BOS: Загрузка Linux

Последние изменения:
2017.05.19: sysadmin: Файловая система zfs под Linux для архива

TopList
Сайт https://toprated.hosting/ - это место, где можно выбрать лучший хостинг в рейтинге.
Copyright © 1996-2017 Sergey E. Bogomolov; www.bog.pp.ru (КГБ знает все, даже то что у Вас на диске ;)