Администрирование Linux-серверов

Linux-сервер не загружается: GRUB, initramfs, emergency mode и kernel panic

Как определить этап сбоя загрузки Linux, сохранить диагностические данные и выбрать обратимое действие для GRUB, initramfs, emergency mode или kernel panic.

13 минут
абстрактная иллюстрация восстановления загрузки Linux-сервера
Начинайте не с команды, а с фиксации ошибки, определения схемы загрузки и проверки доступного способа отката.
Если Linux-сервер не запускается, сначала зафиксируйте полный текст на консоли, определите этап загрузки и убедитесь, что после перезагрузки сохранится доступ к локальной, удалённой out-of-band-консоли или консоли гипервизора. grub rescue>, оболочка initramfs, Emergency mode и Kernel panic относятся к разным контекстам и требуют разных действий. Универсальной команды восстановления нет: до подтверждения причины не меняйте разметку, RAID, LVM, файловую систему, загрузчик или пакеты ядра.

Не перезагружайте удалённый сервер без консоли

До очередной перезагрузки подтвердите доступ к контроллеру управления сервером BMC и его внеполосной консоли, функции подключения виртуального носителя (virtual media), консоли гипервизора либо к серверу на месте. Такая консоль работает независимо от загрузки основной ОС. SSH обычно становится доступен только после запуска ОС, сети и соответствующей службы; при остановке в GRUB, initramfs или до запуска сети он не поможет. Настройка SSH рассматривается отдельно в статье «OpenSSH Server в Linux: установка, запуск и диагностика sshd».

Сначала определите этап и фактическую схему загрузки

Типичная, но не обязательная, цепочка загрузки: firmware BIOS или UEFI → загрузчик → ядро Linux и initramfs → раннее пользовательское пространство → основная система с systemd. GRUB — распространённый загрузчик, но не обязательный для всех Linux-конфигураций: встречаются systemd-boot, загрузка через firmware и специализированные схемы.

Как соотнести экран с контекстом сбоя

Что видно на консолиВероятный этапЧто это означаетПервый безопасный шаг
grub rescue> или сообщения GRUB о неизвестной файловой системеЗагрузчикGRUB не нашёл свои модули, конфигурацию или доступный загрузочный разделЗафиксировать сообщения, определить BIOS/UEFI и не выполнять запись на диск без проверки схемы установки
(initramfs) либо аварийная оболочка до монтирования /Раннее пользовательское пространствоНе подготовлен или не смонтирован постоянный корневой том; реализацию оболочки нужно определить по сообщениямПрочитать сообщения о корневом устройстве, UUID, драйверах, LVM/RAID и параметре root=
You are in emergency mode или предложение войти под rootsystemd либо ранняя среда с systemdСистема достигла аварийного режима, часто из-за неудачного монтирования или зависимости загрузкиПрочитать указанный журнал и сопоставить ошибку с фактическим /etc/fstab и устройствами
Kernel panic - not syncing и стек вызововЯдроЯдро аварийно остановилось; это класс ошибок, а не диагнозСнять полный текст panic, версию ядра и попробовать ранее установленное ядро только через меню загрузки

Одного слова на экране недостаточно

Оболочку ранней загрузки могут предоставлять initramfs-tools, dracut, systemd или иной компонент. Поэтому надпись emergency не всегда означает, что основная ОС уже полностью передала управление systemd, а приглашение оболочки не позволяет по внешнему виду надёжно назвать реализацию initramfs. Ориентируйтесь на полный вывод, имена запущенных компонентов и конфигурацию конкретного дистрибутива Linux.

Что сохранить до перезагрузки и изменений

  • Фото или текстовый захват всего экрана, начиная с первой ошибки, а не только последней строки.
  • Время сбоя, действия непосредственно перед ним: обновление ядра, изменение /etc/fstab, перенос дисков, изменение параметров firmware, аварийное выключение.
  • Режим загрузки BIOS или UEFI, модель виртуальной машины или сервера, способ подключения системного диска и наличие аппаратного RAID, программного RAID или LVM.
  • Название выбранной записи загрузчика, версию ядра на экране и параметры командной строки ядра, если они видны.
  • Сведения о последней успешной загрузке: версия ядра, работоспособная запись меню, доступный снимок или резервная копия и способ возврата к ней.
  • Сообщения о UUID, именах устройств, томах, ошибках ввода-вывода, RAID, LVM и файловой системе.

