← Назад к вопросам

Как загружается Linux?

1.0 Junior🔥 61 комментариев
#Linux и операционные системы

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI28 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Загрузка Linux (Linux Boot Process)

Загрузка Linux — это последовательность этапов, которые происходят с момента включения компьютера до момента, когда система готова к использованию. Понимание этого процесса критично для системных инженеров и разработчиков C/C++, работающих с операционными системами.

1. BIOS/UEFI (Power-On Self Test)

Первый этап загрузки:

  • Инициализация оборудования — проверка памяти, устройств
  • POST (Power-On Self Test) — самопроверка системы
  • Поиск загрузчика — BIOS ищет MBR (Master Boot Record) на первом диске
  • Передача управления — BIOS загружает bootloader в память и передает ему управление

2. GRUB/Bootloader

Бутлоадер (обычно GRUB2) выполняет следующие функции:

Этап 1: BIOS ищет код загрузчика (446 байт) в MBR
Этап 1.5: Загрузчик выполняет дополнительный код для поддержки файловых систем
Этап 2: GRUB загружается полностью, показывает меню выбора ОС

ГRUB загружает:

  • Kernel (ядро Linux)
  • Initrd/Initramfs (временная корневая файловая система)
  • Параметры загрузки ядра

3. Загрузка ядра (Kernel Loading)

После передачи управления ядру происходят следующие события:

// Типичные действия ядра при загрузке:
// 1. Инициализация памяти
// 2. Установка обработчиков прерываний (IRQ, exception handlers)
// 3. Инициализация встроенных устройств (UART, таймеры)
// 4. Монтирование initramfs
// 5. Загрузка драйверов (modules)

4. Init процесс (systemd или init)

Ядро запускает init процесс (PID = 1):

- systemd (современные системы)
- SysVinit (старые системы)
- OpenRC (альтернатива)

Init выполняет:

  • Монтирование файловых систем
  • Запуск сервисов и демонов
  • Установка уровня выполнения (runlevel)

5. Уровни выполнения (Runlevels/Targets)

В systemd это называется targets:

  • runlevel 0 — shutdown (halt)
  • runlevel 1 — single-user mode (восстановление)
  • runlevel 2-4 — multi-user mode
  • runlevel 5 — графический интерфейс (GUI)
  • runlevel 6 — перезагрузка

6. Запуск сервисов

Init читает конфигурационные файлы и запускает сервисы:

# systemd сервисы
/etc/systemd/system/
/usr/lib/systemd/system/

# Каждый сервис описывает:
# - что запустить
# - когда запустить
# - зависимости

Визуальное представление

BIOS/UEFI
    ↓
Bootloader (GRUB)
    ↓
Kernel initialization
    ↓
init (systemd/PID 1)
    ↓
mount filesystems
    ↓
start services
    ↓
Login prompt / Desktop

Параметры загрузки ядра

Ваджные параметры в GRUB:

linux /vmlinuz-5.10 root=/dev/sda1 ro quiet splash

root=/dev/sda1 — корневая файловая система
ro — mount read-only (проверка fsck)
quiet — минимум сообщений
splash — экран загрузки

Отладка процесса загрузки

Для диагностики можно использовать:

# Просмотр логов загрузки
dmesg | head -50
journalctl -b -0  # логи последней загрузки

# Отслеживание процессов
systemd-analyze
systemd-analyze blame  # какие сервисы дольше всего грузятся

Оптимизация загрузки

  • Отключить ненужные сервисы — systemctl disable service
  • Использовать SSD для быстрого доступа к диску
  • Параллельный запуск сервисов — systemd по умолчанию делает это
  • Уменьшить размер initramfs — включить только необходимые модули

Понимание процесса загрузки Linux необходимо для работы с embedded системами, оптимизации производительности и решения проблем при запуске приложений на сервере.