Что означает ошибка grub-rescue
Ошибка grub-rescue> (режим аварийного восстановления) появляется, когда загрузчик GRUB не может найти свои модули, конфигурационный файл или необходимые файлы ядра. Это не код ошибки в привычном смысле, а специальная минималистичная оболочка, которая запускается при критических сбоях.
Симптомы:
- При включении компьютера вместо меню GRUB или загрузки системы выводится строка:
grub-rescue> - Команды
ls,setработают, но большинство стандартных команд GRUB (например,menuentry) недоступны. - Система не загружается дальше этого экрана.
Режим grub-rescue — это последняя линия обороны загрузчика. Он позволяет вручную указать расположение ядра и проинициализировать загрузку, но не решает проблему с конфигурацией GRUB.
Причины возникновения
Ошибка возникает из-за того, что GRUB не может прочитать свои файлы с диска. Основные причины:
- Повреждение или потеря файлов GRUB в разделе
/boot(например,grub.cfg, модули в/boot/grub). - Изменение порядка дисков в BIOS/UEFI или физическое подключение (например, переподключили SATA-кабель, и
hd0сталhd1). - Неправильная установка GRUB (например, в раздел, а не в MBR/ESP, или на другой диск).
- Повреждение таблицы разделов или файловой системы
/boot. - Удаление или сжатие раз
/bootбез обновления GRUB. - Сбой при обновлении ядра/GRUB (обновление прервалось, место на /boot закончилось).
- Ошибка в конфигурации GRUB (
grub.cfg), из-за которой загрузчик не может найти ядро.
Способ 1: Временная загрузка системы через rescue shell
Этот способ не исправляет GRUB, но позволяет загрузиться в систему, чтобы восстановить загрузчик изнутри.
- В
grub-rescue>определите список дисков и разделов:ls
Вывод может быть:(hd0) (hd0,msdos1) (hd0,msdos2) (hd1) (hd1,msdos1)... - Проверьте каждый раздел на наличие файлов ядра:
ls (hd0,msdos1)/
Ищите каталогиboot,grub,grub2или файлыvmlinuz-*,initrd.img-*. - Когда найдёте раздел с системой (например,
(hd0,msdos1)), установите его как корневой:set root=(hd0,msdos1) - Найдите точное имя файла ядра (версия может отличаться):
ls /boot/vmlinuz-*
Предположим, файл:/boot/vmlinuz-5.15.0-78-generic - Загрузите ядро и 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или по размеру раздела. - Загрузите систему:
boot - После успешной загрузки немедленно переустановите GRUB (см. Способ 2).
⚠️ Важно: Если
grub-rescue>не видит командуlsили диски вообще отсутствуют, проблема может быть в драйвере диска (например, для RAID или NVMe). В этом случае нужен LiveCD.
Способ 2: Полная переустановка GRUB с Live-носителя
Рекомендуемый метод. Требует загрузочного USB-носителя с Linux (Ubuntu, Fedora, любой live-дистрибутив).
- Загрузитесь с Live-USB и откройте терминал.
- Определите, как ваш системный диск называется в Live-среде:
sudo fdisk -l
Найдите раздел с Linux (обычно/dev/sda1,/dev/nvme0n1p1и т.д.). Если у вас UEFI, также найдите ESP-раздел (FAT32, ~100-500 МБ, типEFI System). - Смонтируйте корневой раздел:
sudo mount /dev/sda1 /mnt
Если у вас отдельный/boot, смонтируйте его в/mnt/boot:sudo mount /dev/sda2 /mnt/boot - Для UEFI смонтируйте ESP-раздел:
sudo mount /dev/sdaX /mnt/boot/efi # X — номер ESP-раздела - Смонтируйте системные виртуальные файловые системы:
sudo mount --bind /dev /mnt/dev sudo mount --bind /proc /mnt/proc sudo mount --bind /sys /mnt/sys - Перейдите в chroot-окружение:
sudo chroot /mnt - Переустановите 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
- Для BIOS/MBR (диск
- Обновите конфигурацию:
update-grub
Должен обнаружить ядра и создать меню. - Выйдите из chroot и перезагрузитесь:
exit sudo reboot
Уберите Live-USB при загрузке.
Способ 3: Восстановление конфигурации GRUB без LiveCD (если система загрузилась по Способу 1)
Если вам удалось временно загрузиться, восстановите конфигурацию GRUB изнутри системы.
- Проверьте, что файлы GRUB на месте:
ls /boot/grub
Должны быть файлыgrub.cfg,i386-pc/(для BIOS) илиx86_64-efi/(для UEFI). - Пересоздайте конфигурационный файл:
sudo update-grub
Или, еслиupdate-grubнедоступен:sudo grub-mkconfig -o /boot/grub/grub.cfg - Если конфиг восстановился, но GRUB всё равно не загружается, переустановите его в раздел загрузки:
# Для BIOS: sudo grub-install /dev/sda # Для UEFI (если ESP смонтирован в /boot/efi): sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi - Перезагрузитесь:
sudo reboot
Способ 4: Ручное восстановление файлов GRUB (экстренный вариант)
Если файлы GRUB были удалены или повреждены, но у вас есть резервная копия или они есть в другом месте.
- Из LiveCD (как в Способе 2) зайдите в chroot.
- Проверьте, есть ли пакет GRUB в системе:
dpkg -l grub-pc # Для Debian/Ubuntu rpm -qa | grep grub2 # Для RHEL/CentOS/Fedora - Если пакет есть, переустановите его:
# Debian/Ubuntu: sudo apt-get install --reinstall grub-pc grub-common # RHEL/CentOS (с EPEL): sudo dnf reinstall grub2 - Затем выполните
grub-installиupdate-grub(шаги из Способов 2 и 3). - Если пакета нет, установите его через менеджер пакетов из chroot.
- Если нет сети в Live-среде, скопируйте файлы GRUB с другого рабочего компьютера (совместимой архитектуры и версии) в
/mnt/boot/grubи в раздел загрузки (для UEFI — в ESP).
Профилактика
Чтобы избежать повторения ошибки:
- Не удаляйте и не сжимайте раздел
/bootпосле установки системы. Если нужно менять размер, делайте это через GParted с загрузочного диска, а затем переустанавливайте GRUB. - При обновлении ядра убедитесь, что на разделе
/bootдостаточно места (минимум 200 МБ). Удаляйте старые ядра черезapt autoremoveилиdnf autoremove. - Избегайте изменений порядка дисков в BIOS/UEFI. Если меняете кабели, обновляйте GRUB конфигурацию.
- Регулярно делайте резервные копии важных разделов (особенно
/bootи ESP) или создавайте снапшоты системы (Btrfs, ZFS). - При установке GRUB всегда указывайте физический диск (например,
/dev/sda), а не раздел (например,/dev/sda1), если у вас BIOS. Для UEFI — ESP должен быть отдельным FAT32-разделом. - После любых операций с разделами (создание, удаление, изменение размера) переустанавливайте 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?