Linux — grub rescue
GRUB — GRand Unified Bootloader. Универсальный загрузчик, который устанавливается вместе с операционной системой Linux. В настоящее время большинство систем Linux используют GRUB2.
Если загрузчик GRUB не может найти папку grub или если файловая система диска повреждена, то вы можете при загрузке увидеть такую картину:
Операционная система загрузиться не может. Что делать?
Посмотрим какие разделы на диске видит загрузчик с помощью команды ls:
В результате у нас отобразится:
У меня найден один диск и два раздела на нём, первый и пятый. На название msdos не обращаем внимания, GRUB не определяет тип файловой системы.
Теперь нам нужно найти загрузочный раздел. По очереди перебираем разделы:
Это означает, что раздел содержит неподходящую для загрузки файловую систему.
На каком-то из разделов отобразится список директорий:
grub rescue > (hd0,msdos1)/
./ ../ lost+found/ boot/ vmlinuz-3.2.0-4-686-pae initrd.img-3.2.0-4-686-pae
Видим директорию boot , это нужный нам раздел. В зависимости от операционной системы путь к загрузчику может отличаться, вместо /boot/grub может быть /grub или ещё что-нибудь.
Устанавливаем переменные prefix и root:
После загрузки ОС нужно восстановить загрузчик GRUB на загрузочном разделе:
unknown filesystem
Случается, что на всех разделах отображается ошибка:
Качаем boot-repair-disk и пытаемся восстановить файловую систему с помощью fsck в нужном разделе:
Если вам понравилась статья, то ставьте 👍🏻 каналу.
Пишите комментарии, задавайте вопросы, подписывайтесь.
Исправляем ошибку Grub rescue в Linux
Ошибка Grub Rescue чаще всего встречается на компьютерах с двойной загрузкой, когда на компьютер установлен сначала Linux, а потом Windows.
Windows при установке может стереть загрузчик Linux и при загрузке вместо меню с выборов ОС для загрузки появляется ошибка:
Error: unknown filesystem Entering rescue mode
И перед вами открывается консоль Grub rescue.
Консоль загрузчика grub поддерживает ряд простейших команд. Их список можно вывести, набрав:
Выведите список разделов на диске:
В нашем примере есть один диск hd0 с разделом msdos1.
Проверьте есть ли файлы загрузчика grub на этом разделе:
Проверьте, что в указанном каталоге есть файл grub.cfg. Если у вас больше разделов и дисков, проверьте их все.
Создайте префикс для каталога загрузчика:
set prefix=(hd0, msdos1)/boot/grub
set root=(hd0, msdos1)/boot/grub
Загрузите дополнительные модули и загрузите Linux:
insmod ext2
insmod normal
normal
После загрузки Linux нужно переустановить загрузчик:
Используйте свою букву загрузочного диска вместо sda.
Обновите конфигурацию загрузчика grub2 в файле grub.cfg:
Grub должен автоматически обнаружить установленные операционные системы и добавить их в автозагрузку.
Если вы не смогли восстановить загрузчик описанным выше способом, можно исправить grub с помощью загрузочной флешки.
Я загрузил компьютер с LiveCD образа Ubuntu.
Откройте терминал и выполните команду:
Выведите список дисков и разделов:
Найдите раздел с установленной Linux (sda1 в моем случае).
Смонтируйте этот раздел в каталог /mnt:
Проверьте, что на этом разделе есть каталог /boot/:
Если каталога boot нет, смонтируйте его отдельно:
Смонтируйте следующие разделы с Live образа:
mount —bind /dev /mnt/dev
mount —bind /proc /mnt/proc
mount —bind /sys /mnt/sys
Войдите в локальную систему на диске с помощью chroot:
Теперь можно переписать конфигурацию загрузчика на диске:
Отмонтируйте разделы и перезагрузите компьютер.
Теперь ваш заручик grub исправен и должен вывести меню выбора загрузки операционных систем.
grub rescue – что делать?
В случае возникновения проблем с загрузчиком появляется надпись grub rescue. Чаще всего проблема появляется, когда на компьютере установлено сразу две операционные системы: Linux и Windows. Обычно установка производится в такой последовательности.
Сначала на жёсткий диск устанавливается Windows после чего на отдельный раздел производится установка Linux. При такой схеме в загрузочную область диска добавится загрузчик grub2 что позволяет выбирать в какую из систем производить запуск.
Но бывает так, что в таком состоянии компьютер работает длительное время. У Windows как известно разрастается реестр, и система начинает работать медленно. Тут вы приняли решение переустановить Винду, а заодно затёрли загрузчик Linux. Загрузочная область оказывается повреждена и при старте системы появляется сообщение на чёрном экране: grub rescue unknown filesystem .
Ещё вы могли что-нибудь нахимичить с файлом конфигурации grub.cfg в директории /boot/grub/ . Его вообще не рекомендуется править редакторами поскольку в будущем он всё равно окажется перезаписан автоматически. Вместо этого сконфигурируйте файл /etc/default/grub и выполните команду: sudo update-grub
grub rescue – что делать?
Итак, мы находимся консоли загрузчика. Она имеет небольшой командный интерпретатор наподобие bash. Список всех доступных команд можно получить, набрав:
Введите команду для просмотра существующих разделов:
В данном примере всего один раздел msdos1 на жёстком диске hd0.
Убедимся, что это нужный раздел. Для этого выводим список файлов загрузчика:
Находим файл grub.cfg значит всё в порядке, продолжаем. Если каталог не обнаружен, то перебираем остальные разделы дисков пока не найдём.
Следующая команда создаёт префикс для каталога загрузчика:
set prefix=(hd0, msdos1)/boot/grub
Установим раздел в качестве корневого:
set root=(hd0, msdos1)/boot/grub
Затем необходимо подключить ещё пару модулей и стартовать загрузку системы:
insmod ext2 insmod normal normal
После успешной загрузки в Linux не забудьте переустановить загрузчик командой:
(вместо «_» введите букву загрузочного жёсткого диска).
Далее выполните команду обновления конфигурации файла grub.cfg:
Обычно grub2 автоматически определяет установленные системы, в том числе Windows, и добавляет их в список загрузки.
Восстановление ubuntu с флешки
Если все проделанные выше действия не помогли, то придётся раздобыть загрузочную флешку.
Лучше подготовить USB или CD носитель с Ubuntu той же версии и разрядности что и восстанавливаемая система. Я покажу на примере системы Ubuntu 18.04 LTS x64. Загрузитесь в Live режиме и откройте терминал комбинацией Ctrl+Alt+T.
Для удобства сразу активируйте права суперпользователя root. Знак минус в конце команды означает перемещение в домашний каталог:
Теперь нужно посмотреть список дисков и разделов программой fdisk:
Обнаруживаем раздел с установленной системой Linux. В этом примере раздел /dev/sda1 единственный, он же корневой и загрузочный.
ВНИМАНИЕ
Выбирайте раздел аккуратно, буква диска может отличаться от моих примеров. Не потеряйте свои данные!
Смонтируем его в каталог /mnt/ :
Убедитесь, что каталог /boot/ находится на этом же разделе диска выполнив команду:
В случае отсутствия каталога, монтируйте его отдельно. Для этого нужно найти раздел в результате вывода утилиты fdisk (на скриншоте выше) и смонтировать командой:
X = номер вашего раздела с файлами каталога /boot/ .
Сейчас необходимо произвести логин в ту систему, которую будем чинить. Но перед этим смонтируем из Live системы несколько служебных разделов:
mount --bind /dev /mnt/dev && mount --bind /proc /mnt/proc && mount --bind /sys /mnt/sys
Двойной амперсанд && между командами означает проверку выполнения предыдущей команды. Выполнение последующей команды происходит только при условии, что предыдущая завершена успешно.
Переходим в окружение chroot , то есть заходим под пользователем root в систему, установленную на жёстком диске:
Всё, мы в системе. Можно устанавливать загрузчик и обновлять его конфигурацию. Будьте внимательны, используется именно корневой раздел диска /dev/sda без цифры:
grub-install /dev/sda && update-grub
Посмотрите, чтобы не было ошибок в результате выполнения команд. Далее набираем один раз exit , или комбинацию Ctrl+D и выходим в консоль Live системы.
На всякий случай размонтируем корректно разделы и перезагружаемся:
Процедура восстановления загрузчика grub2 на этом завершена.