Расскажи, как происходит процесс загрузки ОС linux с момента нажатия кнопки питания.devops-23

1. Аппаратная инициализация

Power-On Self-Test - выполняется BIOS/UEFI:

  1. Проверка основных компонентов (CPU, RAM, видеокарта)
  2. Инициализация оборудования
  3. Поиск загрузочных устройств согласно порядку в настройках
# Посмотреть порядок загрузки в UEFI (пример)
efibootmgr -v

2. Загрузчик

Этап 1: MBR/GPT

  • MBR (для Legacy BIOS): первые 512 байт диска
  • GPT (для UEFI): более современный стандарт

Этап 2: GRUB2

  1. Загрузка core.img
  2. Чтение конфигурации (/boot/grub/grub.cfg)
  3. Отображение меню загрузки
# Просмотр конфигурации GRUB
cat /boot/grub/grub.cfg

3. Загрузка ядра Linux

  1. Загрузчик передаёт управление ядру
  2. Ядро распаковывается (vmlinuz-версия)
  3. Инициализируются:
    • Драйверы устройств
    • Подсистема памяти
    • Процессы планирования
# Просмотр параметров загрузки ядра
cat /proc/cmdline

4. Initramfs

Временная корневая ФС в памяти:

  1. Содержит базовые драйверы
  2. Позволяет монтировать реальный root
  3. Особенно важно для:
    • RAID/LVM
    • Зашифрованных разделов
    • NFS root
# Просмотр содержимого initramfs
lsinitramfs /boot/initrd.img-$(uname -r) | less

5. Запуск init/systemd

Раньше :

/etc/inittab -> /etc/rc.d/rc.sysinit -> /etc/rc.d/rc?.d/

Сейчас :

  1. systemd (PID 1) запускает default.target
  2. Параллельный запуск сервисов
  3. Обработка зависимостей
# Просмотр времени загрузки сервисов
systemd-analyze blame

6. Монтирование файловых систем

  1. Корневая ФС (/)
  2. /proc, /sys, /dev (виртуальные ФС)
  3. Остальные разделы (/home, /var и т.д.) согласно /etc/fstab
# Просмотр смонтированных ФС
mount | column -t

7. Запуск сервисов и демонов

  1. Сетевые сервисы
  2. Демоны авторизации
  3. Сервисы мониторинга
  4. Пользовательские сервисы
# Список юнитов systemd
systemctl list-unit-files --type=service

8. Запуск графической оболочки

  1. Display Manager (GDM, LightDM)
  2. X11/Wayland сервер
  3. Оконный менеджер/DE

Резюмируем

Ключевые этапы загрузки Linux:

  1. Аппаратная инициализация (POST, BIOS/UEFI)
  2. Загрузчик (GRUB2) - выбирает ядро и параметры
  3. Ядро Linux - инициализирует железо и подсистемы
  4. Initramfs - временная ФС для загрузки основного root
  5. Systemd - PID 1, запускает все сервисы
  6. Файловые системы - монтируются согласно fstab
  7. Сервисы - запускаются параллельно с учётом зависимостей

Диагностика проблем:

  • journalctl -b - логи текущей загрузки
  • dmesg - сообщения ядра
  • systemd-analyze critical-chain - критические точки загрузки