Ядро Линукс
Загрузчик (Bootloader) - это программа, которая находит на диске операционную систему и запускает её ядро.
Последовательность запуска:
1. Нажатие кнопки питания.
В работу вступает процессор, и первым делом он ищет программу начальной инициализации в постоянной памяти.
2. BIOS/UEFI.
- Код BIOS (или его современный аналог UEFI) хранится в энергонезависимой памяти ROM (read-only memory, постоянное запоминающее устройство) на материнской плате.
- Процессор начинает выполнение именно с этого кода: адрес начала программы BIOS «зашит» в фиксированный адрес в памяти (`0xFFFFFFF0` или последние 16 байт) устройства ROM.
- BIOS выполняет POST (Power-On Self Test): проверяет и инициализирует оборудование — память, видеокарту, контроллеры, накопители.
3. Поиск загрузочного сектора.
- После инициализации устройств BIOS обращается к диску и ищет заголовок Master Boot Record (MBR) который находится в самом первом секторе диска и имеет раздел 512 байт или раздел EFI System Partition (ESP) — в зависимости от режима.
- MBR содержит первый этап загрузчика (первые 446 байт из 512) и таблицу разделов. Этого кода очень мало, поэтому он обычно только загружает второй этап загрузчика, который уже находится в другом месте на диске. Так работает, например, GRUB.
- ESP — это полноценный файловый раздел, в котором хранится исполняемый файл загрузчика с расширением `.efi`
4. Загрузчик (Bootloader).
- Получив управление, загрузчик выполняет сканирование файловой системы, чтобы найти исполняемый файл ядра ОС.
- После нахождения ядра он загружает его в память. Попутно загружает вспомогательные файлы (например, "initramfs") и передает ядру управление, а также необходимые параметры.
5. Ядро операционной системы.
- Ядро инициализирует драйверы, подсистемы и запускает системные процессы (первым, как правило, ”init” или “systemd”).
- После этого управление полностью переходит к операционной системе.
1 минута
13 июня