2015-10-05
zelder
2015-10-06
05/10
2015

Восстановление загрузчика Grub

Предположим, на компьютере установлен Debian. После чего поставили Windows, и загрузчик Grub был затерт.

Восстановление Grub2

Загружаемся с Debian LiveCD в режиме Recovery mode.

Определяем в каком разделе установлен Linux.
fdisk -l
Выведет похожее:
/dev/sda1 .......... HPFS/NTFS
/dev/sdb1 * .......... Linux ext
/dev/sdb2 .......... Extended
/dev/sdb3 .......... Linux

Видим, что на диске sda основном, в разделе sda1 установлен Windows (предположительно).
На диске sdb, в разделе sdb3 установлен Linux.

Монтируем нашу систему.
mount /dev/sdb3 /mnt
Далее монтируем с загрузчика необходимые папки с утилитами, для работы grub
mount -t proc none /mnt/proc
mount -t sysfs sys /mnt/sys
mount -o bind /dev /mnt/dev
mount -o devpts pts /mnt/dev/pts

Меняем корневой каталог
chroot /mnt /bin/bash
Устанавливаем grub (указывается не раздел, а диск без указания номера раздела)
grub-install /dev/sda
Настраиваем grub
update-grub
или 
grub-mkconfig -o /boot/grub/grub.cfg
В процессе чего будет собрана информация об установленных системах (в том числе и о Windows) и прописана в Grub.

Перезапустить систему.
exit
reboot

Внимание!
Если при загрузке выйдет только консоль grub, значит были напутаны разделы.
Следует повторить всю процедуру указав верные разделы.



Резервная копия Grub
Можно написать скрипт для сохранения всех параметров Grub
datev=$(date +%Y_%m_%d)
mkdir -p ~/.grub.bak/$datev
cd ~/.grub.bak/$datev
mkdir -p boot/grub etc/default
cp /boot/grub/grub.cfg boot/grub
cp -Rp /etc/grub.d etc
cp /etc/default/grub etc/default
В примере, в корень папки пользователя будет создана скрытая папка .grub.bak, в ней по текущей дате еще подпапки.
После восстановления, выполнить команду:
update-grub