Старт операционной системы
Досистемная загрузка
Классическая схема:
- 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
- неунифицированность (для разных устройств)
- неунифицированность (для разных архитектур)
- небезопасность: что есть, то и грузим
- по типу 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 занимается стартом и остановом процессов, в редких случаях — перезапуском
- В современных системах появилось понятие «зависимость»
Недостатки:
Главный: изменение состояния системы — это не только пуск и останов
- Изменение аппаратной конфигурации
- ⇒ выполнение каких-то действий над аппаратурой
- ⇒ перезапуск по цепочке зависимостей
- Реакция на сеть
- Изменение по запросу администратора
- Изменение аппаратной конфигурации
- «Сделай сам» — востребованные свойства должны реализовывать сами сервисы или сценарии-обёртки
- сеть
- запуск нескольких экземпляров
- права, с которыми запускается сервис
- журналирование диагностики
- «демонизация»
- отслеживание статуса (жив ли процесс, как его остановить и т. п.)
- Скорость сценариев, особенно при частом автоматическом перезапуске
Отслеживание группы процессов
- …
Что нужно для обеспечения функционирования системы:
- фоновый запуск и останов сервисных демонов (при старте и останове системы)
- однократный запуск службы (по команде)
- приведение системы в готовность
- Запуск и останов по запросу
например, запуск по сетевой активности
- Запуск нескольких экземпляров (например, несколько сетевых подключений)
Разрешение зависимостей и построение дерева запуска (желательно с параллелизмом)
- Эшелонирование для упрощения зависимостей и введения контрольных точек
- Возможность отладки init-последовательности (дерева запуска)
- Инит-последовательность для каждого пользователя (запускается при старте первой интерактивной сессии, стопится при стопе последней)