Восстановление GRUB2 через rescue


GRUB — GRand Unified Bootloader. Универсальный загрузчик, который устанавливается вместе с операционной системой Linux. В настоящее время большинство систем Linux используют GRUB2. Что делать если GRUB не запустился?

При сбое загрузки пользователь может увидеть на мониторе одно из следующих сообщений. Оно дает первое представление о том, что может быть причиной сбоя загрузки. Ниже приведены сообщения о сбоях и возможные причины их возникновения.

  • grub>  обозначает, что  GRUB 2 загрузил модули, но не смог найти файл grub.cfg.

  • grub rescue> обозначает, что  GRUB 2 не смог найти папку grub или загрузить модуль normal.

  • grub>: на пустом экране

    • GRUB 2 обнаружил загрузочную информацию, но не смог найти или использовать существующий файл конфигурации GRUB 2 (обычно grub.cfg).

  • grub rescue>: — режим спасения.

    • GRUB 2 не может найти папку grub или ее содержимое отсутствует/повреждено. В папке grub находятся меню GRUB 2, модули и сохраненные данные об окружающей среде.

  • GRUB — одно слово в левом верхнем углу экрана без подсказки и курсора.

    • GRUB не удалось найти даже самую базовую информацию, которая обычно содержится в MBR или загрузочном секторе.
  • Busybox или Initramfs: GRUB 2 начал процесс загрузки, но возникла проблема с передачей управления операционной системе. Возможные причины: неправильный UUID или обозначение root= в строке 'linux' или поврежденное ядро.

  • Застывший заставочный экран, мигающий курсор без grub> или grub rescue подсказки. Возможно, возникли проблемы с видео в ядре. Хотя эти сбои не связаны с GRUB 2, он все же может помочь. GRUB 2 позволяет редактировать меню перед загрузкой, и пользователь может восстановить работоспособность системы, добавив и/или удалив параметры ядра в menuentry перед загрузкой.

В рамках данной статьи рассмотрим способ восстановления загрузчика с помощью командной строки GRUB.

Итак, если на экране вы видите приглашение grub>, либо grub rescue>, то можно предпринять следующее:

1.  Введите команду  ls

grub rescue> ls

Эта команда выведет на экран названия обнаруженных дисков и разделов, вывод будет примерно таким:

(hd0) (hd0,msdos1) (hd0,msdos2) (hd1) (hd1,msdos1)

2.   Далее необходимо просмотреть содержимое каждого раздела и найти нужный нам. Это можно сделать с помощью той же команды ls и указанием в скобках нужного раздела, с последующим знаком слеш. Пример:

grub rescue> ls (hd0,msdos1)/
grub rescue> ls (hd0,msdos2)/

Просмотрев разделы, нужно найти тот, в котором имеется папка   boot/grub. Запомните его.

3. Далее нужно установить переменные с помощью команды set. Допустим, вы определили, что раздел где установлен CRUB это (hd0,msdos2), тогда необходимо ввести:

grub rescue> set root=(hd0,msdos2)
grub rescue> set prefix=(hd0,msdos2)/boot/grub

4. Для работы GRUB, необходимо загрузить некоторые модули, делается это командой insmod:

grub rescue> insmod ext2
grub rescue> insmod normal

Если у вас файловая система ext2 / ext3 / ext4, то подойдет команда insmod ext2, но для файловой системы btrfs необходимо загрузить другой модуль командой:

grub rescue> insmod btrfs

5.  Дальше попробуем запустить загрузчик командой:

grub rescue> normal

Если все нормально, то запустится обычное меню GRUB с выбором операционных систем.

6. Загрузите систему и исправьте проблему. После входа в ОС (от имени root) переустановите GRUB командой в терминале:

# grub-install /dev/sdX         (где sdX - это раздел куда установлена система, например sda)
# update-grub

7. Если  на шаге 5 команда normal не сработала, то можно загрузить систему вручную:

grub rescue> linux /boot/vmlinuz-6.17.0-20-generic root=/dev/sdXY

где sdXY - это корневой раздел системы, например sda2.

вместо vmlinuz-6.17.0-20-generic, необходимо указать нужное ядро, какое именно можно посмотреть в папке boot/ с помощью команды:

grub rescue>  ls (hd0,msdos2)/boot/

на экран выведется список файлов, которые ноходятся в каталоге boot/ и среди них можно найти название файла с необходимым ядром.

8. Далее загружаем initrd:

grub rescue> initrd /boot/initrd.img-6.17.0-20-generic

нужный initrd находим по аналогии с ядром на предыдущем шаге.

9. Вот и всё, остается только запустить систему командой boot:

grub rescue> boot

Если всё прошло удачно, то система запустится, и после загрузки выполните в терминале команды указанные на шаге 6.

----------------------------------------------------------

В общем случае (если подытожить) порядок всех команд будет следующим:

grub rescue> ls

grub rescue> set root=(hd0,msdos2)

grub rescue> set prefix=(hd0,msdos2)/boot/grub

grub rescue> insmod ext2

grub rescue> insmod normal

grub rescue> normal

если меню GRUB не запустилось, то продолжаем:

grub rescue> linux /boot/vmlinuz-6.17.0-20-generic root=/dev/sdXY

grub rescue> initrd /boot/initrd.img-6.17.0-20-generic

grub rescue> boot

После запуска системы в терминале выполняем:

# grub-install /dev/sdX         (где sdX - это раздел куда установлена система, например sda)
# update-grub

----------------------------------------------------------------

Если ничего не помогает, то используйте Live USB:

1. Загрузите Linux с флешки.

2. Определите разделы:

$ sudo fdisk -l

3. Примонтируйте корневой раздел:

$ sudo mount /dev/sdXY /mnt

4. Переустановите GRUB:

$ sudo grub-install --root-directory=/mnt /dev/sdX
$ sudo chroot /mnt
$ update-grub
$ exit
$ sudo reboot

Вот на этом пожалуй и всё, загрузчик должен восстановиться и система загрузиться.

 

 



Вернуться назад