Восстановление GRUB
Восстановление с помощью LiveCD/USB
Первый способ
Запустите систему с LiveCD/USB и откройте терминал. Для этого можно нажать Alt+F2 и ввести команду:
Теперь подключим этот раздел в /mnt следующей командой:
Если нужно обновить и меню grub (например, после установки Windows), то нужно сделать:
gnome-terminal
Далее необходимо узнать Вашу таблицу разделов. Используйте команду:
sudo fdisk -l
На экран должна быть выведена примерно такая таблица:
/dev/sda1 29 8369 66999082+ 83 Linux
/dev/sda2 * 8370 13995 45190845 7 HPFS/NTFS
/dev/sda3 13996 14593 4803435 5 Extended
Из таблицы видим, что Linux стоит (в нашем случае) на разделе /dev/sda1
Теперь подключим этот раздел в /mnt следующей командой:
sudo mount /dev/sda1 /mnt
Затем, для записи grub в MBR, вводите следующую команду:
sudo grub-install --root-directory=/mnt /dev/sda
В случае, если нужно только восстановить MBR диска (например, после переустановки Windows), то этого достаточно.
Если нужно обновить и меню grub (например, после установки Windows), то нужно сделать:
sudo update-grub --output=/mnt/boot/grub/grub.cfg
Восстановление закончено!
Восстановление используя chroot
Запустите систему с LiveCD/USB и откройте терминал. Для этого можно нажать Alt+F2 и ввести команду:
gnome-terminal
Далее необходимо узнать Вашу таблицу разделов. Используйте команду:
sudo fdisk -l
На экран должна быть выведена примерно такая таблица:
/dev/sda1 29 8369 66999082+ 83 Linux /dev/sda2 * 8370 13995 45190845 7 HPFS/NTFS /dev/sda3 13996 14593 4803435 5 ExtendedТеперь нужно примонтировать Ваш Linux раздел (здесь это sda1) и еще несколько важных директорий:
sudo mount /dev/sda1 /mnt
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
Если раздел /boot находится отдельно, то Вам необходимо примонтировать его в /mnt/boot!
Теперь перейдем в окружающую среду chroot:
sudo chroot /mnt
Теперь необходимо установить GRUB, используя команду:
grub-install /dev/sda
Если Вы получили сообщение об ошибке, то используйте команду:
Если все прошло успешно, выходим из chroot командой:
grub-install --recheck /dev/sda
Также в некоторых случаях может помочь вариант:
grub-install --recheck --no-floppy /dev/sda
exit
Теперь необходимо отмонтировать разделы:
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt
Если Вы монтировали раздел /boot воспользуйтесь командой:
sudo umount /mnt/boot
Затем перезагрузим Ваш компьютер командой:
sudo reboot
При необходимости Вы можете обновить меню загрузчика командой:
sudo update-grub
Восстановление в rescue mode
При отсутствии загрузочного диска, можно восстановить Grub из его
консоли. Восстановление происходит следующим образом: сначала нужно
подгрузить все модули, чтобы стала доступна вся функциональность Grub, а
затем уже запуститься с нужного раздела.
Как известно, Grub состоит из двух частей.
Первая часть записана в MBR диска. Она содержит базовую
функциональность, то есть в ней есть консоль в rescue mode и ничего
больше. Вначале нужно определить, на каком разделе находится вторая
часть груба (она лежит в каталоге /boot/grub), подгрузить недостающие
модули. И только потом можно будет дать команду запуска с нужного
раздела.
В rescue mode доступно всего четыре команды:
Grub называет разделы в обратном порядке. И становится непонятно, что имеется в виду под (hd0,msdos3) - первый раздел или третий? Тут можно выкрутиться, использовав синтаксис (hd0,1). Нужно помнить, что в Grub счет дисков начинается с 0, а счет разделов - с 1. Предположим, что Линукс установлен на первый диск в первый раздел, то есть (hd0,1). Даем команду:
Дальнейшее восстановление сводится к тому, чтобы загрузить нужный нам Linux, и в нем от рута дать команду:
ls set unset insmodВначале следует дать команду:
ls
В ответ она выведет, например, следующее:
(hd0) (hd0,msdos3) (hd0,msdos2) (hd0,msdos1) (hd1) (hd1,msdos2) (hd1,msdos1)Иногда Grub может неправильно опеределить, какие файловые системы находятся на разделах дисков. В данном случае определяет их как msdos. Нам нужно постараться угадать, какие диски мы видим. В данном случае видно два диска. Диск с индексом 0 содержит три раздела, диск с индексом 1 содержит два раздела. Зная структуру своих дисков несложно определить нужный диск.
Grub называет разделы в обратном порядке. И становится непонятно, что имеется в виду под (hd0,msdos3) - первый раздел или третий? Тут можно выкрутиться, использовав синтаксис (hd0,1). Нужно помнить, что в Grub счет дисков начинается с 0, а счет разделов - с 1. Предположим, что Линукс установлен на первый диск в первый раздел, то есть (hd0,1). Даем команду:
set prefix=(hd0,1)/boot/grub
set root=(hd0,1)
Этими командами мы указываем использовать диск (hd0,1) для дальнейших
команд. После чего нужно проверить, действительно ли на этом разделе
есть то, что нам нужно. Даем команду:
ls /boot/grub
если в ответ получаем список всех файлов в этой директории, то диск и раздел выбраны правильно.
Подгружаем модули:
insmod ext2
insmod normal
normal
Проверьте правильность написания первой команды для файловых систем ext3 и ext4
После чего Grub перейдёт в полнофункциональный режим. Он автоматически
найдет все операционки, которые можно подгружать, и покажет своё
Grub-меню.
Дальнейшее восстановление сводится к тому, чтобы загрузить нужный нам Linux, и в нем от рута дать команду:
grub-install /dev/sdX
Где sdX, диск, на который нужно установить Grub.
Комментариев нет:
Отправить комментарий