Старт операционной системы
Досистемная загрузка
Классическая схема:
- 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-последовательности (дерева запуска)
- Инит-последовательность для каждого пользователя (запускается при старте первой интерактивной сессии, стопится при стопе последней)