Когда нужно остановиться

Не продолжайте самостоятельное восстановление при ошибках ввода-вывода, отсутствующих или изменившихся дисках, деградации RAID, недоступном LVM, неизвестной разметке, сообщениях о повреждении файловой системы либо если команда предлагает форматирование, создание нового массива, переинициализацию метаданных или массовое удаление пакетов. Сохраните вывод и переходите к профильным процедурам диагностики RAID, LVM, накопителей и файловых систем. Попытка «починить» initramfs форматированием раздела или произвольной проверкой файловой системы может усугубить потерю данных.

Ветка GRUB rescue: что проверить и как выбрать восстановление

grub rescue> обычно означает, что GRUB не смог найти нужные модули, свой каталог или конфигурацию, либо не может прочитать загрузочный раздел. Это не доказывает повреждение всей ОС. Причина и способ восстановления зависят как минимум от BIOS или UEFI, разметки, места установки GRUB, используемого загрузчика и выпуска дистрибутива.

Диагностика при приглашении grub rescue

Цель — подтвердить схему загрузки и не записывать изменения до понимания, где находится загрузчик.

  1. 1
    Зафиксируйте точное сообщение
    Сохраните строки до приглашения grub rescue>, включая unknown filesystem, file not found, no such partition и имя устройства. Они указывают, что именно не удалось найти или прочитать.
  2. 2
    Установите режим BIOS или UEFI
    Проверьте настройку виртуальной машины либо firmware сервера и сопоставьте её с исходной схемой установки. В UEFI нужна EFI System Partition (ESP) с файлами загрузчика; в BIOS загрузочные компоненты размещаются иначе. Нельзя применять команды установки GRUB для BIOS к UEFI-системе как универсальный рецепт.
  3. 3
    Загрузите документированную rescue/live-среду того же семейства
    При необходимости используйте установочный или rescue-носитель, соответствующий архитектуре и, по возможности, тому же выпуску ОС. До chroot подтвердите, какие разделы являются корнем, /boot и ESP, и что они принадлежат именно целевой системе.
  4. 4
    Выберите действие по подтверждённой причине
    Если повреждена конфигурация — сгенерируйте её штатной утилитой целевого дистрибутива. Если отсутствуют файлы загрузчика — следуйте документу дистрибутива именно для BIOS или UEFI. Если носитель не читается или схема томов не подтверждена, остановитесь без переустановки загрузчика.

Вендорские меню firmware, пункты boot manager, названия записей GRUB, кнопки remote console и статусы контроллера отличаются по модели, поколению и версии firmware или утилиты. Для изменения порядка загрузки и работы с носителями сверяйтесь с официальным руководством производителя сервера или гипервизора; не переносите путь меню из другого поколения оборудования.

Примеры штатных утилит, привязанные к выпуску ОС

Команды выполняют только после монтирования подтверждённой установленной системы в rescue-среде и входа в её окружение, если это требуется документацией.

Система и релизШтатное действиеОграничение
Ubuntu Server 22.04 LTSupdate-grub генерирует конфигурацию GRUB; grub-install применяется по инструкции Ubuntu с учётом BIOS или UEFIДля UEFI необходимо корректно смонтировать ESP; параметры и целевой путь нельзя угадывать
Debian 12update-grub обновляет конфигурацию GRUB; восстановление через grub-install зависит от режима загрузкиПеред установкой подтвердите корневой раздел, отдельный /boot и ESP, если она используется
Red Hat Enterprise Linux 9grub2-mkconfig -o /boot/grub2/grub.cfg создаёт конфигурацию GRUB по документации RHELВ UEFI RHEL документирует восстановление EFI-пакетов и ESP отдельно; не подменяйте его универсальным grub2-install

Генерация конфигурации не исправляет любую проблему

Команда генерации конфигурации не восстановит недоступный диск, ошибочный UUID, отсутствующий ESP-раздел или повреждённые данные. Переустановка загрузчика без подтверждения целевого диска и режима BIOS/UEFI может сделать неработоспособной другую установленную ОС.

Initramfs и emergency mode: где искать причину

