С чего начать Первые шаги трек · 15 ступеней
Linux Labs

Загрузка системы и GRUB

4 мин Ubuntu 24.04

Как загружается Linux: прошивка, загрузчик GRUB, ядро, цели systemd и аварийный режим.

Шпаргалка

7 команд Версия для печати
  • sudo update-grub после правки /etc/default/grub
  • sudo grub-install /dev/sda переустановить загрузчик
  • systemctl get-default текущая цель по умолчанию
  • sudo systemctl set-default multi-user.target сервер без GUI
  • systemctl isolate rescue.target аварийный режим
  • systemd-analyze blame тайминги загрузки
  • journalctl -b -1 журнал прошлой загрузки

Обзор

Упрощённая цепочка загрузки:

BIOS/UEFI → GRUB (загрузчик) → ядро + initramfs → systemd (PID 1) → цель (target)

systemd доводит систему до цели (multi-user.target для сервера). Понимание этапов помогает чинить «не загружается».

Рецепты

2

GRUB

Конфиг — /etc/default/grub (не редактируй сгенерированный grub.cfg напрямую):

bash
sudo nano /etc/default/grub       # GRUB_TIMEOUT, GRUB_CMDLINE_LINUX, GRUB_DEFAULT
sudo update-grub                  # пересобрать grub.cfg после правок (= grub-mkconfig)
sudo grub-install /dev/sda        # переустановить загрузчик (после замены диска, BIOS)

Частые параметры ядра в GRUB_CMDLINE_LINUX: quiet splash (тихо), убрать их — видеть загрузку; nomodeset (проблемы видео); systemd.unit=rescue.target; fsck.mode=force (проверить ФС). В меню GRUB клавиша e — отредактировать строку ядра разово (например, добавить single или init=/bin/bash).

Цели и тайминги

bash
systemctl get-default                       # текущая цель по умолчанию
sudo systemctl set-default multi-user.target  # сервер без GUI
systemctl isolate rescue.target             # однопользовательский (минимум служб)
systemctl isolate emergency.target          # ещё раньше (почти ничего не поднято)
systemd-analyze                             # сколько занял boot (firmware/loader/kernel/userspace)
systemd-analyze blame                       # что тормозит загрузку (по юнитам)
systemd-analyze critical-chain              # критическая цепочка зависимостей
systemd-analyze plot > boot.svg             # диаграмма загрузки
Цель Что
multi-user.target сервер без графики (норма)
graphical.target + GUI
rescue.target single-user, корень смонтирован, минимум служб
emergency.target только корень (ro), почти ничего

Подробно о целях, rescue и emergency — boot-targets; разбор времени загрузки — systemd-analyze.

Неполадки

5

Система не загружается до конца

  1. В GRUB выбери предыдущее ядро (Advanced) — грузится → проблема в новом ядре.
  2. recovery mode → root shell, чини (fstab, права, конфиги).
  3. После входа — journalctl -b -1 (журнал прошлой неудачной загрузки).

Завис на загрузке из-за fstab

Ошибка в /etc/fstab роняет в emergency. Загрузись в recovery, mount -o remount,rw /, исправь fstab, проверь mount -a (см. mount).

Долгая загрузка

systemd-analyze blame + critical-chain — какие юниты тормозят (часто зависший сетевой/монтирование с таймаутом, NetworkManager-wait-online).

Забыл root-пароль

GRUB → e → добавить init=/bin/bash к строке ядра → загрузиться → mount -o remount,rw / → passwd → exec /sbin/init или ребут.

initramfs prompt после обновления ядра

Не найден корень/модуль. ls, найди раздел, exit для продолжения; затем sudo update-initramfs -u из рабочей системы.

Опасно

2

grub-install не на тот диск

sudo grub-install /dev/sdX пишет загрузчик в MBR/EFI-раздел указанного диска. На машине с несколькими дисками (или при путанице /dev/sda ↔ /dev/sdb после перезагрузки) легко записать загрузчик не туда — на BIOS/MBR-дисках это может затереть первые секторы диска с чужими данными (dual-boot, RAID-метаданные). Проверяй lsblk/fdisk -l перед запуском, а не полагайся на память.

Правка grub.cfg вместо /etc/default/grub

/boot/grub/grub.cfg — сгенерированный файл: следующий update-grub (в том числе автоматический, после обновления ядра) перезапишет твои ручные правки без предупреждения. Меняй /etc/default/grub и файлы в /etc/grub.d/, затем update-grub. Синтаксическая ошибка, случайно попавшая в grub.cfg напрямую, может не дать системе загрузиться до следующей пересборки.

Термины

1
initramfs
Временная корневая файловая система в памяти, которую загрузчик даёт ядру вместе с ним: её программы находят и монтируют настоящий корень и передают работу systemd. Ещё встречается в: Модули ядра, Программный RAID mdadm, systemd-analyze: что тормозит загрузку и что не так в юните

См. также

  • systemd — Init-система и менеджер служб (PID 1): юниты, цели, зависимости, журналы.
  • kernel-modules — Загрузка модулей ядра, просмотр сообщений ядра, параметры.
  • mount — Подключение файловых систем, постоянное монтирование через /etc/fstab, UUID.
Загрузка…