Ситуация, когда после обновления системы или случайного изменения структуры разделов жесткого диска операционная система перестает загружаться, знакома многим администраторам. В случае с Astra Linux 1.6 вы можете столкнуться с экраном, где отображается лишь приглашение командной строки grub rescue>. Это означает, что загрузчик GRUB не может найти свои конфигурационные файлы или модули на диске, необходимые для передачи управления ядру системы.
Ошибка grub-rescue часто возникает при удалении раздела с /boot, изменении UUID дисков или неудачном перемещении разделов через инструменты вроде GParted. Не стоит паниковать: даже в этом режиме минимального функционала есть возможность восстановить работоспособность системы, если знать правильные команды и последовательность действий. Важно понимать, что данные на вашем диске, скорее всего, целы, проблема касается только механизма загрузки.
Восстановление требует доступа к консоли или LiveCD. Мы рассмотрим оба сценария, но начнем с попытки исправления прямо из текущего состояния, так как это самый быстрый путь. Если этот метод не сработает, потребуется загрузочная флешка с дистрибутивом Astra Linux 1.6 для монтирования корневой системы вручную. Правильная диагностика разделов — ключ к успеху.
Диагностика состояния разделов и поиск загрузчика
Первым шагом при попадании в режим grub rescue> необходимо определить, какие разделы видит загрузчик и на каком из них хранятся файлы GRUB. Ввод команды ls покажет список доступных устройств, например, (hd0), (hd0,msdos1), (hd0,msdos2). Это позволит вам понять физическую структуру диска, которую видит BIOS или UEFI.
Далее нужно проверить содержимое каждого раздела, чтобы найти директорию /boot/grub. Используйте команду ls (hd0,msdos1)/, заменяя номер раздела на актуальный. Если вы увидите список файлов, включающий grub.cfg, core.img и папку grub, значит, вы нашли нужный раздел. Если вы видите ошибку "File not found", переходите к следующему разделу.
- 🔍 Внимательно проверяйте каждый раздел, так как ошибка может быть в одной цифре индекса.
- 💾 Ищите наличие файла
grub.cfgи папкиgrubв корне раздела. - 📝 Запишите номер правильного раздела, чтобы не ошибиться в следующих командах.
Как только вы определили правильный раздел, его необходимо назначить как корневой для загрузчика. Выполните команду set root=(hd0,msdos1), подставив свои данные. После этого нужно указать путь к модулям загрузчика командой set prefix=(hd0,msdos1)/boot/grub. Это критически важный этап, так как без правильного префикса система не сможет загрузить модули.
⚠️ Внимание: Ошибка в указании номера раздела (например,msdos2вместоmsdos1) приведет к тому, что следующая команда выдаст ошибку, и вы останетесь в том же режиме. Перепроверьте результат командыlsдважды.
После настройки путей нужно загрузить модуль normal командой insmod normal. Если модуль найден, выполните normal. Система должна попытаться загрузиться в обычном режиме, показав привычное меню выбора операционной системы. Если все прошло успешно, вы увидите графическое меню загрузки.
⚠️ Внимание: Если после ввода insmod normal вы получаете сообщение об ошибке, значит, файлы модуля повреждены или находятся не там, где вы их ищете. В этом случае переходите к восстановлению через LiveCD.
- /boot на отдельном разделе
- /boot в корне (root)
- Смешанный вариант
- Не знаю
Восстановление через LiveCD Astra Linux 1.6
Если автоматический поиск в режиме grub rescue> не дал результатов, потребуется загрузочный носитель. Вставьте флешку с образом Astra Linux 1.6 (обычный или Special Edition) и загрузитесь с нее, выбрав режим "LiveCD" или "Живая система". Это даст вам доступ к полноценной операционной среде с правами суперпользователя.
Откройте терминал и выполните команду sudo -i для получения прав root. Теперь необходимо определить, на каком разделе установлена ваша основная система. Используйте утилиту lsblk или fdisk -l для просмотра списка дисков и их размеров. Ищите раздел, который соответствует вашей основной системе, обычно это самый большой раздел с файловой системой ext4 или linux_raid.
- 🐧 Используйте
lsblkдля быстрого просмотра иерархии блоков устройств. - 🔗 Убедитесь, что вы монтируете именно корневой раздел, а не раздел подкачки.
- 📂 Проверьте наличие папок
/etc,/bin,/usrна монтируемом разделе.
Создайте точку монтирования и подключите вашу систему. Выполните команды: mkdir /mnt/sysroot и mount /dev/sdX1 /mnt/sysroot, заменив sdX1 на ваш раздел. Если у вас есть отдельный раздел /boot, его также нужно смонтировать в соответствующую подпапку: mount /dev/sdY1 /mnt/sysroot/boot. Это обеспечит доступ ко всем файлам системы.
Для корректной работы загрузчика необходимо также смонтировать системные виртуальные файловые системы. Выполните последовательность команд: mount --bind /dev /mnt/sysroot/dev, mount --bind /proc /mnt/sysroot/proc, mount --bind /sys /mnt/sysroot/sys. Это создаст "мост" между живой системой и установленной системой, позволяя командам работать с устройствами.
☑️ Подготовка к восстановлению GRUB
Переустановка GRUB и обновление конфигурации
Теперь, когда система смонтирована, необходимо "войти" в нее, используя команду chroot /mnt/sysroot. После успешного выполнения вы увидите приглашение командной строки с другим именем хоста, что подтверждает вход в вашу установленную систему. Теперь все команды будут выполняться внутри вашей ОС, а не в LiveCD.
Первым делом убедитесь, что пакет grub-pc или grub-efi установлен и обновлен. Выполните apt update и apt install --reinstall grub-pc (для BIOS) или apt install --reinstall grub-efi-amd64 (для UEFI). Это гарантирует, что файлы загрузчика не повреждены и соответствуют текущей версии ядра.
Далее происходит непосредственная установка загрузчика на диск. Для систем с BIOS используйте команду grub-install /dev/sdX, где sdX — это имя диска (например, sda), а не раздела (не sda1). Для UEFI систем команда может отличаться и требовать указания пути к EFI-разделу, но часто достаточно стандартной установки с автоматическим определением.
- 🚫 Никогда не указывайте номер раздела (например,
/dev/sda1) при установке GRUB на диск. - ✅ Убедитесь, что диск выбран правильно, иначе вы можете перезаписать загрузчик другой системы.
- 🔄 После установки обязательно выполните обновление конфигурации.
Завершающим шагом является генерация нового файла конфигурации. Выполните команду update-grub. Эта утилита просканирует диски, найдет установленные ядра и создаст актуальный файл grub.cfg. Если в процессе не возникло ошибок, можно выходить из chroot и перезагружать систему.
chroot /mnt/sysroot
grub-install /dev/sda
update-grub
exit
reboot
Особенности работы с UEFI и BIOS
В системах UEFI важно, чтобы загрузочный раздел (EFI System Partition) был смонтирован в /boot/efi и имел правильный флаг boot. При переустановке GRUB в режиме chroot система может не найти этот раздел автоматически, поэтому иногда требуется указать путь явно: grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=AstraLinux.
Работа с таблицей разделов и UUID
Часто причиной сбоя является изменение UUID разделов, что происходит при их форматировании или восстановлении из бэкапа. Файл конфигурации /etc/fstab и конфигурация загрузчика могут ссылаться на старые идентификаторы. Проверьте актуальные UUID командой blkid внутри chroot или в LiveCD.
Откройте файл /mnt/sysroot/etc/fstab с помощью текстового редактора (например, nano) и сравните указанные там UUID с реальными. Если они не совпадают, исправьте их вручную. Ошибка в /etc/fstab приведет к тому, что система не сможет смонтировать разделы после перезагрузки и уйдет в аварийный режим.
Также стоит проверить файл /etc/default/grub. В нем могут быть прописаны параметры ядра, зависящие от устройства. Убедитесь, что там нет жестких привязок к конкретным именам устройств (например, /dev/sda1), лучше использовать UUID=... или LABEL=....
| Тип устройства | Команда проверки | Ожидаемый результат |
|---|---|---|
| Раздел с системой | blkid /dev/sda1 |
UUID="..." TYPE="ext4" |
| Раздел /boot | blkid /dev/sda2 |
UUID="..." TYPE="ext4" |
| Раздел EFI | blkid /dev/sda3 |
UUID="..." TYPE="vfat" |
| Раздел подкачки | blkid /dev/sda4 |
UUID="..." TYPE="swap" |
Синхронизация UUID между файлом fstab и реальными метками разделов — критический шаг для успешной загрузки после переустановки GRUB.
Решение проблем с шифрованием и LVM
Если ваша система Astra Linux использует шифрование дисков (LUKS) или логические тома (LVM), процесс восстановления усложняется. Загрузчик должен иметь возможность расшифровать диск до загрузки ядра. В режиме grub rescue> поддержка шифрования ограничена, поэтому лучше использовать LiveCD с поддержкой этих технологий.
При работе с LVM в chroot убедитесь, что демон LVM запущен и томы активны. Выполните vgchange -ay и lvscan, чтобы активировать все логические тома. Без этого загрузчик не сможет найти корневой раздел, так как он будет скрыт внутри логической группы томов.
Для систем с шифрованием необходимо проверить, что образ инициализации (initramfs) содержит необходимые модули для расшифровки. Пересоздайте initramfs командой update-initramfs -u -k all. Это гарантирует, что драйверы шифрования будут загружены на ранних этапах запуска.
⚠️ Внимание: Если вы используете шифрование, убедитесь, что парольная фраза вводится корректно. Ошибка в настройке загрузчика может привести к тому, что система будет запрашивать пароль, но не сможет расшифровать раздел даже при правильном вводе.
Перед пересозданием initramfs проверьте, что все необходимые модули ядра (например, dm-crypt, cryptsetup) установлены в системе. Их отсутствие приведет к невозможности расшифровки диска при загрузке.
Проверка и отладка после перезагрузки
После выполнения всех операций извлеките LiveCD и перезагрузите компьютер. Если система загрузилась в графический интерфейс, поздравляем — проблема решена. Однако, если вы снова видите ошибку или попадаете в аварийный режим, необходимо проверить логи. В аварийном режиме используйте команду journalctl -xb для просмотра ошибок.
Обратите внимание на сообщения о нехватке места на разделе /boot. Если он заполнен, новый образ ядра не сможет загрузиться, и загрузчик может некорректно отобразить меню. Очистите старые ядра командой apt autoremove или вручную удалите лишние файлы из /boot.
Также проверьте, не отключен ли загрузчик в настройках BIOS/UEFI. Иногда после сбоя настроек приоритет загрузки меняется, и компьютер пытается загрузиться с несуществующего устройства или в режиме, не поддерживаемом вашей системой.
- 🔎 Проверьте лог
/var/log/boot.logна наличие ошибок монтирования. - 📉 Убедитесь, что на разделе /boot есть хотя бы 100-200 МБ свободного места.
- ⚙️ Проверьте приоритет загрузки в BIOS/UEFI, убедившись, что диск с Astra Linux на первом месте.
Регулярное создание резервных копий загрузочного сектора и конфигурации GRUB позволяет значительно упростить восстановление в случае критических сбоев.
FAQ: Частые вопросы по восстановлению GRUB
Что делать, если команда grub-install выдаёт ошибку "no such disk"?
Это означает, что загрузчик не видит ваш диск. Проверьте, подключен ли диск физически, и правильно ли выбрано имя устройства (например, /dev/sda, а не /dev/sda1). Убедитесь, что в BIOS/UEFI диск не отключен и находится в режиме AHCI, а не RAID или IDE, если это требуется вашей системой.
Можно ли восстановить GRUB без LiveCD, если есть доступ к другой ОС?
Да, если у вас установлена другая операционная система (например, Windows или другой дистрибутив Linux) на том же компьютере, вы можете загрузиться в нее и использовать команду sudo grub-install, указав путь к разделам Astra Linux. Однако использование LiveCD надежнее, так как дает полный доступ ко всем разделам без конфликтов.
Как узнать, какая версия GRUB установлена в Astra Linux 1.6?
Введите команду grub-install --version в терминале. Это покажет текущую версию загрузчика. В Astra Linux 1.6 обычно используется версия GRUB 2.02 или выше, но точная версия зависит от обновлений репозитория.
Что делать, если после восстановления система загружается, но нет сетевых подключений?
Скорее всего, проблема в настройках сети, а не в загрузчике. Проверьте файл /etc/network/interfaces или настройки NetworkManager. Иногда при обновлении ядра или драйверов сетевых карт меняется имя интерфейса (например, с eth0 на enp0s3), что требует обновления конфигурации.
Нужно ли обновлять GRUB после установки нового ядра?
Да, после установки нового ядра необходимо выполнить команду update-grub, чтобы обновить файл конфигурации grub.cfg. В Astra Linux 1.6 это обычно происходит автоматически при установке пакета ядра, но при ручном обновлении или сбоях пакетного менеджера это может не сработать.