Гид по технологиям

Восстановление загрузки Linux при ошибке GRUB

7 min read Linux Обновлено 27 Dec 2025
Восстановление загрузки Linux через GRUB
Восстановление загрузки Linux через GRUB

Быстрое руководство по содержанию

  • Когда загрузчик не загружается
  • Работа в оболочке GRUB (grub>) — пошагово
  • Работа в режиме GRUB Rescue (grub rescue>) — пошагово
  • Альтернативные подходы и восстановление через Live USB
  • Частые причины и когда эти методы не сработают
  • Методология диагностики и чек-листы для ролей
  • Сводка и критерии приёмки

Когда загрузчик не загружается

Отказ загрузки — одна из наиболее неприятных проблем: компьютер включается, но ОС не стартует. На Linux основной загрузчик — GRUB (чаще GRUB 2). GRUB читает конфигурацию и загружает ядро и начальный ramfs. Если конфигурация повреждена или файлы утеряны, вы можете оказаться в минималистичной командной оболочке GRUB.

Символы, которые вы можете увидеть:

grub>

или

grub rescue>

Первая оболочка (grub>) предоставляет больше команд; вторая (grub rescue>) — сильно урезанная. Оба варианта позволяют загрузиться вручную и затем восстановить постоянную конфигурацию.

Экран загрузки Ubuntu Linux на ноутбуке

ALT: Экран начальной загрузки Ubuntu Linux на ноутбуке с логотипом и строкой загрузчика

Важно: под «GRUB» обычно понимают GRUB 2 — современный загрузчик с 2012 года, унаследовавший ряд изменений в форматах конфигурации и поддержке загрузки с внешних носителей.

Работа в оболочке GRUB (grub>) — пошагово

Это пошаговая инструкция, когда вы попали в grub>.

  1. Просмотрите доступные устройства и разделы
ls

Вы увидите список вроде (hd0), (hd0,gpt1), (hd0,gpt2) и т. п. Обозначения:

  • (hd0) — первый жесткий диск
  • (hd0,1) или (hd0,gpt1) — первый раздел на первом диске
  1. Просмотрите содержимое конкретного раздела
ls (hd0,2)/

Ищите папки /boot и /etc — это укажет на ваш Linux-раздел.

  1. Проверка текстовых файлов (опционально)
cat (hd0,2)/etc/issue
cat (hd0,2)/etc/fstab
  1. Просмотр файлов в /boot
ls -lh (hd0,2)/boot

Вы должны увидеть файлы vmlinuz-<версия> и initrd.img-<версия> или аналогичные.

  1. Указываем GRUB корневой раздел
set root=(hd0,2)
  1. Загружаем ядро и указываем корневой раздел Linux (в примере — /dev/sda2)
linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2 ro quiet

Примечание: используйте правильный путь к образу ядра и устройство root для вашей системы. На современных системах вместо /dev/sda2 могут использоваться UUID или метки LVM/RAID.

  1. Загружаем initramfs
initrd /boot/initrd.img-6.2.0-20-generic
  1. Запускаем загрузку
boot

Если система загрузилась — выполните в ОС:

sudo update-grub
sudo grub-install /dev/sda

grub-install указывайте на диск (например /dev/sda), а не на раздел (не /dev/sda1).

Примеры и пояснения

  • Если в ls вы видите (hd2,1), это третий диск (sdc) раздел 1 — т.е. /dev/sdc1.
  • Опция ro quiet в linux помогает указать режим монтирования и уменьшить вывод во время загрузки; при отладке можно убрать quiet.
  • Если у вас UEFI, ядро и initramfs всё равно в /boot, но GRUB может находиться в ESP-разделе (обычно vfat, EFI), и для установки GRUB нужно учитывать режим (UEFI vs BIOS).

Подсказка GRUB shell

ALT: Приглашение командной строки оболочки GRUB с подсказкой доступных команд

Работа в режиме GRUB Rescue (grub rescue>) — пошагово

Если вы находитесь в grub rescue>, набор команд ограничен. Тем не менее, можно загрузиться, выполнив дополнительные шаги:

  1. Найдите раздел с файлами GRUB и /boot
ls
ls (hd0,2)/
  1. Установите префикс (путь к файлам GRUB) и корень
set prefix=(hd0,2)/boot/grub
set root=(hd0,2)
  1. Подключите модуль normal (в grub> он обычно доступен)
insmod normal
insmod linux

Если команда insmod не находит модуль, проверьте правильность prefix и root — модуль должен находиться в prefix.

  1. Загрузите ядро и initrd, как в обычной оболочке
