🐧

Последовательность загрузки Linux

От нажатия кнопки питания до рабочего стола — полный путь загрузки Linux

Общая схема

⚡ BIOS / UEFI
↓
🥾 GRUB / Bootloader
↓
⚙️ Ядро (vmlinuz)
↓
🔧 initramfs / initrd
↓
🚀 systemd / init
↓
🖥️ Рабочий стол / TTY
1

BIOS / UEFI (POST)

При включении компьютера BIOS (Legacy) или UEFI (современный) выполняет POST (Power-On Self-Test) — проверку оборудования: процессор, RAM, диски, USB.

# Что происходит на этом этапе:
POST → Проверка CPU, RAM, GPU
→ Поиск загрузочного устройства (HDD/SSD/NVMe)
→ Запуск загрузчика (GRUB)

BIOS — старый стандарт (Legacy). UEFI — современный (поддерживает GPT, Secure Boot, быструю загрузку).

2

GRUB (Загрузчик)

GRUB (GRand Unified Bootloader) — загрузчик, который выбирает ядро и передаёт ему управление. Показывает меню выбора ОС.

# Конфигурация GRUB:
/etc/default/grub — настройки меню
/boot/grub/grub.cfg — файл конфигурации
/boot/grub/grub.cfg — НЕ редактировать вручную!

# Обновление GRUB после изменений:
$ sudo update-grub

timeout=5 — время выбора ОС (сек)

default=0 — номер ОС по умолчанию

quiet splash — скрыть логи загрузки

single — загрузка в режим восстановления

3

Загрузка ядра (vmlinuz)

GRUB загружает ядро Linux (vmlinuz) в оперативную память и передаёт ему управление. Ядро инициализирует оборудование и файловые системы.

# Ядро находится в:
/boot/vmlinuz-$(uname -r)

# Посмотреть версию ядра:
$ uname -r
# Пример вывода:
6.1.0-kali9-amd64

Ядро монтирует корневую файловую систему (root fs) и запускает первый процесс — /sbin/init (PID 1).

4

initramfs / initrd

initramfs — временная файловая система в RAM. Содержит драйверы для доступа к диску (LVM, RAID, шифрование). Без неё ядро может не найти корневой раздел.

# Файл initramfs:
/boot/initrd.img-$(uname -r)

# Посмотреть содержимое:
$ lsinitramfs /boot/initrd.img-$(uname -r)

# Пересобрать initramfs (после обновления ядра):
$ sudo update-initramfs -u

Цель: поднять root fs до реальной загрузки

Содержит: драйверы, udev, скрипты

5

init / systemd (PID 1)

Первый процесс в пользовательском пространстве — PID 1. В современных дистрибутивах это systemd, который запускает все сервисы параллельно.

# Проверить, какой init используется:
$ ps -p 1 -o comm=
systemd

# Посмотреть время загрузки:
$ systemd-analyze

# Посмотреть, что загрузилось долго:
$ systemd-analyze blame

systemd — параллельный запуск сервисов

SysV init — последовательный (устарел)

6

Логин / getty

systemd запускает getty (или gdm/lightdm/sddm) — приглашение для входа. После ввода логина и пароля запускается shell или GUI.

# Сервисы логина:
getty — текстовый терминал (TTY)
gdm3 — GNOME Display Manager
lightdm — XFCE/LXDE
sddm — KDE Plasma

# Проверить статус:
$ systemctl status gdm3

Ключевые файлы

/etc/default/grub

Настройки меню GRUB

/boot/vmlinuz-*

Загружаемое ядро Linux

/boot/initrd.img-*

Временная файловая система (initramfs)

/etc/fstab

Таблица монтирования файловых систем

/etc/systemd/system/

Пользовательские сервисы systemd

/var/log/boot.log

Логи процесса загрузки

Полезные команды

# Версия ядра
$ uname -a

# Время загрузки
$ systemd-analyze

# Детали времени загрузки
$ systemd-analyze blame | head -10

# Критические цепочки
$ systemd-analyze critical-chain

# Логи загрузки (journal)
$ journalctl -b

# Логи предыдущей загрузки
$ journalctl -b -1

# Монтированные файловые системы
$ mount | grep "^/"

# Проверка fstab
$ cat /etc/fstab

# Переключение в режим восстановления
$ sudo systemctl isolate rescue.target

Кибербезопасность загрузки

Физический доступ

Если злоумышленник имеет физический доступ, он может:

  • Загрузиться с USB и получить root
  • Сбросить пароль через single-user mode
  • Извлечь данные с диска

Защита

Меры защиты загрузки:

  • Secure Boot — проверка подписи ядра
  • LUKS — шифрование диска
  • BIOS password — пароль на вход в BIOS
  • GRUB password — защита меню GRUB
# Установить пароль GRUB:
$ sudo grub-mkpasswd-pbkdf2
# Вставьте в /etc/grub.d/40_custom:
set superusers="admin"
password_pbkdf2 admin grub.pbkdf2.sha512.10000...

# Обновить GRUB:
$ sudo update-grub