Введение / Зачем это нужно
GRUB (Grand Unified Bootloader) — это первая программа, которая запускается при включении компьютера с Linux. Её задача — загрузить операционную систему, показав меню выбора, если их несколько. Из-за сбоев (обновление ядра, ошибки диска, некорректное изменение конфигурации) GRUB может повредиться, что приведёт к ошибкам вроде grub rescue> или полному отсутствию загрузки. Данный гайд поможет вам восстановить работоспособность загрузчика, используя загрузочный носитель Live CD/USB. После выполнения вы снова увидите меню GRUB и сможете загрузить систему.
Требования / Подготовка
Перед началом убедитесь, что у вас есть:
- Загрузочный носитель Live USB с любым дистрибутивом Linux (рекомендуется Ubuntu, Fedora или любой другой, поддерживающий GRUB). Создать его можно через Rufus, BalenaEtcher или
dd. - Доступ к BIOS/UEFI для загрузки с флешки (обычно клавиша F2, F12, Del при включении).
- Базовые навыки работы с терминалом: умение вводить команды, изменять директории.
- Знание пароля root или возможность выполнять команды через
sudoв Live-среде (часто парольrootотсутствует, используйтеsudo). - Информация о разделах диска: если вы знаете, где находится корневой раздел (
/) и, возможно, отдельный/bootили EFI-система-раздел (ESP), это ускорит процесс.
💡 Совет: Если вы не уверены в структуре разделов, не волнуйтесь — мы покажем, как определить их в шаге 2.
Пошаговая инструкция
Шаг 1: Подготовка Live-носителя и загрузка с него
Если у вас ещё нет Live-флешки, создайте её:
- Скачайте образ дистрибутива (например, Ubuntu Desktop).
- Запишите его на флешку (минимум 4 ГБ) с помощью BalenaEtcher или команды
dd(в Linux/macOS):sudo dd if=/путь/к/образу.iso of=/dev/sdX bs=4M status=progress && sync
Замените/dev/sdXна устройство вашей флешки (например,/dev/sdb). Внимание: выбор неверного диска приведёт к потере данных! - Перезагрузите компьютер, зайдите в BIOS/UEFI (клавиша при старте, часто F2, F12, Del) и настройте загрузку с USB-устройства.
- Выберите опцию Try Ubuntu (или аналогичную) — это запустит живой режим без установки.
После загрузки откройте терминал (Ctrl+Alt+T).
Шаг 2: Определение разделов диска
В Live-среде все диски доступны, но с другими именами (например, ваш системный диск /dev/sda может стать /dev/sdb). Определите корневой раздел:
lsblk
Вы увидите список устройств и их точек монтирования. Пример вывода:
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 238,5G 0 disk
├─sda1 8:1 0 512M 0 part /boot/efi # EFI-раздел (UEFI)
├─sda2 8:2 0 64G 0 part /
├─sda3 8:3 0 16G 0 part [SWAP]
└─sda4 8:4 0 157,9G 0 part /home
Или используйте sudo fdisk -l для более детальной информации.
Что ищем:
- Корневой раздел (
/) — обычно самый большой, типLinux filesystem. В примере это/dev/sda2. - EFI-система-раздел (ESP) — небольшой (100–500 МБ), тип
EFI System. В примере/dev/sda1. Если у вас BIOS (старый ПК), ESP может отсутствовать. - Отдельный /boot (редко) — тип
Linux filesystem, точка монтирования/boot.
Запомните имя диска (например, /dev/sda) и разделов. Для дальнейших команд замените /dev/sda2 и /dev/sda1 на свои.
Шаг 3: Монтирование корневой файловой системы
Теперь смонтируем корневой раздел в каталог /mnt (стандартное место для временного монтирования):
sudo mount /dev/sda2 /mnt
Если у вас есть отдельный раздел /boot (не в составе корня), смонтируйте его:
sudo mount /dev/sdaX /mnt/boot # замените sdaX на ваш раздел /boot
Если у вас UEFI (есть ESP), смонтируйте его в /mnt/boot/efi (или в /mnt/efi, если структура иная):
sudo mount /dev/sda1 /mnt/boot/efi
⚠️ Важно: Для UEFI ESP должен быть смонтирован в
/boot/efiвнутри chroot-окружения, иначеgrub-installне найдёт EFI-файлы.
Если у вас BIOS, этот шаг пропускайте — ESP не требуется.
Шаг 4: Выполнение переустановки GRUB
Теперь мы "войдём" в смонтированную систему с помощью chroot — это даст доступ к её утилитам и файлам как к реальной системе.
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
Вы окажетесь в корне вашей системы (приглашение командной строки может измениться). Теперь выполните переустановку в зависимости от типа прошивки.
Для BIOS (устаревшие ПК):
grub-install --target=i386-pc /dev/sda
Где /dev/sda — весь диск, а не раздел. GRUB запишется в MBR (первый сектор).
Для UEFI (современные ПК, большинство с 2012 года):
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=GRUB
--efi-directoryуказывает точку монтирования ESP (должна быть/boot/efi).--bootloader-id— имя загрузчика в меню UEFI (можно оставитьGRUBили задатьubuntu,debianи т.д.).
Если команда завершится без ошибок, GRUB установлен.
Шаг 5: Обновление конфигурации GRUB
После установки нужно создать новый файл конфигурации grub.cfg, который содержит список ядер и разделов.
Для Ubuntu/Debian и производных:
update-grub
Для CentOS/RHEL/Fedora:
grub-mkconfig -o /boot/grub/grub.cfg
Вы должны увидеть вывод с обнаруженными ядрами и операционными системами (например, "Found Windows Boot Manager on /dev/sda1").
Шаг 6: Перезагрузка и проверка
Выйдите из chroot и размонтируйте разделы:
exit
sudo umount -R /mnt
Теперь перезагрузите компьютер:
sudo reboot
Не забудьте извлечь Live-флешку при появлении логотипа производителя, иначе снова загрузитесь в неё.
Если всё сделано верно, вы увидите меню GRUB и сможете загрузить Linux (или Windows, если он был).
Проверка результата
- Система загружается без ошибок
grub rescue>илиerror: no such partition. - При включении появляется меню GRUB (может быть скрытым, нажмите Shift или Esc для отображения).
- В меню доступны все установленные операционные системы.
- После загрузки Linux выполните
sudo grub-install --recheck --target=i386-pc /dev/sda(для BIOS) илиsudo grub-install --target=x86_64-efi --efi-directory=/boot/efi(для UEFI) — команда должна завершиться успехом без предупреждений.
Возможные проблемы
Ошибка: error: no such partition.
- Причина: GRUB не может найти корневой раздел, указанный в его конфигурации. Часто после сбоя диск получил новое имя (например,
/dev/sda2→/dev/sdb2). - Решение: Убедитесь, что в
grub.cfg(файл/boot/grub/grub.cfgвнутри chroot) указаны правильные имена разделов (например,(hd0,gpt2)для UEFI или(hd0,msdos2)для BIOS). Лучше перегенерировать конфиг черезupdate-grubиз chroot.
Ошибка: grub rescue> или unknown filesystem.
- Причина: Повреждён GRUB или его модули, раздела не найден.
- Решение: Вручную в
grub rescue>укажите правильный раздел:
Затем загрузитесь и переустановите GRUB по инструкции. Заменитеset prefix=(hd0,gpt2)/boot/grub set root=(hd0,gpt2) insmod normal normalgpt2на ваш раздел (смотритеlsв rescue).
После переустановки GRUB система всё равно не загружается.
- Причина: Неправильный выбор диска для
grub-install(например, установили на/dev/sdb, а загрузка идёт с/dev/sda). - Решение: Убедитесь, что в команде
grub-installуказан диск, с которого производится загрузка (обычно первый SATA-диск/dev/sda). Проверьте порядок загрузки в BIOS/UEFI.
Ошибка при grub-install для UEFI: failed to get canonical path of /boot/efi.
- Причина: EFI-раздел не смонтирован в
/boot/efiвнутри chroot или не отформатирован в FAT32. - Решение: Проверьте, что ESP смонтирован в
/mnt/boot/efiдоchroot. Если раздел не FAT32, отформатируйте его (mkfs.fat -F32 /dev/sda1) только если вы уверены, что он не содержит важных данных (обычно ESP служит только для загрузчиков).
Команда update-grub не находит Windows.
- Причина: Windows установлен в режиме UEFI, но его загрузчик находится на другом диске, или раздел скрыт.
- Решение: Убедитесь, что все диски подключены. Запустите
sudo os-prober(в Ubuntu/Debian) — если он находит Windows, ноupdate-grubигнорирует, проверьте, что в/etc/default/grubне закомментирована строкаGRUB_DISABLE_OS_PROBER=false. Перезапуститеupdate-grub.
Не хватает места на ESP (UEFI) для установки GRUB.
- Причина: EFI-система-раздел (обычно 100–500 МБ) переполнен старыми загрузчиками.
- Решение: Очистите ESP: смонтируйте её (например,
sudo mount /dev/sda1 /mnt/efi), удалите старые файлы (папкиubuntu,debian,Microsoftи т.д.), оставив только актуальные. Будьте осторожны — удаление папкиMicrosoftможет сделать Windows не загружаемой.
После переустановки GRUB меню не появляется (автоматическая загрузка).
- Причина: В конфигурации GRUB установлен таймаут 0 или скрыто меню.
- Решение: Отредактируйте
/etc/default/grubвнутри chroot:
Установите:sudo nano /etc/default/grub
Сохраните и выполнитеGRUB_TIMEOUT=10 GRUB_TIMEOUT_STYLE=menuupdate-grub.
Дополнительные рекомендации
- Создайте резервную копию ESP (для UEFI) или MBR (для BIOS) перед манипуляциями:
- BIOS:
sudo dd if=/dev/sda of=~/mbr-backup.img bs=512 count=1 - UEFI: скопируйте содержимое
/boot/efiв безопасное место.
- BIOS:
- Используйте
efibootmgr(в Live-среде установите пакетefibootmgr) для управления записями UEFI:sudo efibootmgr -vпокажет все загрузчики,sudo efibootmgr -o 0001,0002установит порядок. - Для сложных случаев (RAID, LVM, шифрование) может потребоваться дополнительная настройка (например,
grub-installс модулямиlvmилиcryptodisk). Обратитесь к документации дистрибутива.
После восстановления GRUB рекомендуется обновить систему (sudo apt update && sudo apt upgrade в Ubuntu/Debian) и проверить целостность диска (sudo smartctl -a /dev/sda).
Эта статья покрывает основные сценарии восстановления GRUB. Если проблема не решена, уточните модель материнской платы, тип прошивки (BIOS/UEFI) и вывод команд lsblk и sudo fdisk -l в комментариях — это поможет дать более точный совет.