Отказ системы от загрузки с сообщением grub rescue или мигающим курсором — частая проблема при использовании сложной разметки дисков. В среде Astra Linux с применением LVM (Logical Volume Manager) стандартные методы восстановления часто оказываются недостаточными из-за необходимости предварительной активации логических томов. Ошибка может возникнуть после сбоя питания, некорректного обновления ядра или изменения структуры разделов.

Главная сложность заключается в том, что загрузчик должен найти ядро операционной системы, которое физически расположено на логическом томе, скрытом за абстракцией групп томов. Если не выполнить сканирование метаданных и активацию томов перед установкой GRUB, команда установки может завершиться успешно, но система останется неработоспособной.

Подготовка к восстановлению

Перед началом работ убедитесь в наличии актуальной резервной копии важных данных. Ошибки при работе с таблицами разделов могут привести к безвозвратной потере информации. Для ремонта потребуется загрузочный носитель:

  • Установочный ISO-образ Astra Linux той же редакции и версии, что установлена на диске.
  • LiveCD с поддержкой утилит LVM и шифрования (если используется LUKS).

Загрузитесь с носителя в режиме Live и откройте терминал. Выполните команду lsblk, чтобы оценить текущую структуру дисков. Если автоматическая активация томов не произошла, вы увидите только физические диски без вложенных логических разделов.

Особенности работы с шифрованием

Если корневой раздел или /boot зашифрован через LUKS, процесс усложняется. Команды сканирования LVM не увидят логические тома до тех пор, пока не будет открыт зашифрованный контейнер. В этом случае сначала необходимо ввести пароль для разблокировки диска с помощью cryptsetup, и только затем переходить к активации томов.

Активация томов и монтирование файловой системы

Ключевой этап — ручная инициализация метаданных LVM. Выполните следующие команды для поиска и активации всех доступных групп томов:

sudo vgscan sudo vgchange -ay

После успешной активации логические тома появятся в дереве устройств. Теперь необходимо смонтировать корневую файловую систему во временную точку, например /mnt. Структура монтирования должна полностью соответствовать реальной архитектуре диска:

  1. Смонтируйте корневой том: mount /dev/mapper/vg-root /mnt (путь зависит от имени вашей группы томов).
  2. Если существует отдельный раздел /boot, смонтируйте его в /mnt/boot.
  3. Для систем UEFI обязательно смонтируйте EFI-системный раздел (ESP) в /mnt/boot/efi. Файловая система этого раздела должна быть FAT32.

Для корректной работы внутри будущего окружения chroot свяжите виртуальные файловые системы:

mount --bind /dev /mnt/dev mount --bind /proc /mnt/proc mount --bind /sys /mnt/sys

Также скопируйте файл конфигурации сети из Live-сессии в смонтированную систему, чтобы обеспечить доступ к DNS внутри chroot:

cp /etc/resolv.conf /mnt/etc/resolv.conf

Работа в окружении chroot

Перейдите в контекст восстановленной системы:

sudo chroot /mnt

Находясь внутри chroot, выполните диагностику перед переустановкой загрузчика:

  1. Проверка /etc/fstab: Убедитесь, что UUID разделов совпадают с реальными значениями (проверить можно командой blkid). Неверные пути к устройствам LVM предотвратят нормальную загрузку.
  2. Генерация initramfs: Выполните update-initramfs -u. Это гарантирует, что образ начального загрузчика содержит необходимые модули для поддержки LVM и файловой системы корня. Отсутствие этих модулей приведет к падению системы в shell initramfs сразу после этапа GRUB.
  3. Проверка конфигурации GRUB: Убедитесь, что файл /boot/grub/grub.cfg существует. Если он поврежден, его нужно перегенерировать.

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

Команда установки загрузчика отличается в зависимости от типа BIOS вашей системы.

Legacy BIOS

Укажите физическое устройство (диск), а не раздел:

grub-install /dev/sda update-grub

UEFI

Необходимо указать целевую архитектуру и путь к EFI-разделу. Убедитесь, что пакет efibootmgr установлен:

apt install efibootmgr grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=AstraLinux update-grub

При успешном выполнении вывод команд не должен содержать ошибок уровня ERROR. Обратите внимание, что параметр --bootloader-id определяет имя записи в NVRAM материнской платы.

Настройка порядка загрузки и проверка

После установки файлов загрузчика проверьте порядок загрузки в BIOS/UEFI. Запись AstraLinux должна стоять первой. Если система продолжает загружать старый загрузчик или уходит в меню выбора устройств, возможно, запись в NVRAM не активна или указан неверный путь к файлу shimx64.efi или grubx64.efi.

Если включена защита Secure Boot, убедитесь, что используются подписанные загрузчики. В Astra Linux строгая политика безопасности может блокировать загрузку модулей ядра с неподписанными цифровыми подписями, особенно после ручной установки драйверов.

Финальным шагом после успешной загрузки основной системы выполните:

update-initramfs -u -k all

Это обновит образы начальной загрузки для всех установленных ядер, предотвращая подобные проблемы в будущем.

Часто задаваемые вопросы

Почему grub-install сообщает об отсутствии устройства?

Обычно это происходит по двум причинам: указана конкретная партиция (например, /dev/sda1) вместо целого диска (/dev/sda) для Legacy BIOS, либо раздел EFI не смонтирован в правильную точку для UEFI. Также проверьте, выполнены ли команды активации LVM.

Нужно ли переустанавливать GRUB после каждого обновления ядра?

Нет. Обновление пакетов ядра и выполнение update-initramfs автоматически пересобирают конфигурацию GRUB. Переустановка самого загрузчика (grub-install) требуется только при повреждении MBR/GPT таблицы или изменении архитектуры дисков.

Как восстановить систему, если /boot зашифрован?

Сначала необходимо открыть зашифрованный контейнер через cryptsetup, затем активировать LVM-томы внутри него, и только после этого монтировать разделы и переходить в chroot. Без дешифровки доступ к файлам загрузчика невозможен.

Можно ли использовать LiveCD другого дистрибутива?

Желательно использовать образ той же версии Astra Linux или совместимый Debian-based дистрибутив. Использование сильно отличающихся версий может вызвать конфликты библиотек или отсутствие необходимых утилит в репозиториях live-системы.