Ситуация, когда операционная система отказывается запускаться, часто застает администратора врасплох. Вместо привычного экрана входа вы видите мигающий курсор или сообщение об отсутствии загрузочного устройства. В среде Astra Linux это может быть вызвано обновлением ядра, повреждением файловой системы или ошибочными действиями пользователя при разметке диска.
Восстановление GRUB (Grand Unified Bootloader) — стандартная процедура, которая требует аккуратности и понимания структуры разделов. Ошибки на этом этапе могут привести к полной неработоспособности сервера или рабочей станции, поэтому важно действовать последовательно. Мы рассмотрим методы реаниляции системы как для классических BIOS, так и для современных UEFI-конфигураций.
Для успешного завершения операции вам понадобится установочный образ Astra Linux или любой другой дистрибутив на базе Debian, смонтированный в режиме LiveCD. Это позволит получить доступ к файловой системе поврежденного раздела и выполнить необходимые команды для пересборки конфигурации загрузки. Не спешите переустанавливать систему — данные, скорее всего, целы.
Диагностика проблемы и подготовка среды
Прежде чем вводить команды, необходимо точно определить характер сбоя. Часто проблема кроется не в самом загрузчике, а в повреждении файловой системы или неверных настройках BIOS. Если при включении компьютера вы видите логотип производителя, а затем черный экран, это указывает на сбой передачи управления ядру. В случае появления надписи "GRUB rescue>" ситуация менее критична, так как минимальная оболочка загрузчика сохранилась.
Для начала работ подготовьте загрузочную флешку с дистрибутивом Astra Linux. Загрузитесь с нее и выберите режим "Live-сессия" или "Try without installing". Это позволит запустить операциную систему в оперативной памяти, оставив жесткий диск доступным для манипуляций. Убедитесь, что сетевое подключение стабильно, если потребуется подтянуть пакеты из репозиториев.
Откройте терминал и выполните команду lsblk или fdisk -l для просмотра структуры дисков. Вам нужно идентифицировать корневой раздел вашей основной системы и, если он существует, отдельный раздел /boot или /boot/efi.
- 🔍 Определите устройство корневой системы (например,
/dev/sda2). - 💾 Найдите раздел EFI, если система использует UEFI (обычно FAT32, около 100-500 Мб).
- 📝 Запишите названия устройств, чтобы не перепутать их при монтировании.
⚠️ Внимание: Будьте предельно осторожны при выборе устройства. Ошибка в одну букву (например,
/dev/sdaвместо/dev/sdb) может привести к полной потере данных на другом диске.
Монтирование разделов и подготовка chroot
Следующий критический этап — правильное монтирование файловой системы поврежденной ОС в каталог /mnt. Это создаст точку входа, через которую мы сможем работать с системными файлами как с запущенной системой. Процесс требует строгой последовательности, особенно если у вас сложная структура разделов с LVM или шифрованием.
Сначала смонтируйте корневой раздел. Если у вас есть отдельный раздел для /boot, его нужно будет смонтировать отдельно после корня. Для систем с UEFI обязателен монтаж EFI-раздела в соответствующую директорию. Используйте команду mount с указанием типа файловой системы, если автоматическое определение не сработает.
После монтирования основных разделов необходимо привязать системные директории /dev, /proc и /sys. Без этого шага команды внутри окружения chroot не смогут взаимодействовать с ядром Live-сессии и оборудованием. Это стандартная процедура для любой Linux-системы при проведении восстановительных работ.
mount /dev/sda2 /mnt
mount --bind /dev /mnt/dev
mount --bind /proc /mnt/proc
mount --bind /sys /mnt/sys
Если вы используете UEFI, не забудьте смонтировать EFI-раздел:
mount /dev/sda1 /mnt/boot/efi
⚠️ Внимание: В системах с шифрованным корневым разделом (LUKS) перед монтированием необходимо выполнить команду
cryptsetup luksOpenдля раскрытия контейнера.
Теперь можно переходить в окружение chroot. Эта команда изменит корневую директорию для текущего сеанса терминала с LiveCD на смонтированный раздел жесткого диска. Фактически, вы "переселяетесь" внутрь неработающей системы.
chroot /mnt
После выполнения этой команды ваш терминал будет работать в контексте установленной Astra Linux. Вы можете проверить это, введя uname -r — должно отобразиться ядро установленной системы, а не LiveCD.
Восстановление GRUB в режиме BIOS (Legacy)
Для классических систем с BIOS процесс восстановления наиболее прост и понятен. Загрузчик записывается в Master Boot Record (MBR) диска, а не в раздел. Поэтому ключевой задачей является правильная переустановка пакетов и запись загрузочного кода на диск.
Сначала убедитесь, что пакеты grub-pc и grub2-common установлены и обновлены. В среде Astra Linux это базовые компоненты. Если файлы конфигурации повреждены, их можно перегенерировать. Проверьте наличие файла /boot/grub/grub.cfg.
Для восстановления выполните команду установки GRUB на диск (не на раздел, а именно на диск, например /dev/sda):
grub-install /dev/sda
Затем обновите конфигурационный файл, чтобы в меню появились все доступные ядра и операциные системы:
update-grub
Эта команда просканирует диски, найдет ядра Linux и создаст новое меню загрузки. Если ошибок не возникло, можно выходить из chroot и перезагружаться.
- ✅ Команда
grub-installзаписывает загрузочный код в MBR. - ✅ Команда
update-grubгенерирует файл менюgrub.cfg. - ✅ Убедитесь, что в BIOS в приоритете загрузки стоит ваш жесткий диск.
В режиме BIOS загрузчик устанавливается на устройство (диск), а не на раздел. Указание раздела (например, /dev/sda1) приведет к ошибке или некорректной работе.
Восстановление загрузчика в среде UEFI
Современные компьютеры используют интерфейс UEFI, который работает иначе, чем BIOS. Здесь загрузчик представляет собой файл .efi, расположенный на FAT32-разделе. В Astra Linux основной файл загрузчика обычно находится по пути /boot/efi/EFI/debian/grubx64.efi или в папке astra.
При работе в UEFI важно, чтобы раздел EFI был смонтирован в /boot/efi (или /boot, в зависимости от дистрибутива) до выполнения команды установки. Пакет grub-efi-amd64 должен быть установлен. Если он отсутствует, его нужно установить через apt, предварительно настроив сеть.
Процесс установки выглядит так:
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=AstraLinux
Параметр --bootloader-id задает имя, которое будет отображаться в меню UEFI материнской платы. После установки необходимо снова запустить update-grub для обновления конфигурации.
Иногда случается, что NVRAM материнской платы "забывает" путь к загрузчику. В этом случае может потребоваться создание файла bootx64.efi в стандартной папке EFI или ручное добавление записи через настройки BIOS (Boot Option).
| Параметр | Описание | Пример значения |
|---|---|---|
| target | Архитектура загрузчика | x86_64-efi |
| efi-directory | Путь к смонтированному EFI разделу | /boot/efi |
| bootloader-id | Имя записи в UEFI | AstraLinux |
| reboot | Перезагрузка после установки (опционально) | true/false |
⚠️ Внимание: В UEFI-системах критически важно, чтобы EFI-раздел имел файловую систему FAT32. Использование ext4 или NTFS для этого раздела сделает загрузку невозможной.
- BIOS (Legacy)
- UEFI
- Не знаю / Не уверен
- Использую Dual Boot
Решение частых ошибок и проблем
Даже при точном следовании инструкции могут возникнуть ошибки. Одна из самых распространенных — "failed to get canonical path of `aufs`" или ошибки, связанные с os-prober. Часто они возникают из-за того, что в среде chroot отсутствуют необходимые модули ядра или не смонтированы псевдо-файловые системы.
Если grub-install выдает ошибку о том, что устройство не является частью файловой системы, проверьте, правильно ли смонтирован корневой раздел. Также убедитесь, что вы не пытаетесь установить GRUB на раздел с файловой системой LVM без предварительной активации томов командой vgchange -ay.
В случае проблем с os-prober (когда не видна Windows в dual-boot), проверьте, смонтирован ли раздел с Windows. Иногда требуется вручную добавить строку GRUB_DISABLE_OS_PROBER=false в файл /etc/default/grub перед повторным запуском update-grub.
Что делать, если grub-install возвращает ошибку "efivarfs not mounted"?
Необходимо смонтировать специальную файловую систему efivarfs командой: mount -t efivarfs efivarfs /sys/firmware/efi/efivars. Без этого установка в режиме UEFI невозможна.
Еще одна частая проблема — несовместимость версий GRUB. Если вы восстанавливаете систему с помощью LiveCD другого дистрибутива, версии загрузчика могут конфликтовать. В таком случае лучше использовать LiveCD именно той версии Astra Linux, которая установлена, или той, что ближе по году выпуска.
- 🛠 Проверьте логи
dmesgили/var/log/syslogвнутри chroot для поиска причин сбоя. - 💾 Убедитесь, что на диске есть свободное место для записи новых файлов конфигурации.
- 🔄 Попробуйте переустановить пакет
grub-efi-amd64-signedесли используется Secure Boot.
Финальная проверка и перезагрузка
После успешного выполнения всех команд необходимо правильно завершить работу в среде восстановления. Выход из chroot осуществляется командой exit. После этого следует размонтировать все созданные точки монтирования в обратном порядке, чтобы избежать повреждения данных.
Размонтирование производится командой umount. Сначала размонтируйте вложенные директории (/dev, /proc, /sys, /boot/efi), и только в конце — корневой раздел /mnt. Если вы забудете размонтировать разделы, система может предупредить об этом при выключении или, в худшем случае, повредить файловую систему.
exit
umount /mnt/dev
umount /mnt/proc
umount /mnt/sys
umount /mnt/boot/efi
umount /mnt
Теперь можно извлечь загрузочную флешку и выполнить перезагрузку командой reboot. Если все прошло успешно, появится меню GRUB с выбором ядра Astra Linux. Система должна загрузиться штатно.
☑️ Финальная проверка перед перезагрузкой
Если система загрузилась, рекомендуется сразу же выполнить полное обновление системы и проверить целостность файловых систем с помощью fsck в режиме single user, чтобы исключить скрытые повреждения.
Часто задаваемые вопросы (FAQ)
Можно ли восстановить загрузчик без LiveCD, используя только GRUB Rescue?
Да, это возможно, но требует знания точных номеров блоков ядра и initrd. В режиме rescue доступны только базовые команды. Вам нужно вручную указать путь к ядру (linux) и начальному образу (initrd), а затем выполнить boot. Однако этот метод сложен и не гарантирует успех при повреждении файловой системы.
Что делать, если после восстановления система пишет "Secure Boot violation"?
Это означает, что подпись загрузчика не совпадает с ключами в BIOS. Вам нужно либо отключить Secure Boot в настройках UEFI, либо подписать загрузчик shim правильными ключами. В Astra Linux часто используется собственный ключ или требуется отключение проверки для сторонних ОС.
Нужно ли заново настраивать сеть после восстановления загрузчика?
Нет, восстановление загрузчика затрагивает только процесс старта системы. Конфигурация сети, пользователей и приложений остается неизменной, так как мы не затрагивали файлы внутри /etc или /home, а лишь восстанавливали механизм запуска ядра.
Как восстановить загрузчик, если диск находится в RAID-массиве?
Процедура аналогична, но grub-install нужно выполнять для каждого физического диска в массиве (например, и для /dev/sda, и для /dev/sdb), чтобы система могла загрузиться при отказе одного из них. Перед этим убедитесь, что массив собран (команда mdadm --assemble --scan).