Попадание в оболочку initramfs или emergency mode не означает автоматически, что ОС «сломана». Частые причины: недоступен корневой том, не совпадает UUID в параметре root= или /etc/fstab, отсутствует устройство из обязательной точки монтирования, не загрузился нужный драйвер, либо последствия незавершённого обновления. Конкретную причину устанавливают по сообщениям загрузки, журналу, доступному в этой среде, и реальной конфигурации дисков и монтирования.

systemd target emergency.target запускает минимальную аварийную среду и консоль администратора. rescue.target предоставляет более полную однопользовательскую среду и обычно подтягивает базовые системные компоненты. Точный набор смонтированных файловых систем, доступных команд и журналов зависит от версии systemd, initramfs и конфигурации системы.

Проблема

Система остановилась в initramfs или emergency mode

Возможные причины

  • Неверный UUID или путь к устройству в конфигурации монтирования
  • Недоступный накопитель, RAID или LVM
  • Отсутствующий драйвер либо некорректный initramfs
  • Прерванное обновление ядра, initramfs или конфигурации

Решение

Сначала сопоставьте текст ошибки с конкретным устройством и записью конфигурации. Если устройство видно и причина — подтверждённая ошибочная запись монтирования, исправьте только эту запись с сохранением исходной копии. Если проблема связана с RAID, LVM, вводом-выводом или целостностью файловой системы, не переходите к ремонту в этой статье: остановитесь и используйте профильную процедуру.

Как избежать

После изменения конфигурации монтирования проверяйте её в контролируемом окне, а после обновления ядра сохраняйте доступ к предыдущей записи загрузки.

Минимальные обратимые действия в initramfs и emergency mode

  1. 1
    Прочитайте первичную ошибку
    Ищите имя устройства, UUID, точку монтирования, параметр root= и сообщения о драйвере. Не начинайте с fsck, пересборки initramfs или редактирования /etc/fstab, пока не установлена связь ошибки с конкретным объектом.
  2. 2
    Проверьте, доступна ли конфигурация установленной системы
    Если корневая файловая система доступна в режиме только для чтения, сравните затронутую запись с фактическими идентификаторами устройств, не меняя остальные строки. В emergency mode systemd обычно выводит, какой unit или mount не запустился.
  3. 3
    Проверьте подтверждённый параметр на одну загрузку
    Если доказано, что причина заключается в конкретном параметре командной строки ядра, например ошибочном root=, зафиксируйте исходную строку и временно отредактируйте только этот параметр в меню фактически установленного загрузчика. Такое изменение не записывайте в постоянную конфигурацию: интерфейс редактирования и однократность применения зависят от загрузчика и его настроек.
  4. 4
    Исправьте только подтверждённую настройку
    Допустимо временно убрать ошибочную необязательную точку монтирования из загрузки или вернуть сохранённое корректное значение UUID, если причина доказана. Сохраните копию изменяемого файла и предусмотрите откат до перезагрузки.
  5. 5
    Восстановите initramfs только для подтверждённой проблемы
    Если журналы и история изменений указывают на отсутствующие или некорректные файлы initramfs после обновления, используйте штатную утилиту именно вашего выпуска ОС. Не применяйте команды APT к RPM-системам или команды dracut к системе, где используется другой механизм, без документации.
commands-after-boot-or-in-systemd-emergency.txt
# Текущая загрузка: доступно, если systemd и journalctl уже работают
journalctl -b

# Ошибки текущей загрузки: при наличии соответствующих записей
journalctl -b -p err..alert

# Предыдущая загрузка: работает только если записи сохранены
journalctl -b -1

# Версия запущенного ядра
uname -r

journalctl с -b отбирает записи текущей загрузки, а -b -1 — предыдущей. Предыдущая загрузка доступна не на каждом сервере: journal может храниться только в памяти, а ранний сбой мог произойти до записи нужных сообщений. Подробный разбор настройки журналов — в статье «Журналы Linux: journalctl, rsyslog и logrotate».

Пересборка initramfs после подтверждённого сбоя обновления

Следующие команды — не первичная диагностика и не средство ремонта хранилища. Они уместны только после загрузки в документированную rescue-среду или ранее работавшее ядро, когда подтверждено, что проблема относится к initramfs, а тома и конфигурация системы доступны.

