Ситуация, когда операционная система Astra Linux перестает загружаться и выдает ошибку вроде "grub rescue>" или просто мигающий курсор, часто вызывает панику у администраторов. Это может произойти после неудачного обновления ядра, изменения структуры разделов диска или, что случается чаще всего, после установки второй операционной системы, например Windows, которая перезаписывает главную загрузочную запись. Однако GRUB (GRand Unified Bootloader) является достаточно гибким инструментом, и его конфигурацию можно вернуть в рабочее состояние без полной переу ОС.

Для успешного выполнения процедуры восстановления вам потребуется загрузочный носитель с дистрибутивом Astra Linux той же версии (или максимально близкой), что установлена на жестком диске. Либо можно использовать любой LiveCD на базе Debian, так как механизмы работы с загрузчиком в этих системах идентичны. Важно понимать, что все действия будут производиться в режиме реального времени с внешнего носителя, а не с основного диска, что требует внимательности при выборе дисковых устройств.

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

Диагностика проблемы и подготовка окружения

Первым шагом перед любыми активными действиями является точное определение текущей конфигурации дисков. Часто пользователи пытаются восстановить GRUB не на том диске, особенно если в системе их несколько. Загрузившись с LiveUSB, необходимо открыть терминал и выполнить команду lsblk или fdisk -l, чтобы увидеть список всех подключенных накопителей и их разделов.

Вам нужно идентифицировать раздел, где установлена сама Astra Linux, и, что крайне важно, раздел EFI (если используется UEFI) или MBR (для Legacy BIOS). Обычно системный раздел имеет файловую систему ext4, а загрузочный — fat32. Не перепутайте их, иначе запись загрузчика пройдет успешно, но система так и не запустится.

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

