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

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

В этой статье мы детально разберем алгоритм действий для систем с BIOS и UEFI, рассмотрим типичные ошибки и способы их устранения. Вы узнаете, как идентифицировать корневой раздел, правильно настроить окружение chroot и применить необходимые команды для реинсталляции GRUB. Даже если вы столкнулись с ситуацией, когда система не видит загрузочный раздел, следование инструкциям поможет вернуть работоспособность серверу или рабочей станции.

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

Первым шагом является определение характера неисправности. Если при включении компьютера появляется меню GRUB, но загрузка останавливается на этапе выбора ядра или логотипа системы, проблема может крыться в повреждении файлов ядра Linux или конфигурации initramfs. В случае, когда экран остается черным или выводится сообщение error: no such partition, скорее всего, поврежден сам загрузочный сектор или потеряны ссылки на разделы.

Для начала работ необходимо загрузиться с внешнего носителя. Это может быть LiveUSB, созданный из ISO-образа Astra Linux, или любой другой дистрибутив на базе Debian, так как структура пакетов и утилит в них схожа. После загрузки в Live-режиме откройте терминал. Первичная задача — убедиться, что система видит ваш жесткий диск и разделы на нем.

  • 🔍 Используйте команду lsblk или fdisk -l для просмотра списка всех подключенных накопителей и их разделов.
  • 💾 Идентифицируйте корневой раздел системы (обычно он имеет файловую систему ext4) и раздел /boot/efi, если используется UEFI.
  • 🔌 Проверьте целостность файловой системы с помощью fsck, если есть подозрения на логические ошибки диска.

Важно не перепутать разделы, особенно если в системе несколько жестких дисков. Ошибка в выборе целевого диска для установки загрузчика может привести к потере данных на другом накопителе. Внимательно изучите размеры разделов и их метки, чтобы точно определить, где расположена ваша Astra Linux.

📊 Какой тип интерфейса используется в вашей системе?
  • BIOS (Legacy)
  • UEFI
  • Не знаю / Не уверен
  • Использую загрузчик с флешки

Монтирование разделов и подготовка chroot

Ключевым этапом восстановления является создание правильного окружения для работы с установленной системой. Механизм chroot (change root) позволяет запустить оболочку от имени корневой директории смонтированного раздела, фактически "перемещая" работающую Live-систему внутрь поврежденной установки. Это дает доступ к конфигурационным файлам и утилитам именно той системы, которую нужно восстановить.

Начните с монтирования корневого раздела. Предположим, что в предыдущем шаге вы выяснили, что корень системы находится на /dev/sda2. Выполните команду монтирования в точку /mnt. Если структура разделов сложная и есть отдельные разделы для /boot, /home или /var, их также необходимо смонтировать в соответствующие подкаталоги внутри /mnt, хотя для восстановления GRUB часто достаточно только корня и EFI-раздела.

mount /dev/sda2 /mnt

Если ваша система использует UEFI, обязательно смонтируйте EFI-раздел (обычно FAT32) в директорию /mnt/boot/efi или /mnt/efi, в зависимости от структуры вашей Astra Linux. Без этого шага команды обновления загрузчика не смогут записать файлы загрузки в правильное место, и система снова не запустится.

☑️ Проверка перед chroot

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

Далее необходимо пробросить системные каталоги /dev, /proc и /sys из Live-системы в смонтированное окружение. Это обеспечит работу утилит внутри chroot, позволяя им взаимодействовать с оборудованием и ядром хост-системы.

mount --bind /dev /mnt/dev

mount --bind /proc /mnt/proc

mount --bind /sys /mnt/sys

Теперь можно перейти в окружение восстановляемой системы. Команда chroot изменит корневую директорию для текущей оболочки.

chroot /mnt

После выполнения этой команды вы находитесь внутри своей установленной Astra Linux. Проверьте, что команды ls и uname работают корректно и отображают данные вашей системы, а не LiveCD.

Восстановление GRUB в системах с BIOS

Для компьютеров с классическим BIOS загрузчик записывается в Master Boot Record (MBR) диска. Процесс восстановления в этом случае наиболее прост и требует выполнения всего одной команды, если окружение chroot подготовлено верно. Вам необходимо знать имя устройства диска (например, /dev/sda), а не конкретного раздела (например, /dev/sda1).

Используйте утилиту grub-install для записи загрузочного кода. Убедитесь, что вы указываете именно диск, а не раздел. Если указать раздел, команда выполнится без ошибок, но система загружаться не будет, так как код будет записан в начало раздела, а не в MBR.

grub-install /dev/sda

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

update-grub

⚠️ Внимание: Если команда grub-install выдает ошибку, связанную с отсутствием поддержки файловых систем, убедитесь, что в Live-системе установлены пакеты grub-pc и grub2-common. В редких случаях может потребоваться переустановка этих пакетов внутри chroot-окружения.

Процесс генерации конфигурации автоматически просканирует диски, найдет ядра Linux и создаст меню. Вы увидите список найденных образов, включая Recovery Mode. Если в списке нет ожидаемых записей, проверьте наличие файлов ядра в каталоге /boot.

Что делать, если grub-install не видит диск?

