Восстановление GRUB
GRUB — популярный загрузчик (boot loader), который используется во многих дистрибутивах Linux.
Если при использовании GRUB не получилось загрузить систему, возможны несколько сценариев. Определить эти сценарии можно по виду командной строки (промпта):
-
grub>
Этот промпт указывает на то, что GRUB определил всё, кроме файла конфигурации (
/boot/grub/grub.cfg
по умолчанию). См.grub>
. -
grub rescue>
Этот промпт указывает на то, что GRUB не смог определить “свою” директорию или файлы в ней повреждены/отсутствуют. См.
grub rescue>
.
grub>
-
Выведите список разделов
Окно терминала lsБудет отображён список всех блочных устройств, которые GRUB смог определить.
-
Определите корневой раздел
Для этого необходимо выполнить команду ниже для каждого раздела из шага 1 (замените
_
на номер в вашем случае):Окно терминала ls (hd_)/ # "/" в конце является обязательным!Если вывод будет содержать директории
boot
,usr
и т. д. — это корневой раздел.Наконец, нужно отметить этот раздел как корневой для GRUB (замените
_
на номер в вашем случае):Окно терминала set root=(hd_) -
Задайте ядро Linux, которое будет использоваться для загрузки
Окно терминала linux /boot/vmlinuz-linux root=/dev/sda1Ядро и корневой раздел нужно выбрать в зависимости от системы. В качестве
root
нужно установить корневой раздел.Ещё один пример. В данном случае используется SSD, а не жёсткий диск:
Окно терминала linux /boot/vmlinuz-linux root=/dev/nvme0n1p3 -
Загрузите initramfs
Окно терминала initrd /boot/initramfs-linux.imgОбратите внимаение, что название файла, как правило, имеет вид
initramfs-<linux>.img
, где<linux>
зависит от того, какое ядро используется в шаге 3.Например, если используется
/boot/vmlinuz-linux-zen
, нужно выполнить команду:Окно терминала initrd /boot/initramfs-linux-zen.img -
Загрузить систему
Окно терминала bootДля этого также можно нажать сочетание клавиш CtrlX или F10.
-
Переустановить GRUB
Для систем с BIOS (как правило, более старые устройства). Замените
X
на букву, которая используется в вашем случае:Окно терминала grub-mkconfig -o /boot/grub/grub.cfggrub-install --target=i386-pc /dev/sdXНапример:
Окно терминала grub-mkconfig -o /boot/grub/grub.cfggrub-install --target=i386-pc /dev/sdaДля систем с UEFI (как правила, более новые устройства):
Окно терминала grub-mkconfig -o /boot/grub/grub.cfggrub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUBПосле названия блочного устройства не должно идти номера раздела!
grub-install
применяется не к разделу, а ко всему диску:/dev/sda
Верно/dev/sda1
Неверно
-
Перезагрузите систему
Окно терминала reboot
grub rescue>
В этом случае будем использовать загрузочную флешку (livecd
). Хотя в редких
случаях можно восстановить систему и без неё, проще сделать это при помощи
livecd
. В инструкции будет использоваться загрузочный образ Arch
Linux, также известный как archiso
. Можно
также использовать загрузочные образы других дистрибутивов.
-
Зайдите в BIOS/UEFI и измените порядок загрузки так, чтобы загрузочная флешка имела наивысший приоритет
Этот шаг сильно зависит от устройства, так что дать конкретные инструкции невозможно.
-
Примонтируйте необходимые разделы
Здесь вновь многое зависит от вашего устройства, поэтому приведу несколько примеров:
Окно терминала mount /dev/sda1 /boot/efimount /dev/sda2 /Если используется SSD:
Окно терминала mount /dev/nvme0n1p1 /mnt/boot/efimount /dev/nvme0n1p3 /mnt -
Смените корень (
chroot
)Окно терминала arch-chroot /mnt -
Переустановите GRUB
Для систем с BIOS (как правило, более старые устройства). Замените
X
на букву, которая используется в вашем случае:Окно терминала grub-mkconfig -o /boot/grub/grub.cfggrub-install --target=i386-pc /dev/sdXНапример:
Окно терминала grub-mkconfig -o /boot/grub/grub.cfggrub-install --target=i386-pc /dev/sdaДля систем с UEFI (как правила, более новые устройства):
Окно терминала grub-mkconfig -o /boot/grub/grub.cfggrub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUBПосле названия блочного устройства не должно идти номера раздела!
grub-install
применяется не к разделу, а ко всему диску:/dev/sda
Верно/dev/sda1
Неверно
-
Перезагрузите систему
Окно терминала exit # Или Ctrl+D, выход из arch-chrootrebootНе забудьте отсоединить загрузочный носитель!