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 — одно слово в левом верхнем углу экрана без подсказки и курсора.
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
Вот на этом пожалуй и всё, загрузчик должен восстановиться и система загрузиться.