← Back to notes

Загрузка
Linux


Загрузка Linux

Последовательность от включения питания до пользовательского окружения. См. bootup(7).


1. POST и firmware (BIOS/UEFI)

После включения firmware (BIOS на legacy-системах, UEFI на современных) выполняет:

  • POST (Power-On Self Test) — проверка RAM, CPU, контроллеров;
  • инициализацию устройств;
  • выбор загрузочного носителя.

UEFI читает EFI-переменные и запускает EFI-приложение из EFI System Partition (ESP, обычно /boot/efi).


2. Bootloader

Варианты: GRUB 2, systemd-boot, rEFInd, U-Boot (embedded).

Действия:

  • загружает образ ядра vmlinuz (bzImage на x86);
  • загружает initramfs (initrd);
  • передаёт ядру параметры командной строки (kernel cmdline).

На UEFI-системах bootloader живёт в ESP. На legacy-BIOS — в MBR/GPT первой стадии и /boot.


3. Инициализация ядра

Ядро:

  1. Декомпрессирует себя, инициализирует архитектурно-зависимые подсистемы (memory, IRQ, scheduler).
  2. Распаковывает initramfs (cpio-архив) в rootfs — ramfs или tmpfs, в зависимости от конфигурации ядра.
  3. Загружает модули, необходимые для доступа к настоящему корневому ФС (драйверы блочных устройств, dm-crypt, LVM, RAID).
  4. Запускает /init из initramfs как ранний userspace, если он есть.
  5. initramfs монтирует настоящий корень и обычно делает switch_root/run_init, после чего выполняет /sbin/init на финальной ФС.

4. PID 1: init

/sbin/init — символическая ссылка на init-систему:

  • systemd — стандарт в большинстве дистрибутивов;
  • альтернативы: SysVinit, OpenRC, runit, s6, dinit.

systemd читает unit-файлы и активирует default.target (обычно multi-user.target или graphical.target).

См. systemd.boot(7), bootup(7).


5. User space

  • запуск getty на ttys или display manager (gdm, sddm, lightdm) для GUI;
  • PAM-аутентификация;
  • запуск shell или сессии рабочего стола.

6. Схема

firmware (BIOS/UEFI) -> bootloader -> kernel + initramfs -> /init -> switch_root -> /sbin/init -> targets -> user space

Ссылки

Загрузка Linux | Aleksandr Suprun