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

Сегодня разберём пример, как можно восстановить загрузчик GRUB после его поломки.

Если у вас поломался загрузчик GRUB, то в этой статье я расскажу как его можно восстановить. Для систем c ext и btrfs

Из-за чего могут возникнуть проблемы с GRUB

Одна из самых распространенных причин – это неправильный порядок установки двух операционных систем. Для правильной установки делаем следующее:

    • Сначала устанавливаем Windows
    • И только потом уже Linux

Grub может сломаться и по другим причинам:

    • Ошибка при редактирование файла настроек GRUB.
    • Сбой системы.

 

Восстанавливаем загрузчик Grub на системах с ext2/ext3/ext4

В первую очередь Вам потребуется загрузился с Live CD любой системы Linux. Проверен на дистрибутивах Ubuntu, однако в 99% он должен сработать с ЛЮБЫМ дистрибутивом LiveCD, в составе которого есть пакет chroot.

После загрузки с образа Live CD нажмите CTRL+ALT+T чтобы запустить терминал.

Далее в терминале вводим:

sudo fdisk -l
    • Данная команда покажет вашу таблицу разделов:
Disk /dev/sda: 35 GiB, 10737418240 bytes, 20971520 sectors
Disk model: QEMU HARDDISK   
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: gpt
Disk identifier: 46EF8683-CFF7-4410-B002-E70167354370

Device     Start     End         Sectors    Size  Type
/dev/sda1   2048     4095        2048       1M    BIOS   boot
/dev/sda2   4096     20969471    20965376   10G   Linux  filesystem
/dev/sda3   20969472 54669311    20969472   25G   HPFS/NTFS

Из вывода выше ищем наш раздел на котором установлен Linux, в моем случае это раздел /dev/sda2.

Монтируем Linux-раздел (sda2).

sudo mount /dev/sda2 /mnt
sudo mount --bind /dev/ /mnt/dev/
sudo mount --bind /proc/ /mnt/proc/
sudo mount --bind /sys /mnt/sys
sudo mount /dev/sda1 /mnt/boot

Обратите внимание, что если директории /boot или /var находятся отдельно, то Вам нужно будет примонтировать их в /mnt/boot и /mnt/var. В примере выше я как раз монтирую раздел /dev/sda1 так, как в нем находится директория /boot

Теперь необходимо перейти в окружающую среду chroot:

sudo chroot /mnt

Если вам необходимо отредактировать записи GRUB, то открываем файл /etc/default/grub. Но будьте осторожны с данным файлом!

nano -i -P /etc/default/grub
    • -P — Сохранять позицию курсора. Понадобится если будете открывать файл несколько раз.
    • -i — Автоматический отступ на новых строках.

После изменения конфигурационного файла GRUB набираем команду:

update-grub

Далее восстановим наш загрузчик следующей командой:

grub-install /dev/sda

Или

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

Если получаете сообщение об ошибке, то используйте команду:

grub-install --recheck /dev/sda

Далее выходим из окружения chroot, размонтируем разделы и перезагрузим ПК. В терминале набираем следующие команды:

exit
sudo umount /mnt/dev
sudo umount /mnt/proc
sudo umount /mnt/sys
sudo umount /mnt/boot
sudo umount /mnt
sudo reboot

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

В файловой системе btrfs предполагается подтом (subvolume) @ для корня системы. Поэтому для восстановления загрузчика GRUB воспользуемся следующими командами:

sudo mount -o subvol=/@ /dev/sda2 /mnt
sudo grub-install --boot-directory=/mnt/boot /dev/sda
sudo reboot

Если сделали всё правильно и не допустили ошибок, то GRUB при перезагрузке системы будет восстановлен.