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

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

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Несколько способов восстановления загрузчика GRUB2 с использованием LiveCD

Загружаемся с любого удобного Linux LiveCD.
В моем случае это был образ Gentoo.

Способ 1

Перво-наперво узнаем на каком разделе у нас установлена система (если мы этого не знаем заранее). На данном этапе ничего сложного и получить информацию мы можем из вывода команды:

1
fdisk -l

Для дальнейшей работы нам понадобится корневой раздел (root).
Смонтируем его:

1
2
mount /dev/sda1 /mnt
mount /dev/sda2 /mnt/boot

Также монтируем папку /dev нашей live-системы как /dev нашего root-раздела:

1
mount --bind /dev /mnt/dev

То же самое с папкой /proc как /proc root-раздела:

1
mount --bind /proc /mnt/proc

Теперь chroot-имся в примонтированный каталог:
(в конце указываем интерпретатор, в моем случае по умолчанию zsh)

1
chroot /mnt /bin/bash

Итак, после всех действий мы являемся root-пользователем в системе с корневым разделом нашей настоящей системы, которая смонтирована в /mnt.
Если у нас несколько дисков, то необходимо уточнить информацию с какого диска осуществляется загрузка. Если у нас один диск, разбитый на разделы, то вероятнее всего это будет sda.

Установим GRUB2

1
grub-install /dev/sda

Если в ходе установки возникли проблемы, попробуйте перезапустить команду с ключом --recheck:

1
grub-install --recheck /dev/sda

Обратите внимание, что мы устанавливаем загрузчик на диск (sda), а не на раздел (sda1, sda2, etc)

После успешной установки выходим из chroot командой exit и демонтируем все диски и папки:

1
2
3
4
umount /mnt/dev
umount /mnt/proc
umount /mnt/boot
umount /mnt

Перезагружаемся и выполняем загрузку с нашего диска (sda).

Способ 2

Грузимся с LiveCD с поддержкой grub2.
В отличие от предыдущего способа, мы не будем запускать установщик через chroot, что позволит сократить количество требуемых действий. Вместо использования chroot мы воспользуемся ключом --root-directory. Но для начала убедимся, что данная опция поддерживается нашей live-системой.

1
man grub-install

Если в описании опций присутствует вышеупомянутый ключ --root-directory - все в порядке.

Монтируем корневой раздел:

1
mount /dev/sda1 /mnt

Если у нас выделен отдельный boot-раздел, примонтирум его тоже.
Допустим это sda2:

1
mount /dev/sda2 /mnt/boot

Теперь переходим к установке grub2. Ключ --root-directory позволяет указать что использовать в качестве корневой директории. Нам нужен корневой раздел нашей системы, который примонтирован в /mnt.
Поэтому выполняем:

1
grub-install --root-directory=/mnt /dev/sda

Как и в предыдущем способе, grub2 устанавливается на физический диск, а не на раздел. В качестве диска нужно указать тот диск, который установлен загрузочным в BIOS. Если все пройдет успешно, то установщик выведет сообщение об успешном завершении и список обнаруженных разделов, которые были добавлены в device.map. Если все это есть - отмонтируем диски и перезагружаемся. Если будет выведен неполный список разделов - отредактируем файл device.map в корневой папке установленной системы (в описанном примере - /mnt/boot/grub/device.map) поправляем его, добавив остальные диски и скорректировав нумерацию.
Файл должен иметь вид:

1
(hd0) /dev/sda (hd1) /dev/sdb

При необходимости повторяем операции для всех жестких дисков. Сохраняем файл и повторно выполняем команду:

1
grub-install --root-directory=/mnt /dev/sda

Теперь должен отобразиться правильный список дисков.
Демонтируем диски и перезагружаемся.

Способ 3

В случае, если нужно только восстановить MBR диска, все можно сделать гораздо проще, при этом ничего не монтируя. Загружаемся с LiveCD.
Определяем нужный диск с помощью fdisk -l.
Вводим команду:

1
grub-install --root-directory=/tmp /dev/sda

Теперь можно снова грузиться с диска.