LinuxВысокая

Ошибка grub-rescue: причины и 4 способа восстановления загрузчика

Статья объясняет, что такое режим `grub-rescue`, почему система не загружается, и предоставляет 4 практических способа восстановления загрузчика GRUB, от простых команд в rescue-оболочке до полной переустановки с LiveCD.

Обновлено 16 февраля 2026 г.
15-30 мин
Средняя
FixPedia Team
Применимо к:Ubuntu 20.04+Debian 11+CentOS 8+Любой дистрибутив с GRUB2

Что означает ошибка grub-rescue

Ошибка grub-rescue> (режим аварийного восстановления) появляется, когда загрузчик GRUB не может найти свои модули, конфигурационный файл или необходимые файлы ядра. Это не код ошибки в привычном смысле, а специальная минималистичная оболочка, которая запускается при критических сбоях.

Симптомы:

  1. При включении компьютера вместо меню GRUB или загрузки системы выводится строка:
    grub-rescue>
    
  2. Команды ls, set работают, но большинство стандартных команд GRUB (например, menuentry) недоступны.
  3. Система не загружается дальше этого экрана.

Режим grub-rescue — это последняя линия обороны загрузчика. Он позволяет вручную указать расположение ядра и проинициализировать загрузку, но не решает проблему с конфигурацией GRUB.

Причины возникновения

Ошибка возникает из-за того, что GRUB не может прочитать свои файлы с диска. Основные причины:

  1. Повреждение или потеря файлов GRUB в разделе /boot (например, grub.cfg, модули в /boot/grub).
  2. Изменение порядка дисков в BIOS/UEFI или физическое подключение (например, переподключили SATA-кабель, и hd0 стал hd1).
  3. Неправильная установка GRUB (например, в раздел, а не в MBR/ESP, или на другой диск).
  4. Повреждение таблицы разделов или файловой системы /boot.
  5. Удаление или сжатие раз /boot без обновления GRUB.
  6. Сбой при обновлении ядра/GRUB (обновление прервалось, место на /boot закончилось).
  7. Ошибка в конфигурации GRUB (grub.cfg), из-за которой загрузчик не может найти ядро.

Способ 1: Временная загрузка системы через rescue shell

Этот способ не исправляет GRUB, но позволяет загрузиться в систему, чтобы восстановить загрузчик изнутри.

  1. В grub-rescue> определите список дисков и разделов:
    ls
    

    Вывод может быть: (hd0) (hd0,msdos1) (hd0,msdos2) (hd1) (hd1,msdos1)...
  2. Проверьте каждый раздел на наличие файлов ядра:
    ls (hd0,msdos1)/
    

    Ищите каталоги boot, grub, grub2 или файлы vmlinuz-*, initrd.img-*.
  3. Когда найдёте раздел с системой (например, (hd0,msdos1)), установите его как корневой:
    set root=(hd0,msdos1)
    
  4. Найдите точное имя файла ядра (версия может отличаться):
    ls /boot/vmlinuz-*
    

    Предположим, файл: /boot/vmlinuz-5.15.0-78-generic
  5. Загрузите ядро и initrd:
    linux /boot/vmlinuz-5.15.0-78-generic root=/dev/sda1 ro quiet
    initrd /boot/initrd.img-5.15.0-78-generic
    

    Параметр root= указывает на корневой раздел (обычно /dev/sda1 или /dev/nvme0n1p1). Уточните его в ls (hd0,msdos1)/etc/fstab или по размеру раздела.
  6. Загрузите систему:
    boot
    
  7. После успешной загрузки немедленно переустановите GRUB (см. Способ 2).

⚠️ Важно: Если grub-rescue> не видит команду ls или диски вообще отсутствуют, проблема может быть в драйвере диска (например, для RAID или NVMe). В этом случае нужен LiveCD.

Способ 2: Полная переустановка GRUB с Live-носителя

Рекомендуемый метод. Требует загрузочного USB-носителя с Linux (Ubuntu, Fedora, любой live-дистрибутив).

  1. Загрузитесь с Live-USB и откройте терминал.
  2. Определите, как ваш системный диск называется в Live-среде:
    sudo fdisk -l
    

    Найдите раздел с Linux (обычно /dev/sda1, /dev/nvme0n1p1 и т.д.). Если у вас UEFI, также найдите ESP-раздел (FAT32, ~100-500 МБ, тип EFI System).
  3. Смонтируйте корневой раздел:
    sudo mount /dev/sda1 /mnt
    

    Если у вас отдельный /boot, смонтируйте его в /mnt/boot:
    sudo mount /dev/sda2 /mnt/boot
    
  4. Для UEFI смонтируйте ESP-раздел:
    sudo mount /dev/sdaX /mnt/boot/efi  # X — номер ESP-раздела
    
  5. Смонтируйте системные виртуальные файловые системы:
    sudo mount --bind /dev /mnt/dev
    sudo mount --bind /proc /mnt/proc
    sudo mount --bind /sys /mnt/sys
    
  6. Перейдите в chroot-окружение:
    sudo chroot /mnt
    
  7. Переустановите GRUB:
    • Для BIOS/MBR (диск /dev/sda):
      grub-install /dev/sda
      
    • Для UEFI (ESP уже смонтирован в /boot/efi):
      grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
      
  8. Обновите конфигурацию:
    update-grub
    

    Должен обнаружить ядра и создать меню.
  9. Выйдите из chroot и перезагрузитесь:
    exit
    sudo reboot
    

    Уберите Live-USB при загрузке.

