Grub-rescue, как восстановить загрузку.

Предыстория. Попал в руки ноутбук Samsung NP355V4C с установленной на оном Windows 7. Задача: поставить параллельно Debian. Странности начались с самого начала — в биосе почему то ну никак не смог выставить загрузку сначала с флешки, затем с жесткого диска. Т.е. или одно или другое. Ну и ладно, бог с ним, запустил сетевую установку Debian. После установки дистрибутив по умолчанию  поставил GRUB на флешку. Необходимо было переместить GRUB на жесткий диск. Что и сделал по следующему руководству

Перезагрузился без флешки, получил Grub-rescue. В rescue mode доступно всего четыре команды:

  • ls — вывод содержимого
  • set — установить переменную
  • unset — очистить переменную
  • insmod — загрузка модуля

Т.е. текущая задача найти где хранятся модули и загрузить их. Вначале следует дать команду:

ls

В ответ она выведет, например, следующее:

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

По непонятным причинам, в данном примере Grub даже не понимает, какие файловые системы находятся на разделах дисков, и почему-то их считает как msdos.

Нам нужно постараться угадать, какие диски мы видим. В данном случае видно два диска. Диск с индексом 0 содержит три раздела, диск с индексом 1 содержит два раздела. Я знаю, что мой линукс, который мне нужно загрузить, находится на диске с тремя разделами. Поэтому делаю вывод, что мне нужен hd0.

По непонятным причинам Grub называет разделы в обратном порядке. И становится непонятно, что имеется в виду под (hd0,msdos3) — первый раздел или третий? Тут можно выкрутиться, использовав синтаксис (hd0,1). Нужно помнить, что в Grub счет дисков начинается с 0, а счет разделов — с 1.

Так как я знаю, что Linux в моем случае установлен на первый раздел, то нужный мне раздел будет обозначаться (hd0,1). Выяснив обозначение радела, нужно дать команды:

set prefix=(hd0,1)/boot/grub 
set root=(hd0,1)

Этими командами мы указываем использовать диск (hd0,1) для дальнейших команд. После чего нужно проверить, действительно ли на этом разделе есть то что нам нужно. Даем команду:

ls /boot/grub

должно вывестись на экран куча файлов с расширением md

Далее выполняем:

insmod ext2
insmod normal
normal

После чего Grub перейдёт в полнофункциональный режим. Он автоматически найдет все разделы с которых можно грузить ОС и покажет своё Grub-меню.

Дальнейшее восстановление обычно сводится к тому, чтобы загрузить нужный нам Linux, и в нем от root дать команду:

grub-install /dev/sda

Эта команда переустановит в MBR код Grub-а таким образом, что он автоматически будет подхватывать свою вторую часть с раздела, с которого вы и загрузились.


Комментарии:

4 мысли о “Grub-rescue, как восстановить загрузку.”

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Этот сайт использует Akismet для борьбы со спамом. Узнайте как обрабатываются ваши данные комментариев.