Grub-rescue, как восстановить загрузку.
Предыстория. Попал в руки ноутбук Samsung NP355V4C с установленной на оном Windows 7. Задача: поставить параллельно Debian. Странности начались с самого начала — в биосе почему то ну никак не смог выставить загрузку сначала с флешки, затем с жесткого диска. Т.е. или одно или другое. Ну и ладно, бог с ним, запустил сетевую установку Debian. После установки дистрибутив по умолчанию поставил GRUB на флешку. Необходимо было переместить GRUB на жесткий диск. Что и сделал по следующему руководству
Перезагрузился без флешки, получил Grub-rescue. В rescue mode доступно всего четыре команды:
- ls — вывод содержимого
- set — установить переменную
- unset — очистить переменную
- insmod — загрузка модуля
Т.е. текущая задача найти где хранятся модули и загрузить их. Вначале следует дать команду:
1 |
ls |
В ответ она выведет, например, следующее:
1 |
(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). Выяснив обозначение радела, нужно дать команды:
1 2 |
set prefix=(hd0,1)/boot/grub set root=(hd0,1) |
Этими командами мы указываем использовать диск (hd0,1) для дальнейших команд. После чего нужно проверить, действительно ли на этом разделе есть то что нам нужно. Даем команду:
1 |
ls /boot/grub |
должно вывестись на экран куча файлов с расширением md
Далее выполняем:
1 2 3 |
insmod ext2 insmod normal normal |
После чего Grub перейдёт в полнофункциональный режим. Он автоматически найдет все разделы с которых можно грузить ОС и покажет своё Grub-меню.
Дальнейшее восстановление обычно сводится к тому, чтобы загрузить нужный нам Linux, и в нем от root дать команду:
grub-install /dev/sda
Эта команда переустановит в MBR код Grub-а таким образом, что он автоматически будет подхватывать свою вторую часть с раздела, с которого вы и загрузились.
спасибо!
и в нем от roor дать команду: -опечатка
Поправил
нужный нам Linux, и в нем от roor дать команду: — опечатка