Система и релизШтатная утилитаПример ограниченного действия
Ubuntu Server 22.04 LTSinitramfs-toolsupdate-initramfs -u -k all обновляет существующие образы initramfs
Debian 12initramfs-toolsupdate-initramfs -u -k all обновляет существующие образы initramfs
Red Hat Enterprise Linux 9dracutdracut --force --regenerate-all пересоздаёт initramfs для установленных ядер

Ошибка пакетной транзакции требует отдельной диагностики

Если обновление было прервано и пакетный менеджер сообщает о незавершённой пакетной транзакции, не подменяйте разбор пересборкой initramfs. Сначала установите состояние пакетов и транзакции по правилам своей экосистемы: APT в Ubuntu и Debian, DNF и YUM в RHEL-подобных Linux, а при ошибках — диагностика установки пакетов.

Kernel panic: собрать данные и безопасно выбрать предыдущее ядро

Kernel panic — аварийная остановка ядра, когда оно не может безопасно продолжать работу. Причина не обязательно в самом ядре: panic может быть связан с параметрами загрузки, недоступным корневым устройством, драйвером, внешним модулем, аппаратной ошибкой или изменением окружения. Для эскалации нужны полный текст panic и стек вызовов, версия загружаемого ядра, параметры командной строки, время сбоя, последние изменения и результат попытки загрузить другое установленное ядро.

Как проверить предыдущее установленное ядро без отката всей системы

  1. 1
    Зафиксируйте panic
    Снимите экран целиком: первые строки panic часто важнее последнего фрагмента стека. Запишите версию ядра, если она выведена, и выбранную запись меню.
  2. 2
    Откройте меню загрузчика
    При следующей попытке загрузки используйте меню реально установленного загрузчика. В GRUB прежнее ядро часто находится в разделе с дополнительными вариантами, но название и наличие раздела зависят от конфигурации.
  3. 3
    Выберите ранее установленное ядро для проверки
    Обычный интерактивный выбор другой записи в меню действует на текущую попытку загрузки, но конфигурация с savedefault или аналогичным механизмом может сохранить выбранный вариант. Такой выбор не откатывает пакеты, конфигурацию, данные приложений или всю транзакцию обновления. До следующей перезагрузки проверьте, какое ядро выбрано по умолчанию.
  4. 4
    После успешного старта зафиксируйте результат
    Запишите uname -r, проверьте ошибки текущей загрузки и только затем решайте, требуется ли восстановление пакета ядра, initramfs или конфигурации. Не удаляйте неудачное ядро до подтверждения причины и наличия рабочего варианта.

В Ubuntu Server 22.04 LTS, Debian 12 и RHEL 9 выбор ранее установленного ядра обычно выполняют через меню загрузчика; конкретный интерфейс зависит от GRUB, firmware и локальной конфигурации. Механизмы сохранённой записи GRUB, включая grub-set-default, применимы только если конфигурация поддерживает сохранённый выбор. Не изменяйте значение по умолчанию, пока не проверены доступные записи и не понятен способ вернуть прежнее значение.

Проверки после успешной загрузки

  1. Зафиксируйте версию фактически запущенного ядра: uname -r. Не путайте её с версией установленного пакета или выпуском ОС.
  2. Проверьте идентификацию ОС в /etc/os-release, если нужно сопоставить дальнейшие инструкции с конкретным выпуском.
  3. Просмотрите ошибки текущей загрузки через journalctl -b -p err..alert; отсутствие записей не является абсолютным доказательством отсутствия проблемы.
  4. Если журнал хранит предыдущие загрузки, сопоставьте текущий запуск с journalctl -b -1 и сохранённым текстом исходной ошибки.
  5. Проверьте состояние только необходимых служб через systemctl и прикладные критерии работоспособности. Диагностика службы, которая не запускается уже после успешной загрузки ОС, описана в статье «Служба systemd не запускается: диагностика ошибок и восстановление».
  6. Устраните первопричину: неверную запись монтирования, сбойный пакет, несовместимый модуль, ошибочный параметр загрузки или проблему хранилища. Появление приглашения оболочки само по себе не подтверждает восстановление сервера.
Показывает версию запущенного ядра после успешной загрузки. Это базовая точка для сопоставления с записью GRUB и журналом.
uname -r
Показывает записи текущей загрузки с уровнями error, critical и alert. Доступность и полнота вывода зависят от systemd и конфигурации journald.
journalctl -b -p err..alert