linux /boot/vmlinuz-6.2.0-20-generic root=/dev/sda2 ro
initrd /boot/initrd.img-6.2.0-20-generic
boot
  1. После успешной загрузки в ОС восстановите конфигурацию
sudo update-grub
sudo grub-install /dev/sda

Установка параметров загрузки в GRUB rescue

ALT: Ввод команд в среде GRUB rescue для указания префикса, root и загрузки ядра

Другие возможные способы восстановления

Если ручная загрузка не помогает или файлов нет, вот альтернативы:

  • Загрузка с Live USB (Live CD) и восстановление GRUB из chroot:
    1. Загрузитесь с Live USB вашей дистрибуции.
    2. Найдите разделы (lsblk, fdisk -l).
    3. Смонтируйте корневой раздел и, при наличии отдельного /boot и ESP, смонтируйте их тоже.
    4. Выполните chroot и обновите grub:
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot   # если есть отдельный /boot
sudo mount /dev/sdaX /mnt/boot/efi  # если UEFI ESP
for i in /dev /dev/pts /proc /sys /run; do sudo mount --bind $i /mnt$i; done
sudo chroot /mnt
update-grub
grub-install /dev/sda
exit
  • Использовать автоматические инструменты: Boot-Repair (GUI) может восстановить GRUB в большинстве случаев.
  • Переустановить ядро/пакеты initramfs: если отсутствуют initrd или vmlinuz, переустановите пакет ядра или выполните update-initramfs -u.
  • Для систем с LVM/RAID/шифрованием: смонтируйте и активируйте тома LVM, расшифруйте машины с LUKS перед chroot.

Когда эти методы не сработают — распространённые причины

  • Диск физически повреждён или таблица разделов повреждена.
  • GRUB-файлы отсутствуют и у вас нет резервных копий ядра или initrd.
  • Корневой раздел зашифрован и initramfs не настроен для расшифровки. Тогда простая загрузка ядра без расшифровки не даст результата.
  • Сложные конфигурации LVM/RAID: если не активировать тома в Live-режиме, файловая система останется недоступной.
  • Неправильный режим загрузки: попытка загрузиться в BIOS-режиме при установленном GRUB в UEFI-режиме или наоборот.

Важно: если диск использует аппаратный RAID или сложный контроллер, GRUB может не иметь доступа к разделам без специальных модулей.

Методология диагностики (минималистичный SOP)

  1. Зафиксируйте текущее сообщение об ошибке и снимок экрана.
  2. Определите, какой режим GRUB у вас (grub> или grub rescue>).
  3. Выполните ls в GRUB для обнаружения разделов.
  4. Убедитесь, что на разделе есть /boot и файлы ядра.
  5. Попробуйте ручную загрузку ядра и initrd.
  6. Если успешно — обновите grub.cfg и переустановите загрузчик.
  7. Если неуспешно — загрузитесь с Live USB и проделайте chroot-процедуру.
  8. Документируйте изменения и протестируйте несколько перезагрузок.

Чек-листы по ролям

Для пользователя (не админа):

  • Подготовьте Live USB с тем дистрибутивом, который вы используете.
  • Сфотографируйте экран с ошибкой (желательно полный вывод).
  • Наберите команды ls, cat в GRUB и сохраните вывод (скриншоты).
  • Звоните администратору или в поддержку с этой информацией.

Для администратора:

  • Проверить таблицу разделов и идентифицировать ESP/LVM/RAID.
  • Проверить наличие /boot и файлов vmlinuz/initrd.
  • Выполнить ручную загрузку из GRUB; если не удаётся — перейти к Live USB и chroot.
  • Обновить grub.cfg и выполнить grub-install в нужном режиме (UEFI/BIOS).
  • Протестировать перезагрузку и регрессионное тестирование обновлений ядра.

Ментальные модели и полезные эвристики

  • «ls → найти /boot → проверить версии → установить root → linux+initrd → boot» — последовательность действий. Это простой «путь к загрузке».
  • Всегда думайте о трёх уровнях: (1) конфигурация GRUB, (2) файлы в /boot, (3) доступ к разделам (LVM/RAID/шифрование).
  • При неопределённости используйте Live-режим — он позволяет работать с файлами без риска дозагрузки.

Совместимость и нюансы UEFI vs BIOS

  • BIOS (Legacy): GRUB обычно устанавливается в MBR диска /dev/sdX.
  • UEFI: GRUB (или shim) устанавливается в EFI System Partition (ESP), обычно монтируется в /boot/efi и отформатирована как FAT32.
  • При смене режима (UEFI→BIOS или наоборот) GRUB может не найти свои модули.
  • При восстановлении в UEFI-режиме используйте параметр --target=x86_64-efi и укажите --efi-directory=/boot/efi при grub-install, если требуется.

