linux-labs

Вики / Загрузка

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

Концепция Ubuntu 24.04 ЗагрузкаsystemdТраблшутинг

Этапы загрузки, GRUB, цели systemd, аварийный режим восстановления.

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

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

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

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

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).

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), почти ничего

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

  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 /passwdexec /sbin/init или ребут.

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

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

sudo update-grub                  # после правки /etc/default/grub
sudo grub-install /dev/sda        # переустановить загрузчик
systemctl get-default ; sudo systemctl set-default multi-user.target
systemctl isolate rescue.target   # аварийный режим
systemd-analyze blame             # тайминги загрузки
journalctl -b -1                  # журнал прошлой загрузки

См. также