Перейти к содержимому

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

GRUB — популярный загрузчик (boot loader), который используется во многих дистрибутивах Linux.

Если при использовании GRUB не получилось загрузить систему, возможны несколько сценариев. Определить эти сценарии можно по виду командной строки (промпта):

  1. grub>

    Этот промпт указывает на то, что GRUB определил всё, кроме файла конфигурации (/boot/grub/grub.cfg по умолчанию). См. grub>.

  2. grub rescue>

    Этот промпт указывает на то, что GRUB не смог определить “свою” директорию или файлы в ней повреждены/отсутствуют. См. grub rescue>.

grub>

  1. Выведите список разделов

    Окно терминала
    ls

    Будет отображён список всех блочных устройств, которые GRUB смог определить.

  2. Определите корневой раздел

    Для этого необходимо выполнить команду ниже для каждого раздела из шага 1 (замените _ на номер в вашем случае):

    Окно терминала
    ls (hd_)/ # "/" в конце является обязательным!

    Если вывод будет содержать директории boot, usr и т. д. — это корневой раздел.

    Наконец, нужно отметить этот раздел как корневой для GRUB (замените _ на номер в вашем случае):

    Окно терминала
    set root=(hd_)
  3. Задайте ядро Linux, которое будет использоваться для загрузки

    Окно терминала
    linux /boot/vmlinuz-linux root=/dev/sda1

    Ядро и корневой раздел нужно выбрать в зависимости от системы. В качестве root нужно установить корневой раздел.

    Ещё один пример. В данном случае используется SSD, а не жёсткий диск:

    Окно терминала
    linux /boot/vmlinuz-linux root=/dev/nvme0n1p3
  4. Загрузите initramfs

    Окно терминала
    initrd /boot/initramfs-linux.img

    Обратите внимаение, что название файла, как правило, имеет вид initramfs-<linux>.img, где <linux> зависит от того, какое ядро используется в шаге 3.

    Например, если используется /boot/vmlinuz-linux-zen, нужно выполнить команду:

    Окно терминала
    initrd /boot/initramfs-linux-zen.img
  5. Загрузить систему

    Окно терминала
    boot

    Для этого также можно нажать сочетание клавиш CtrlX или F10.

  6. Переустановить GRUB

    Для систем с BIOS (как правило, более старые устройства). Замените X на букву, которая используется в вашем случае:

    Окно терминала
    grub-mkconfig -o /boot/grub/grub.cfg
    grub-install --target=i386-pc /dev/sdX

    Например:

    Окно терминала
    grub-mkconfig -o /boot/grub/grub.cfg
    grub-install --target=i386-pc /dev/sda

    Для систем с UEFI (как правила, более новые устройства):

    Окно терминала
    grub-mkconfig -o /boot/grub/grub.cfg
    grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

    После названия блочного устройства не должно идти номера раздела! grub-install применяется не к разделу, а ко всему диску:

    • /dev/sda Верно
    • /dev/sda1 Неверно
  7. Перезагрузите систему

    Окно терминала
    reboot

grub rescue>

В этом случае будем использовать загрузочную флешку (livecd). Хотя в редких случаях можно восстановить систему и без неё, проще сделать это при помощи livecd. В инструкции будет использоваться загрузочный образ Arch Linux, также известный как archiso. Можно также использовать загрузочные образы других дистрибутивов.

  1. Зайдите в BIOS/UEFI и измените порядок загрузки так, чтобы загрузочная флешка имела наивысший приоритет

    Этот шаг сильно зависит от устройства, так что дать конкретные инструкции невозможно.

  2. Примонтируйте необходимые разделы

    Здесь вновь многое зависит от вашего устройства, поэтому приведу несколько примеров:

    Окно терминала
    mount /dev/sda1 /boot/efi
    mount /dev/sda2 /

    Если используется SSD:

    Окно терминала
    mount /dev/nvme0n1p1 /mnt/boot/efi
    mount /dev/nvme0n1p3 /mnt
  3. Смените корень (chroot)

    Окно терминала
    arch-chroot /mnt
  4. Переустановите GRUB

    Для систем с BIOS (как правило, более старые устройства). Замените X на букву, которая используется в вашем случае:

    Окно терминала
    grub-mkconfig -o /boot/grub/grub.cfg
    grub-install --target=i386-pc /dev/sdX

    Например:

    Окно терминала
    grub-mkconfig -o /boot/grub/grub.cfg
    grub-install --target=i386-pc /dev/sda

    Для систем с UEFI (как правила, более новые устройства):

    Окно терминала
    grub-mkconfig -o /boot/grub/grub.cfg
    grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB

    После названия блочного устройства не должно идти номера раздела! grub-install применяется не к разделу, а ко всему диску:

    • /dev/sda Верно
    • /dev/sda1 Неверно
  5. Перезагрузите систему

    Окно терминала
    exit # Или Ctrl+D, выход из arch-chroot
    reboot

    Не забудьте отсоединить загрузочный носитель!