Сбой после обновления ядра

Выбор предыдущего ядра — диагностический и временный способ вернуть загрузку, а не откат всего обновления. Планирование обновления, проверка транзакции и плановый откат рассматриваются в статье «Обновление Linux-сервера: пакеты, ядро, перезагрузка и откат».

Термины в статье

Реализация RAID, в которой специализированный контроллер формирует логические диски и выполняет операции массива. Наличие и защита кэша зависят от модели.
Изолированная вычислительная среда с виртуальными процессорами, памятью, дисками и сетевыми адаптерами, в которой под управлением гипервизора работает гостевая ОС.
Программный слой, который абстрагирует ресурсы физического хоста, выполняет виртуальные машины и управляет ими.
Состояние отказоустойчивого RAID-массива, потерявшего часть избыточности, но сохраняющего доступ, пока сочетание отказов допустимо для его уровня и раскладки.
Дистрибутив Linux — готовая операционная система на базе ядра Linux, включающая набор программ, репозитории, пакетный менеджер и правила обновления и сопровождения.
Менеджер пакетов — средство установки, обновления, удаления и учёта программных пакетов; высокоуровневые менеджеры также работают с репозиториями и разрешают зависимости.
Пакетная транзакция — согласованный набор действий по установке, обновлению, удалению и настройке пакетов, формируемый менеджером пакетов в рамках одной команды или задания.
RAID, реализованный ОС или другим программным стеком хоста без отдельного аппаратного RAID-контроллера. Использует вычислительные ресурсы сервера.
Системная служба — программный компонент, которым ОС управляет как логической единицей для фонового выполнения задач или предоставления функций программам и пользователям.
Зафиксированное гипервизором состояние поддерживаемых виртуальных дисков и конфигурации ВМ на определённый момент, иногда также памяти, к которому можно выполнить откат.
Ядро Linux — центральный компонент ОС, управляющий аппаратными ресурсами и предоставляющий системные интерфейсы; оно не включает пользовательские утилиты и менеджер пакетов.
APT — система управления пакетами в Debian-подобных Linux, которая получает пакеты из репозиториев, разрешает зависимости и передаёт установку низкоуровневому менеджеру dpkg.
Debian — универсальный дистрибутив Linux с пакетами DEB и системой APT, известный консервативной веткой Stable и разделением репозиториев по веткам разработки.
Emergency mode — аварийный режим systemd с минимальным окружением и консолью администратора, без обычных служб и автоматического монтирования остальных локальных файловых систем.
GRUB — загрузчик операционных систем, который после BIOS или UEFI выбирает пункт своего меню, передаёт ядру Linux параметры и обычно загружает initramfs.
initramfs — временная корневая файловая система в памяти, разворачиваемая ядром Linux для загрузки модулей и подготовки хранилища перед монтированием постоянной корневой файловой системы.
journalctl — консольная утилита чтения и фильтрации журнала systemd, выводящая сообщения по времени, юниту, загрузке системы, приоритету и другим полям.
Kernel panic — неустранимая ошибка ядра операционной системы, при которой оно прекращает штатное выполнение, поскольку не может безопасно продолжать работу.
Linux-сервер — серверная система под управлением Linux, предоставляющая сетевые, вычислительные или инфраструктурные сервисы и администрируемая средствами ОС.
LTS — модель выпуска ПО с продлённым периодом сопровождения, в котором исправления безопасности и критических ошибок поставляются дольше обычного релиза.
Технология объединения нескольких накопителей в логические блочные устройства для повышения производительности и/или отказоустойчивости в зависимости от RAID-уровня.
RHEL — корпоративный дистрибутив Linux от Red Hat с фиксированными основными версиями, сертификационной экосистемой и моделью сопровождения, зависящей от подписки.
SSH — криптографический сетевой протокол для удалённого доступа и передачи данных, аутентифицирующий стороны и защищающий сеанс от перехвата.
systemctl — командная утилита управления systemd, которая запускает и останавливает юниты, показывает их состояние и настраивает автоматическую активацию.
systemd — система инициализации и менеджер служб Linux, управляющий службами и другими ресурсами как объектами unit, обычно описанными unit-файлами.
systemd target — unit типа target, группирующий другие units и служащий точкой синхронизации при загрузке или изменении состояния системы.
Ubuntu Server — серверный вариант дистрибутива Ubuntu на базе Debian с APT и типовыми средствами автоматизации, доступный в виде установочных и готовых образов.