Примеры ошибок и контрпримеры

  • Контрпример 1: Если ls (hd0,2)/boot не показывает ядро и initrd — ручная загрузка невозможна; используйте Live USB и восстановление файлов.
  • Контрпример 2: Если корневой раздел зашифрован LUKS, попытка linux ... root=/dev/sda2 приведёт к аварии — нужно чтобы initrd содержал модуль расшифровки или выполнялась расшифровка до монтирования.

Диагностическое дерево (Mermaid)

flowchart TD
  A[Старт: Устройство не загружается] --> B{Появляется какой prompt?}
  B -->|grub>| C[Выполнить ls, найти /boot]
  B -->|grub rescue>| D[Установить prefix и root]
  C --> E{Найдено ядро и initrd?}
  D --> E
  E -->|Да| F[Задать linux, initrd, boot]
  E -->|Нет| G[Загрузиться с Live USB и восстановить файлы]
  F --> H{Загрузилось?}
  H -->|Да| I[Выполнить update-grub и grub-install]
  H -->|Нет| G
  G --> J[Проверить LVM/RAID/шифрование или аппаратные проблемы]
  J --> K[Восстановление или замена диска]

Критерии приёмки

  • Система загружается в графический/текстовый логин без ручного вмешательства в течение обычной последовательности загрузки.
  • sudo update-grub выполняется без ошибок и в /boot/grub/grub.cfg появляются актуальные записи.
  • grub-install прошёл успешно (если был выполнен), и при перезагрузке GRUB стартует корректно.

Примеры команд для Live USB и восстановления (с пояснениями)

  1. Найти диски и разделы:
sudo fdisk -l
sudo lsblk -f
  1. Смонтировать разделы и выполнить chroot:
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot   # при наличии отдельного /boot
sudo mount /dev/sdaX /mnt/boot/efi  # при UEFI
for i in /dev /dev/pts /proc /sys /run; do sudo mount --bind $i /mnt$i; done
sudo chroot /mnt
update-grub
grub-install /dev/sda
exit
for i in /run /sys /proc /dev/pts /dev; do sudo umount /mnt$i; done
sudo umount /mnt/boot/efi
sudo umount /mnt/boot
sudo umount /mnt
  1. Восстановление initramfs (в chroot):
update-initramfs -u -k all
  1. Переустановка ядра (по пакетному менеджеру, пример для Debian/Ubuntu):
sudo apt-get install --reinstall linux-image-$(uname -r)

Безопасность и предостережения

  • Не изменяйте таблицу разделов без создания резервной копии, если данные важны.
  • При работе с chroot убедитесь, что монтируете /dev, /proc, /sys и /run — иначе команды типа grub-install могут не сработать.
  • Если диск физически неисправен — сначала клонируйте важные разделы (ddrescue), а затем восстанавливайте загрузчик.

Краткая сводка

  1. В grub> используйте ls, set root=, linux, initrd, boot.
  2. В grub rescue> дополнительно используйте set prefix= и insmod normal.
  3. После загрузки выполните update-grub и grub-install.
  4. Если файлы отсутствуют или есть LVM/RAID/шифрование — используйте Live USB и chroot.

Резюме

В большинстве случаев ручная загрузка через GRUB позволяет временно вернуть систему в рабочее состояние. После этого нужно восстановить конфигурацию GRUB через update-grub и, при необходимости, grub-install. В сложных случаях (шифрование, LVM/RAID, физический сбой диска) потребуется работа из Live-режима и дополнительные шаги по монтированию, расшифровке и восстановлению файлов.

Дополнительные ресурсы: используйте официальные страницы вашего дистрибутива и документацию GRUB для нюансов установки в UEFI/BIOS режимах.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Как найти камеру в смарт‑телевизоре
Безопасность

Как найти камеру в смарт‑телевизоре

Как создать сайт: выбор платформы и запуск
Веб‑сайты

Как создать сайт: выбор платформы и запуск

Как отформатировать HDD или SSD в Windows
Windows

Как отформатировать HDD или SSD в Windows

Как открыть сайт, если он не загружается
Интернет

Как открыть сайт, если он не загружается

Изменение размера таблицы и столбцов в Excel
Excel

Изменение размера таблицы и столбцов в Excel

Как переназначить кнопки контроллера в Steam
Игры

Как переназначить кнопки контроллера в Steam