Несколько способов восстановления загрузчика GRUB2 с использованием LiveCD
Загружаемся с любого удобного Linux LiveCD.
В моем случае это был образ Gentoo.
Способ 1
Перво-наперво узнаем на каком разделе у нас установлена система (если мы этого не знаем заранее). На данном этапе ничего сложного и получить информацию мы можем из вывода команды:
fdisk -l |
Для дальнейшей работы нам понадобится корневой раздел (root).
Смонтируем его:
mount /dev/sda1 /mnt |
Также монтируем папку /dev
нашей live-системы как /dev
нашего root-раздела:
mount --bind /dev /mnt/dev |
То же самое с папкой /proc
как /proc
root-раздела:
mount --bind /proc /mnt/proc |
Теперь chroot-имся в примонтированный каталог:
(в конце указываем интерпретатор, в моем случае по умолчанию zsh)
chroot /mnt /bin/bash |
Итак, после всех действий мы являемся root-пользователем в системе с корневым разделом нашей настоящей системы, которая смонтирована в /mnt
.
Если у нас несколько дисков, то необходимо уточнить информацию с какого диска осуществляется загрузка. Если у нас один диск, разбитый на разделы, то вероятнее всего это будет sda
.
Установим GRUB2
grub-install /dev/sda |
Если в ходе установки возникли проблемы, попробуйте перезапустить команду с ключом --recheck
:
grub-install --recheck /dev/sda |
Обратите внимание, что мы устанавливаем загрузчик на диск (sda), а не на раздел (sda1, sda2, etc)
После успешной установки выходим из chroot командой exit
и демонтируем все диски и папки:
umount /mnt/dev |
Перезагружаемся и выполняем загрузку с нашего диска (sda).
Способ 2
Грузимся с LiveCD с поддержкой grub2.
В отличие от предыдущего способа, мы не будем запускать установщик через chroot, что позволит сократить количество требуемых действий. Вместо использования chroot мы воспользуемся ключом --root-directory
. Но для начала убедимся, что данная опция поддерживается нашей live-системой.
man grub-install |
Если в описании опций присутствует вышеупомянутый ключ --root-directory
- все в порядке.
Монтируем корневой раздел:
mount /dev/sda1 /mnt |
Если у нас выделен отдельный boot-раздел, примонтирум его тоже.
Допустим это sda2:
mount /dev/sda2 /mnt/boot |
Теперь переходим к установке grub2. Ключ --root-directory
позволяет указать что использовать в качестве корневой директории. Нам нужен корневой раздел нашей системы, который примонтирован в /mnt
.
Поэтому выполняем:
grub-install --root-directory=/mnt /dev/sda |
Как и в предыдущем способе, grub2 устанавливается на физический диск, а не на раздел. В качестве диска нужно указать тот диск, который установлен загрузочным в BIOS. Если все пройдет успешно, то установщик выведет сообщение об успешном завершении и список обнаруженных разделов, которые были добавлены в device.map
. Если все это есть - отмонтируем диски и перезагружаемся. Если будет выведен неполный список разделов - отредактируем файл device.map
в корневой папке установленной системы (в описанном примере - /mnt/boot/grub/device.map
) поправляем его, добавив остальные диски и скорректировав нумерацию.
Файл должен иметь вид:
(hd0) /dev/sda (hd1) /dev/sdb |
При необходимости повторяем операции для всех жестких дисков. Сохраняем файл и повторно выполняем команду:
grub-install --root-directory=/mnt /dev/sda |
Теперь должен отобразиться правильный список дисков.
Демонтируем диски и перезагружаемся.
Способ 3
В случае, если нужно только восстановить MBR диска, все можно сделать гораздо проще, при этом ничего не монтируя. Загружаемся с LiveCD.
Определяем нужный диск с помощью fdisk -l
.
Вводим команду:
grub-install --root-directory=/tmp /dev/sda |
Теперь можно снова грузиться с диска.