Вопросы по теме

Все вопросы и ответы

Что означает приглашение grub rescue>?

Сначала зафиксируйте полный текст до строки grub rescue>, особенно сообщения unknown filesystem, file not found, no such partition и имя устройства. Затем сопоставьте текущий режим запуска сервера или виртуальной машины с исходной установкой: для UEFI требуется EFI System Partition с файлами загрузчика, а для BIOS компоненты размещаются иначе.

Если требуется восстановление, загружайтесь в документированную rescue- или live-среду того же семейства и архитектуры ОС. До работы в chroot подтвердите, какие разделы принадлежат целевой системе: корневой, отдельный /boot и ESP при UEFI. Генерация конфигурации штатной утилитой подходит при подтверждённой проблеме конфигурации, но не исправит недоступный диск, неверный UUID, отсутствующий ESP или повреждённые данные.

Можно ли загрузиться с предыдущего ядра после kernel panic?

При Kernel panic сначала снимите экран целиком: первые строки panic, стек вызовов, версию ядра, параметры командной строки и выбранную запись меню. Причина может находиться не в самом ядре: panic возможен из-за недоступного корневого устройства, драйвера, внешнего модуля, параметров загрузки или аппаратной ошибки.

На следующей попытке откройте меню фактически установленного загрузчика. В GRUB прежнее ядро часто находится среди дополнительных вариантов, но его название и наличие зависят от локальной конфигурации. Интерактивный выбор другой записи обычно действует только на текущую загрузку, однако при настройках вроде savedefault выбранный вариант может сохраниться. До следующей перезагрузки проверьте, какое ядро стало вариантом по умолчанию. Не удаляйте проблемное ядро, пока не подтверждена причина и не имеется рабочий вариант.

Почему Linux попадает в emergency mode?

Обычно это означает, что systemd или ранняя среда не смогли выполнить обязательное монтирование либо зависимость загрузки. Причиной могут быть неверный UUID или путь в /etc/fstab, недоступный накопитель, RAID или LVM, отсутствующий драйвер, некорректный initramfs либо прерванное обновление. Сначала сопоставьте текст ошибки с конкретным устройством и записью конфигурации.

Можно ли сразу переустановить GRUB при grub rescue>?

Восстановление GRUB выбирают только после подтверждения причины. Если проблема ограничена конфигурацией, используйте штатную утилиту целевого дистрибутива для её генерации. Например, Ubuntu Server 22.04 LTS и Debian 12 используют update-grub, а RHEL 9 — grub2-mkconfig -o /boot/grub2/grub.cfg. Эти действия не устранят недоступность диска, ошибочный UUID, отсутствие ESP или повреждение данных.

Если отсутствуют файлы загрузчика, следуйте инструкции именно для установленного дистрибутива и режима BIOS либо UEFI. В UEFI корректное монтирование ESP обязательно, а в RHEL восстановление EFI-пакетов и ESP документируется отдельно. Не используйте универсальную команду установки загрузчика без проверки схемы томов. При сообщениях о сбоях ввода-вывода, неизвестной разметке или недоступных томах не переустанавливайте GRUB: сначала требуется профильная диагностика накопителей, RAID, LVM или файловой системы.

Нужно ли запускать fsck при ошибке initramfs?

Нет, не запускайте fsck до подтверждения, что проблема связана именно с файловой системой. Ошибка initramfs может быть вызвана неверным root=, UUID, недоступным RAID или LVM, отсутствующим драйвером либо некорректным образом initramfs. При ошибках ввода-вывода, изменившихся дисках и признаках повреждения остановитесь и применяйте профильную процедуру диагностики.

Можно ли перезагружать удалённый сервер, если доступен только SSH?

Нет, не перезагружайте сервер, если после сбоя доступен только SSH. При остановке в GRUB, initramfs, emergency mode или до запуска сети SSH не поможет. До перезагрузки подтвердите доступ к BMC и внеполосной консоли, virtual media, консоли гипервизора либо к сотруднику на площадке. Эти средства работают независимо от загрузки основной ОС.