Система Astra Linux является одним из самых надежных решений для корпоративного сектора и государственных учреждений, однако сбои в работе загрузчика GRUB могут случиться даже с ним. Ошибки при обновлении ядра, повреждение разделов или некорректное изменение конфигурации часто приводят к тому, что операционная система перестает загружаться, выводя пользователя в консоль grub rescue или на экран с ошибкой.
В такой ситуации паника — худший помощник, ведь проблема решается стандартными инструментами, доступными на установочном носителе. Использование LiveCD позволяет запустить операционную систему во временном режиме, не затрагивая установленную на жестком диске, и выполнить необходимые манипуляции с файловой системой и загрузочными секторами. Главное — действовать последовательно и точно следовать алгоритму.
Подготовка окружения и диагностика разделов
Первым шагом является запуск системы с флешки или диска Astra Linux Live. В меню загрузки выберите пункт «Запуск в Live-режиме» или аналогичный, чтобы получить доступ к десктопу без установки. Как только система загрузится, откройте терминал и убедитесь, что у вас есть права суперпользователя, введя sudo -i и указав пароль (обычно он пустой или указан в документации к дистрибутиву).
Теперь необходимо определить, где именно находится ваша основная система. Используйте команду lsblk или fdisk -l, чтобы получить список всех подключенных дисков и разделов. Обратите внимание на размер разделов: обычно корневой раздел root занимает наибольшее пространство, а раздел EFI (если используется UEFI) имеет объем около 500 МБ и файловую систему FAT32.
Важно не перепутать разделы, так как запись загрузчика на неправильный диск может привести к потере данных на другой установленной системе. Если вы видите несколько дисков, например /dev/sda и /dev/sdb, внимательно сверьте их размеры с информацией из вашей BIOS/UEFI.
- 🔍 Проверьте наличие раздела с пометкой
bootилиespв выводе командыlsblk. - 📝 Запишите названия устройств (например,
/dev/sda1для корня и/dev/sda2для EFI) на листок. - ⚙️ Убедитесь, что разделы не смонтированы автоматически (посмотрите колонку
TYPEилиMOUNTPOINT).
⚠️ Внимание: Никогда не монтируйте разделы в корень
/системы LiveCD, если вы не уверены в своих действиях. Это может привести к перезаписи критических файлов временной системы.
Монтирование корневой и системных разделов
После того как вы определили нужные разделы, их необходимо подключить к файловой системе LiveCD, чтобы получить к ним доступ. Создайте точку монтирования для корневой системы, например, /mnt/astra, используя команду mkdir -p /mnt/astra. Затем выполните монтирование корневого раздела вашей системы в эту папку.
Если вы используете режим UEFI, что является стандартом для современных компьютеров, обязательно нужно смонтировать и раздел EFI в соответствующую директорию внутри смонтированного корня. Без этого система не сможет найти файлы загрузчика при перезагрузке. Команда монтирования EFI-раздела выглядит следующим образом.
mount /dev/sda2 /mnt/astra/boot/efi
Для систем с классическим загрузчиком BIOS достаточно только корневого раздела, но для надежности стоит проверить наличие папки /boot внутри смонтированной системы. Если она отсутствует или пуста, возможно, ваш root раздел был разделен на отдельные тома, и тогда нужно монтировать их все по аналогии.
- 📂 Создайте директорию:
mkdir -p /mnt/astra/boot/efi. - 🔗 Смонтируйте корень:
mount /dev/sdX1 /mnt/astra(замените X на ваш диск). - 🔌 Смонтируйте EFI:
mount /dev/sdX2 /mnt/astra/boot/efi.
☑️ Проверка состояния разделов
Подготовка окружения chroot
Для выполнения команд восстановления загрузчика необходимо «войти» в вашу установленную систему, не перезагружаясь. Эта процедура называется chroot (change root). Она позволяет LiveCD использовать файловую систему вашей системы как корневую для выполнения команд. Перед началом необходимо подключить системные каталоги, чтобы chroot имел доступ к сетевым интерфейсам и устройствам.
Выполните серию команд для монтирования виртуальных файловых систем proc, sys и dev в соответствующие директории внутри смонтированного корня. Это критически важный этап: без доступа к /dev и /proc утилита установки загрузчика не сможет найти диски или корректно определить структуру системы.
for i in /dev /dev/pts /proc /sys /run; do mount -B $i /mnt/astra$i; done
Теперь можно безопасно войти в среду вашей системы. Введите команду chroot /mnt/astra. Если все прошло успешно, приглашение командной строки изменится, показывая, что вы работаете внутри установленной Astra Linux, а не в Live-режиме. Теперь все команды будут выполняться именно в контексте вашей системы.
- 🔄 Проверьте доступ к сети внутри chroot, введя
ping -c 3 google.com. - 🔐 Убедитесь, что вы в режиме суперпользователя (должен быть знак
#в конце строки). - 📁 Перейдите в корень: команда
cd /должна работать без ошибок.
- Legacy BIOS
- UEFI (GPT)
- UEFI (MBR)
- Не знаю
Переустановка и обновление загрузчика GRUB
Самый ответственный момент — установка загрузчика GRUB на физический диск. Важно понимать разницу между установкой на раздел (например, /dev/sda1) и на весь диск (например, /dev/sda). Для корректной работы в большинстве случаев нужно писать загрузчик именно на начало диска, чтобы BIOS/UEFI мог его найти.
Если у вас система UEFI, используйте утилиту grub-install с указанием целевого устройства. Команда должна выглядеть так: grub-install /dev/sda. Обратите внимание, что указывается именно диск, а не раздел. После этого нужно сгенерировать новый файл конфигурации, чтобы загрузчик «увидел» установленные ядра.
grub-install /dev/sda
Для систем BIOS процесс аналогичен, но иногда требуется указать опцию --target=i386-pc. После установки загрузчика необходимо создать файл grub.cfg с актуальными параметрами загрузки. Команда update-grub (или grub-mkconfig -o /boot/grub/grub.cfg) просканирует систему, найдет все доступные ядра и добавит их в меню загрузки.
- 🛠️ Выполните установку:
grub-install /dev/sdX(где X — буква диска). - 📝 Обновите конфигурацию:
update-grubилиgrub-mkconfig -o /boot/grub/grub.cfg. - ✅ Проверьте вывод команды на наличие сообщений об ошибках.
⚠️ Внимание: Ошибка «No such device» при выполнении grub-install часто означает, что раздел EFI не был смонтирован в /boot/efi перед входом в chroot.
Что делать, если grub-install выдает ошибку?|Если вы видите ошибку «Could not find device», проверьте, что все разделы (особенно EFI) смонтированы в правильных точках. Убедитесь, что пакет grub-efi установлен в chroot, выполнив apt update && apt install grub-efi-amd64.-->
Проверка целостности файловой системы и откат
Прежде чем завершать работу, стоит убедиться, что файловая система на дисках не повреждена. Хотя мы работали с LiveCD, иногда ошибки на диске могут мешать корректной работе загрузчика. Используйте утилиту fsck для проверки разделов, но только если они не смонтированы. В нашем случае они смонтированы, поэтому проверку лучше проводить до входа в chroot, если есть подозрения на сбои.
Если вы используете разделы LVM или шифрование (dm-crypt), процесс может быть сложнее. В таком случае необходимо сначала активировать логические тома или расшифровать их. В Astra Linux часто используются стандартные схемы, но наличие кастомной настройки требует дополнительных шагов в скриптах восстановления.
После успешной установки загрузчика и обновления конфигурации необходимо корректно выйти из среды chroot и размонтировать все разделы. Это предотвратит повреждение данных при извлечении носителя. Используйте команду exit для выхода из chroot, а затем последовательно размонтируйте точки подключения.
Команда
Описание действия
Результат
exit
Выход из chroot окружения
Возврат в среду LiveCD
umount -R /mnt/astra
Рекурсивное размонтирование
Все разделы отключены
reboot
Перезагрузка системы
Попытка загрузки с диска
fdisk -l
Просмотр таблицы разделов
Подтверждение структуры
fsck для проверки разделов, но только если они не смонтированы. В нашем случае они смонтированы, поэтому проверку лучше проводить до входа в chroot, если есть подозрения на сбои.exit для выхода из chroot, а затем последовательно размонтируйте точки подключения.exitumount -R /mnt/astrarebootfdisk -l