- BIOS POST (Power-On Self-Test):
- Первоначально запускается BIOS (или UEFI - Unified Extensible Firmware Interface), который представляет собой программное обеспечение, встроенное в материнскую плату. BIOS/UEFI выполняет POST, проводя тестирование аппаратных компонентов, таких как процессор, память, видеокарта и другие, а также определяет, с какого устройства следует загружаться (например, жесткого диска, USB-накопителя или сетевого интерфейса).
- Boot Loader 1 (MBR - Master Boot Record):
- BIOS ищет загрузочное устройство, определенное в настройках BIOS/UEFI (например, жесткий диск). Загрузочный сектор MBR содержит небольшой код, который выполняется и инициирует процесс загрузки. MBR также содержит информацию о разделах диска и указатель на загрузочный заголовок.
- Boot Loader 2 (GRUB2 - Grand Unified Bootloader):
- Если используется GRUB, он становится активным после загрузки MBR. GRUB – это загрузчик, предоставляющий пользователю выбор операционной системы и ядра Linux для загрузки. GRUB загружает выбранное ядро Linux и файл системы initrd (initial RAM disk), который содержит временную файловую систему и дополнительные драйверы, необходимые для загрузки основной системы.
- GRUB2 — это расширенный загрузчик, который может загружать различные ядра и операционные системы.
- Kernel Initialization:
- Выбранное ядро Linux загружается в оперативную память. Однако до полного старта операционной системы оно должно быть распаковано, так как ядро обычно находится в сжатом виде для экономии места.
- Процесс распаковки ядра включает в себя следующие шаги:
- Распаковка ядра: Ядро, хранящееся в компактном сжатом формате (часто в формате gzip или xz), распаковывается в оперативную память.
- Инициализация и загрузка ядра: Распакованное ядро инициализирует аппаратные устройства, настраивает драйверы и выполняет другие необходимые задачи для подготовки системы к работе.
- Монтирование корневой файловой системы: В этом этапе ядро монтирует корневую файловую систему, которая содержит основные компоненты операционной системы.
- Передача управления init: После завершения инициализации, ядро передает управление процессу init или другой init-системе (например, systemd), который продолжает процесс загрузки, инициируя запуск служб и процессов пользователя.
- Init Process (systemd):
- Первым процессом, который запускается в пользовательском пространстве, является init. Init-процесс отвечает за инициализацию системы и запуск основных служб. Он загружает различные системные службы и процессы, включая службы для сети, файловых систем, аутентификации и другие.
- В современных дистрибутивах Linux часто используется systemd в качестве init-системы. systemd позволяет одновременно запускать независимые сервисы и процессы, что ускоряет загрузку системы. Это достигается за счет параллельного выполнения задач и их зависимостей.
Команда ls -l /sbin/init
- выводит информацию о используемой системе инициализации.