Определите тип вашей прошивки: UEFI или BIOS. Это фундаментально меняет подход к делу. В случае UEFI загрузчик хранится в виде файлов на EFI-разделе, а в BIOS — в виде кода в первых секторах диска. Для проверки можно использовать команду [ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS".

📊 Какой интерфейс firmware у вашего сервера или ПК?
  • UEFI (современный стандарт)
  • Legacy BIOS (старый стандарт)
  • Не знаю, угадать сложно
  • Использую виртуальную машину

Монтирование разделов для работы с загрузчиком

После того как вы определили, какой раздел соответствует корневой директории (/) вашей установленной системы, его необходимо примонтировать в временную точку. Допустим, ваш корень находится на /dev/sda2. Команда монтирования будет выглядеть как mount /dev/sda2 /mnt. Это создаст мост между вашей Live-средой и файлами поврежденной системы.

Если вы работаете с UEFI-системой, следующим критически важным шагом является монтирование EFI-раздела. Обычно он имеет метку ESP и файловую систему FAT32. Его нужно примонтировать по пути /mnt/boot/efi (или /mnt/efi, в зависимости от вашей структуры). Если папка efi внутри /boot отсутствует, её необходимо создать командой mkdir -p /mnt/boot/efi.

  • 📂 Смонтируйте корневой раздел: mount /dev/sdXY /mnt (где X — буква диска, Y — номер раздела).
  • 📂 Смонтируйте EFI-раздел (для UEFI): mount /dev/sdXZ /mnt/boot/efi.
  • 📂 Смонтируйте виртуальные файловые системы: mount --bind /dev /mnt/dev, mount --bind /proc /mnt/proc, mount --bind /sys /mnt/sys.

Для полноценной работы инструментов восстановления необходимо, чтобы Live-система "видела" устройства и процессы установленной Astra Linux. Поэтому мы привязываем системные директории /dev, /proc и /sys к смонтированному корню. Без этого шага команда update-grub может не найти диски или завершиться ошибкой.

☑️ Проверка перед монтированием

Выполнено: 0 / 4

Переход в среду chroot и настройка сети

Теперь, когда все разделы примонтированы, мы можем перейти в окружение установленной системы с помощью утилиты chroot. Это позволит нам выполнять команды так, как если бы мы загрузились с жесткого диска, но с работающим ядром LiveUSB. Введите команду chroot /mnt. После этого ваш терминал изменит промпт, указывая на то, что вы находитесь внутри корневой файловой системы Astra.

В некоторых случаях для корректной работы скриптов обновления GRUB может потребоваться активное сетевое соединение, особенно если система пытается проверить подписи пакетов или обновить списки репозиториев. Убедитесь, что в файле /etc/resolv.conf прописаны корректные DNS-серверы. Можно временно скопировать файл из Live-системы: cp /etc/resolv.conf /etc/resolv.conf.bak и затем cp /etc/resolv.conf /mnt/etc/resolv.conf (до входа в chroot) или просто прописать Google DNS внутри chroot.

Находясь в среде chroot, имеет смысл проверить целостность пакетного менеджера dpkg и apt. Иногда проблема с загрузчиком является лишь симптомом более глубоких проблем с файловой системой или пакетами. Выполнение команды apt update поможет понять, доступен ли репозиторий и есть ли прерванные установки.

⚠️ Внимание: Находясь в chroot, вы работаете с файлами на диске. Будьте осторожны с командами удаления или форматирования, так как пути теперь ведут к реальной системе, а не к временной Live-среде.

Установка и настройка GRUB для BIOS (Legacy)

Если ваша система использует старый добрый BIOS, то процесс восстановления сводится к записи загрузочного кода в Master Boot Record (MBR) диска. Команда grub-install принимает на вход имя устройства (например, /dev/sda), а не номер раздела (/dev/sda1). Указание раздела вместо диска является самой частой ошибкой новичков.

grub-install --target=i386-pc /dev/sda

После успешного выполнения установки бинарного кода загрузчика, необходимо сгенерировать конфигурационный файл grub.cfg. Именно в нем прописываются пути к ядрам и начальному образу RAMdisk. В Astra Linux, как и в Debian, за это отвечает утилита update-grub, которая является оберткой над grub-mkconfig.

update-grub

В процессе генерации конфигурации скрипт просканирует разделы, найдет установленные ядра Linux и добавит их в меню загрузки. Если вы используете Astra Linux Special Edition, убедитесь, что в выводе нет ошибок, связанных с модулями безопасности parsec или fly, хотя обычно они влияют только на runtime, а не на загрузку.

Что делать, если grub-install выдает ошибку "embedding is not possible"?

Эта ошибка возникает, когда загрузочный сектор слишком мал или зарезервированное пространство после MBR занято. В таких случаях часто помогает создание отдельного раздела под /boot или использование BIOS Boot Partition размером 1-2 МБ без файловой системы.

Восстановление загрузчика в среде UEFI

Для систем с UEFI процедура немного отличается, так как здесь загрузчик представляет собой файл grubx64.efi, который должен лежать в определенном месте на EFI-разделе. В Astra Linux стандартный путь — /boot/efi/EFI/debian/grubx64.efi или /boot/efi/EFI/astra/grubx64.efi. Команда установки должна указывать на EFI-раздел и путь к целевой директории.

grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=AstraLinux --recheck

Ключевой параметр здесь --bootloader-id. Он задает имя, под которым запись о загрузчике появится в NVRAM материнской платы (в списке загрузки BIOS). Если после восстановления система не видит Astra Linux в меню BIOS, возможно, запись не добавилась автоматически. В этом случае можно воспользоваться утилитой efibootmgr.

С помощью команды efibootmgr -c -d /dev/sda -p 1 -L "AstraLinux" -l \\EFI\\astra\\grubx64.efi можно вручную создать новую запись. Обратите внимание на двойные обратные слеши в пути к файлу — это требование синтаксиса EFI. Также убедитесь, что Secure Boot в BIOS настроен соответствующим образом, хотя Astra Linux обычно имеет подписанные загрузчики.

💡

Используйте команду efibootmgr -v для просмотра подробного списка всех загрузочных записей и их статусов. Это поможет понять, видит ли материнская плата ваш загрузчик.

Типичные ошибки и таблица соответствия команд

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

Симптом / Ошибка Возможная причина Решение
error: unknown filesystem GRUB не может прочитать раздел /boot Проверить fsck, пересмонтировать с правильным типом
failed to get canonical path Неверно смонтирован /dev или /proc Выполнить mount --bind для /dev, /proc, /sys
efivarfs is not mounted Попытка работы с UEFI без монтирования efivarfs Смонтировать efivarfs: mount -t efivarfs efivarfs /sys/firmware/efi/efivars
grub-probe: error: failed to get canonical path Проблемы с правами или путями в chroot Убедиться, что вы внутри chroot и пути абсолютные

Одной из частых проблем является ситуация, когда update-grub не находит другие операционные системы (например, Windows). Для исправления этого необходимо, чтобы в корневой системе был установлен пакет os-prober. После его установки (если он отсутствовал) нужно отредактировать файл /etc/default/grub, добавив строку GRUB_DISABLE_OS_PROBER=false, и снова запустить обновление конфигурации.

Также стоит обратить внимание на логи. Если команды выполняются, но результат не тот, который ожидается,查看 (проверьте) вывод dmesg или логи в /var/log/syslog (или journalctl внутри chroot, если возможно). Они могут указать на проблемы с оборудованием или целостностью файловой системы, которые блокируют нормальную работу загрузчика.

⚠️ Внимание: При работе с UEFI изменение порядка загрузки через efibootmgr может сделать систему невидимой для BIOS до ручного выбора загрузочного устройства в меню Boot Menu (обычно вызывается F12 или F11 при старте).

Завершение работ и проверка результата

После успешного выполнения команд grub-install и update-grub необходимо корректно выйти из среды chroot. Введите команду exit, чтобы вернуться в оболочку Live-системы. Затем следует размонтировать все созданные точки монтирования в обратном порядке: сначала системные (/mnt/dev, /mnt/proc, /mnt/sys), затем EFI-раздел и в самом конце корневой раздел.

umount /mnt/dev

umount /mnt/proc

umount /mnt/sys

umount /mnt/boot/efi

umount /mnt

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

💡

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

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

Можно ли восстановить GRUB без LiveUSB, если есть доступ к консоли recovery?

Да, если в меню GRUB сохранилась строка "Advanced options" или режим восстановления (Recovery Mode), можно попытаться загрузиться в него. Однако, если поврежден сам файл ядра или модули GRUB, этот способ не сработает, и LiveUSB все равно потребуется.

Что делать, если после восстановления GRUB перестала загружаться Windows?

Скорее всего, при генерации конфигурации GRUB не был найден пакет os-prober или был заблокирован Secure Boot. Проверьте наличие файла /etc/default/grub и параметра GRUB_DISABLE_OS_PROBER. Также убедитесь, что раздел с Windows примонтирован или доступен для сканирования.

Какая версия GRUB используется в Astra Linux 1.7?

В актуальных версиях Astra Linux (Smolensk 1.7 и выше) используется GRUB 2 (пакет grub-pc для BIOS и grub-efi для UEFI). Синтаксис команд и структура файлов полностью соответствуют стандартам Debian 10/11.

Нужно ли форматировать EFI раздел при переустановке загрузчика?

Нет, форматировать EFI-раздел категорически не нужно, если там нет критических ошибок файловой системы. Это удалит загрузчики всех установленных ОС. Достаточно просто перезаписать файлы загрузчика GRUB.