Загрузчик может исчезнуть после установки второй системы, обновления прошивки, сбоя питания или ошибки при разметке. Симптомы разные: чёрный экран, приглашение grub rescue, строка grub> либо сразу загружается Windows. Паника здесь лишняя: почти всё чинится с live-USB за пятнадцать-двадцать минут, если действовать по шагам и не форматировать разделы.

Почему GRUB ломается

Типичные причины — установка Windows рядом с Linux, которая перезаписывает загрузочную запись, обновление прошивки, смена режима SATA или переразметка диска. Иногда виноват сбой питания в момент записи конфигурации. Реже встречается несовместимость Secure Boot с неподписанными модулями. Во всех случаях сначала сохраняйте данные, а уже потом экспериментируйте с загрузчиком.

Определите режим загрузки и разметку

Сначала выясните, UEFI или BIOS. В UEFI на диске есть раздел EFI с FAT32, а в прошивке — записи загрузки. В BIOS загрузчик живёт в MBR или в начале раздела. От этого зависит команда grub-install. Загрузитесь с установочной флешки в режиме live и посмотрите разметку. Проверка ниже показывает режим, в котором загрузилась флешка; наличие раздела EFI на диске подскажет режим установленной системы.

lsblk -f
sudo parted -l
[ -d /sys/firmware/efi ] && echo UEFI || echo BIOS
sudo efibootmgr -v

Смонтируйте корень и EFI-раздел

Найдите корневой раздел по метке и размеру. Для LVM активируйте тома, для Btrfs подключите субтом @. Затем смонтируйте EFI-раздел в /boot/efi: без него grub-install для UEFI не сработает. Если /boot вынесен отдельно, смонтируйте и его.

sudo vgchange -ay
sudo mount /dev/nvme0n1p2 /mnt
sudo mount /dev/nvme0n1p1 /mnt/boot/efi
# для Btrfs вместо второй строки: sudo mount -o subvol=@ /dev/nvme0n1p2 /mnt

Строка с комментарием нужна только для Btrfs: она заменяет обычное монтирование корня. Проверьте, что в /mnt/etc/fstab правильные UUID: после клонирования диска они меняются, и загрузка ломается снова.

Войдите в систему через chroot

Чтобы grub-install видел установленную систему, а не live-окружение, нужен chroot с проброшенными псевдофайловыми системами. Смонтируйте их, затем войдите в корень и проверьте fstab.

for d in dev dev/pts proc sys run; do sudo mount --bind /$d /mnt/$d; done
sudo chroot /mnt
mount -a
cat /etc/fstab

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

Внутри chroot переустановите загрузчик. Для UEFI укажите ESP и идентификатор загрузчика, для BIOS — диск целиком, без номера раздела. Затем пересоберите меню и initramfs. В Fedora вместо update-grub используется grub2-mkconfig с путём к grub.cfg, а initramfs пересобирает dracut -f.

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu --recheck
grub-install /dev/nvme0n1
update-grub
update-initramfs -u -k all

Вторая строка относится к BIOS-системам, первая — к UEFI. Не выполняйте обе подряд без понимания режима: можно создать лишнюю запись, которая потом будет мешать.

Если видно приглашение grub rescue

В этом режиме загрузчик нашёл свой код, но потерял модули или конфигурацию. Найдите раздел с каталогом /boot/grub через ls, задайте root и prefix, загрузите модуль normal. Это временный вход: после загрузки сразу переустановите GRUB нормально.

ls (hd0,gpt2)/boot/grub
set root=(hd0,gpt2)
set prefix=(hd0,gpt2)/boot/grub
insmod normal
normal

Ручная загрузка из grub>

Если появилась строка grub>, модули загрузились, но меню не нашлось. Найдите ядро и initrd через ls, затем передайте ядру корневой раздел и загрузитесь. Имена файлов зависят от версии ядра — подставьте свои. Этот способ даёт временный доступ, чтобы починить систему изнутри.

ls (hd0,gpt2)/boot
linux (hd0,gpt2)/boot/vmlinuz-<version> root=/dev/nvme0n1p2 ro
initrd (hd0,gpt2)/boot/initrd.img-<version>
boot

Если grub-install не видит EFI

Проверьте, смонтирован ли ESP именно в /boot/efi и виден ли он внутри chroot. В выводе grub-install должна быть строка про установку в EFI. Если система загрузилась в BIOS-режиме, а диск размечен для UEFI, цель x86_64-efi не сработает: загрузите флешку в UEFI-режиме. Иногда мешает старая запись в NVRAM — её можно удалить через efibootmgr -b с номером и ключом -B, но только после создания рабочей записи.

Если меню пустое или нет нужной системы

Иногда загрузчик работает, но в меню только одна строка или отсутствует вторая система. Проверьте, что os-prober установлен и включён, а разделы второй системы доступны. В Debian и Ubuntu параметр GRUB_DISABLE_OS_PROBER в /etc/default/grub должен быть false. После правки выполните update-grub и перезагрузку. Если система попала в emergency mode, ищите ошибку в fstab: сравните UUID из blkid с тем, что записан в файле.

Проверка после загрузки

Убедитесь, что меню видит все ядра и вторую систему. В UEFI посмотрите порядок загрузки: иногда запись Ubuntu есть, но стоит после Windows. Команда efibootmgr -o задаёт порядок, а efibootmgr -c создаёт новую запись. Не удаляйте чужие записи, пока не убедитесь, что система стабильно грузится. Если загрузка всё равно идёт в Windows, проверьте порядок в efibootmgr и при необходимости задайте его заново. Иногда помогает загрузка с флешки в UEFI-режиме и повторный grub-install: в BIOS-режиме запись создастся в MBR и не появится в UEFI-меню.

sudo efibootmgr -v
sudo update-grub
sudo grub-install --target=x86_64-efi --efi-directory=/boot/efi --recheck
sudo reboot

Secure Boot и подписи

Secure Boot проверяет подпись загрузчика. Штатный GRUB из дистрибутива обычно подписан, поэтому восстановление не требует отключения защиты. Проблемы начинаются, если вы собирали загрузчик вручную или ставили сторонние модули: тогда подпишите файлы, зарегистрировав ключ через MOK, либо временно отключите Secure Boot в прошивке. После восстановления включите защиту обратно и проверьте загрузку.

Профилактика

Держите под рукой live-USB и копию системных конфигов. После обновления ядра проверяйте, что меню GRUB собирается без ошибок, а после клонирования диска сразу правьте UUID в fstab. Простые привычки экономят часы восстановления.

  • Сохраните вывод efibootmgr -v и содержимое fstab.
  • Не меняйте UUID без обновления fstab.
  • Проверяйте меню после установки второй системы.
  • Храните резервную копию /etc на внешнем носителе.

Чек-лист восстановления

  • Режим загрузки определён до запуска grub-install.
  • Корень, /boot и ESP смонтированы в /mnt.
  • fstab содержит актуальные UUID разделов.
  • Меню GRUB пересобрано, initramfs обновлён.
  • Порядок загрузки в UEFI проверен через efibootmgr.

Итог

Восстановление GRUB сводится к четырём шагам: загрузиться с live-USB, смонтировать систему, войти в chroot и переустановить загрузчик. Главное — не спешить с форматированием и проверить UUID. Если после перезагрузки меню появилось, но система не стартует, ищите причину в fstab и initramfs, а не в самом загрузчике. Сохраните рабочую флешку: она ещё пригодится при следующем крупном обновлении.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 0 / 5. Количество оценок: 0

Оценок пока нет. Поставьте оценку первым.

Поделиться: Telegram ВКонтакте