Способ 3: Восстановление конфигурации GRUB без LiveCD (если система загрузилась по Способу 1)

Если вам удалось временно загрузиться, восстановите конфигурацию GRUB изнутри системы.

  1. Проверьте, что файлы GRUB на месте:
    ls /boot/grub
    

    Должны быть файлы grub.cfg, i386-pc/ (для BIOS) или x86_64-efi/ (для UEFI).
  2. Пересоздайте конфигурационный файл:
    sudo update-grub
    

    Или, если update-grub недоступен:
    sudo grub-mkconfig -o /boot/grub/grub.cfg
    
  3. Если конфиг восстановился, но GRUB всё равно не загружается, переустановите его в раздел загрузки:
    # Для BIOS:
    sudo grub-install /dev/sda
    
    # Для UEFI (если ESP смонтирован в /boot/efi):
    sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi
    
  4. Перезагрузитесь:
    sudo reboot
    

Способ 4: Ручное восстановление файлов GRUB (экстренный вариант)

Если файлы GRUB были удалены или повреждены, но у вас есть резервная копия или они есть в другом месте.

  1. Из LiveCD (как в Способе 2) зайдите в chroot.
  2. Проверьте, есть ли пакет GRUB в системе:
    dpkg -l grub-pc  # Для Debian/Ubuntu
    rpm -qa | grep grub2  # Для RHEL/CentOS/Fedora
    
  3. Если пакет есть, переустановите его:
    # Debian/Ubuntu:
    sudo apt-get install --reinstall grub-pc grub-common
    
    # RHEL/CentOS (с EPEL):
    sudo dnf reinstall grub2
    
  4. Затем выполните grub-install и update-grub (шаги из Способов 2 и 3).
  5. Если пакета нет, установите его через менеджер пакетов из chroot.
  6. Если нет сети в Live-среде, скопируйте файлы GRUB с другого рабочего компьютера (совместимой архитектуры и версии) в /mnt/boot/grub и в раздел загрузки (для UEFI — в ESP).

Профилактика

Чтобы избежать повторения ошибки:

  1. Не удаляйте и не сжимайте раздел /boot после установки системы. Если нужно менять размер, делайте это через GParted с загрузочного диска, а затем переустанавливайте GRUB.
  2. При обновлении ядра убедитесь, что на разделе /boot достаточно места (минимум 200 МБ). Удаляйте старые ядра через apt autoremove или dnf autoremove.
  3. Избегайте изменений порядка дисков в BIOS/UEFI. Если меняете кабели, обновляйте GRUB конфигурацию.
  4. Регулярно делайте резервные копии важных разделов (особенно /boot и ESP) или создавайте снапшоты системы (Btrfs, ZFS).
  5. При установке GRUB всегда указывайте физический диск (например, /dev/sda), а не раздел (например, /dev/sda1), если у вас BIOS. Для UEFI — ESP должен быть отдельным FAT32-разделом.
  6. После любых операций с разделами (создание, удаление, изменение размера) переустанавливайте GRUB с LiveCD.

Дополнительные вопросы

Что делать, если в grub-rescue нет команды ls?

Это указывает на серьёзные проблемы с драйверами диска. Попробуйте загрузиться с LiveUSB и проверить, виден ли диск в fdisk -l. Если нет — возможно, проблема в аппаратной части (кабель, контроллер) или в драйвере RAID/NVMe, который не загружается в rescue-режиме.

Можно ли автоматически восстановить GRUB?

Нет, в grub-rescue нет автоповреждения. Все шаги требуют ручного ввода. Однако после успешной загрузки можно настроить автоматическое восстановление конфигурации через grub-mkconfig при каждом обновлении ядра.

Почему после восстановления GRUB снова появляется grub-rescue?

Чаще всего это значит, что GRUB установлен не в тот раздел или диск. Проверьте:

  • Для BIOS: sudo fdisk -l — есть ли таблица разделов? Где находится MBR?
  • Для UEFI: смонтирован ли ESP? Установлен ли GRUB в правильную EFI-запись (efibootmgr)?
  • Правильно ли указан root в grub.cfg?

Часто задаваемые вопросы

Как выйти из grub-rescue и загрузить систему?
Можно ли восстановить GRUB без LiveCD/USB?
Почему после обновления ядра появился grub-rescue?
Чем grub-rescue отличается от обычного grub?

Полезное

Определите разделы диска в rescue-оболочке
Найдите раздел с установленной системой
Установите временный root и загрузите ядро
Переустановите GRUB с LiveCD
Восстановите конфигурацию GRUB

Эта статья помогла вам решить проблему?