Если утилита не находит диск, проверьте, не используется ли RAID-массив или LVM. В таких случаях может потребоваться предварительное сканирование массивов командой mdadm --assemble --scan или активация LVM через vgchange -ay.

Настройка загрузчика для UEFI систем

Современные компьютеры используют интерфейс UEFI, который работает иначе, чем BIOS. Здесь загрузчик представляет собой файл .efi, расположенный в специальном разделе с файловой системой FAT32. Для Astra Linux этот файл обычно называется grubx64.efi и находится по пути /boot/efi/EFI/debian/ или /boot/efi/EFI/astra/.

При восстановлении в UEFI-системах критически важно правильно указать путь к EFI-разделу. Если вы смонтировали его в /boot/efi внутри chroot, команда установки должна это учитывать. Часто используется флаг --target для явного указания архитектуры.

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

Параметр --bootloader-id задает имя записи в NVRAM материнской платы. После выполнения команды рекомендуется проверить содержимое EFI-раздела. Там должна появиться новая папка с именем, указанным в параметре, содержащая файлы загрузчика.

  • 📂 Проверьте наличие файла grubx64.efi в созданной директории.
  • ⚙️ Убедитесь, что в BIOS/UEFI настройках в приоритете загрузки стоит именно "AstraLinux" или "debian" (в зависимости от дистрибутива).
  • 🔄 При необходимости используйте efibootmgr для управления порядком загрузки прямо из консоли.

Не забудьте снова запустить update-grub после установки файлов в EFI-раздел. Это обновит конфигурацию и убедится, что все ссылки на ядра актуальны. В UEFI-среде ошибки часто связаны с Secure Boot. Если система отказывается загружать восстановленный GRUB, попробуйте временно отключить Secure Boot в настройках BIOS.

💡

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

Решение типичных ошибок и конфликтов

Даже при точном следовании инструкциям могут возникнуть специфические ошибки. Одна из самых распространенных — error: cannot find GRUB directory /boot/grub. Это означает, что структура каталогов нарушена или раздел /boot не смонтирован. В Astra Linux с раздельным разделом /boot его обязательно нужно монтировать отдельно перед запуском chroot.

Другая частая проблема связана с файловой системой. Если раздел был некорректно размонтирован, он может помечаться как "грязный" и монтироваться только в режиме чтения. В этом случае grub-install не сможет записать файлы. Используйте fsck для исправления ошибок файловой системы перед попыткой восстановления.

Ошибка Возможная причина Метод решения
grub-probe: error: failed to get canonical path Не смонтированы виртуальные ФС Выполнить mount --bind для /dev, /proc, /sys
efivarfs is not mounted Отсутствует доступ к NVRAM в UEFI Смонтировать efivarfs: mount -t efivarfs efivarfs /sys/firmware/efi/efivars
cannot open /dev/sda Раздел занят или заблокирован Проверить процессы fuser -v /dev/sda* и остановить их

Также стоит обратить внимание на сообщения о нехватке места. Раздел /boot часто имеет небольшой объем (около 500 Мб - 1 Гб). Если там накопилось много старых ядер, установка новых файлов загрузчика может быть невозможна. В таком случае внутри chroot удалите старые ненужные ядра командой apt autoremove или вручную, освободив место.

⚠️ Внимание: Удаление файлов ядра вручную (vmlinuz-... и initrd.img-...) без удаления соответствующих пакетов через apt может привести к рассинхронизации базы пакетов. Будьте предельно осторожны и удаляйте только те версии, которые точно не используются.

Финальная проверка и запуск системы

После выполнения всех процедур необходимо корректно завершить работу в среде восстановления. Выйдите из окружения chroot командой exit. Затем последовательно размонтируйте все созданные точки монтирования в обратном порядке: сначала вложенные каталоги (/boot/efi, /boot), затем корень (/mnt), и наконец системные каталоги.

exit

umount /mnt/boot/efi

umount /mnt/boot

umount /mnt/dev

umount /mnt/proc

umount /mnt/sys

umount /mnt

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

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

💡

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

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

Если система загружается до этапа ввода пароля или в recovery mode, можно попробовать выполнить grub-install и update-grub прямо из работающей системы с правами root. Однако, если поврежден сам загрузочный сектор, этот метод не сработает, и внешний носитель обязателен.

Что делать, если после восстановления GRUB не видно Windows?

Утилита os-prober отвечает за поиск других ОС. Убедитесь, что пакет os-prober установлен, а раздел с Windows размонтирован или смонтирован. Иногда требуется вручную добавить запись в файл конфигурации или запустить update-grub повторно после монтирования раздела Windows.

Безопасно ли использовать команды из инструкций для Ubuntu на Astra Linux?

Astra Linux основана на Debian, поэтому большинство команд идентичны. Однако пути к некоторым конфигурационным файлам и имена пакетов могут отличаться. Всегда проверяйте актуальность команд для конкретной версии Astra Linux (Smolensk или Common Edition).

Как узнать, какая версия GRUB установлена в системе?

Внутри работающей системы или chroot-окружения выполните команду grub-install --version. Она покажет установленную версию загрузчика. Также информацию можно найти в логах пакета или через dpkg -l | grep grub.