[UNИХ] Программное обеспечение GNU/Linux - 08 - Настройка системы и окружения (2017-11-22)

Опубликовано: 12 Март 2026
на канале: Pavel Lobanov
280
18

http://uneex.org
Старт операционной системы - http://uneex.org/LecturesCMC/LinuxSof...

Досистемная загрузка

Классическая схема:
Boot ROM (всё, что заранее записано в ПЗУ)
Boot Block (первичный загрузчик на устройстве, зависит от устройства)
Boot Prog (вторичный загрузчик на устройстве, зависит от ОС)
Kernel (старт ОС)

Действительность слегка сложнее
Reset vector
Firmware
Option ROM
Boot Block
в случае x86 очень маленький, 446b
Boot Prog
в случае боевой ОС не слишком успешно справляется с задачей «загрузить ядро, модули и настроить всё, как надо»
поэтому иногда называется «полуторным»

задача — только загрузить ядро (возможно, про выбору) и т. н. стартовый виртуадьный диск к нему
Kernel (старт ОС)

Стартовый виртуальный диск — образ ФС в памяти, содержащий Linux userspace, достаточный для того, чтобы найти и смонтировать корневую ФС и стартовать ОС
⇒ выполняет все остальные функции вторичного загрузчика средствами Linux

Недостатки legacy BIOS:
legacy
неунифицированность (для разных устройств)
неунифицированность (для разных архитектур)
небезопасность: что есть, то и грузим

OpenFirmware:
по типу SUN Sparc (Forth+стандарты)
x86 (OLPC), PowerPC, ARM
для x86 предназначено для замены BIOS с сохранением legacy

TPM для проверки подписи

EFI:
New legacy (GPT, UEFI лежит на диске, унификация графики, сети, программ под EFI — например, ядро)
ОС-независимые драйверы (аналог BIOS-DOS)
Платформо-независимые драйверы (почти никто не пользуется)
Цепочка подписей (в случае, когда оно используется)

Недостатки:
New legacy
(FAT32 уже)
Использование PE в качестве формата исполняемых файлов

Уязвимости реализации UEFI?
Централизованная подпись
Сложность

Старт системы

(поправка: rc-системы чаще как правило не проверяют предварительно цикл зависимостей)

rc-подобные системы загрузки

Унификация посредством обёртки в сценарий
.d-схема
init занимается стартом и остановом процессов, в редких случаях — перезапуском
В современных системах появилось понятие «зависимость»

Недостатки:
Главный: изменение состояния системы — это не только пуск и останов
Изменение аппаратной конфигурации
⇒ выполнение каких-то действий над аппаратурой
⇒ перезапуск по цепочке зависимостей
Реакция на сеть
Изменение по запросу администратора
«Сделай сам» — востребованные свойства должны реализовывать сами сервисы или сценарии-обёртки
сеть
запуск нескольких экземпляров
права, с которыми запускается сервис
журналирование диагностики
«демонизация»
отслеживание статуса (жив ли процесс, как его остановить и т. п.)
Скорость сценариев, особенно при частом автоматическом перезапуске

Отслеживание группы процессов

Что нужно для обеспечения функционирования системы:

фоновый запуск и останов сервисных демонов (при старте и останове системы)
однократный запуск службы (по команде)

журналирование
приведение системы в готовность

реакция на события об изменении состояния устройств — udev
монтирование файловых систем

терминал, логин
конфигурирование сетевых интерфейсов
...
Запуск и останов по запросу

например, запуск по сетевой активности
Запуск нескольких экземпляров (например, несколько сетевых подключений)

Разрешение зависимостей и построение дерева запуска (желательно с параллелизмом)
Эшелонирование для упрощения зависимостей и введения контрольных точек
Возможность отладки init-последовательности (дерева запуска)
Инит-последовательность для каждого пользователя (запускается при старте первой интерактивной сессии, стопится при стопе последней)