TL;DR — кратко о проблеме и решении
Проблема: Windows 10 при установке перезаписывает загрузочный сектор диска своим загрузчиком. GRUB исчезает из цепочки загрузки, Linux перестаёт стартовать.
Решение: загрузиться с Live USB того же дистрибутива, смонтировать Linux-раздел через chroot и переустановить GRUB на диск.
Два сценария — два метода:
- BIOS + MBR →
grub-install /dev/sdXиз chroot - UEFI + GPT →
grub-installс монтированием EFI-раздела +bcdeditиз Windows
Почему Windows 10 ломает GRUB
Windows не знает о существовании GRUB и не проверяет, есть ли на диске другой загрузчик. При установке она записывает Windows Boot Manager в MBR (на BIOS-системах) или регистрирует свой загрузчик как приоритетный в NVRAM (на UEFI-системах). GRUB при этом физически никуда не исчезает с диска — он просто перестаёт быть первым в цепочке загрузки.
Именно поэтому восстановление в большинстве случаев занимает несколько минут: данные целы, нужно лишь вернуть GRUB на первое место.
Шаг 0. Определить тип системы: BIOS или UEFI
Метод восстановления зависит от типа прошивки. Определить его можно ещё из Windows — до перезагрузки.
Открыть «Выполнить» (Win + R), ввести msinfo32. В поле «Режим BIOS»:
- UEFI — система использует UEFI и GPT
- Устаревший (Legacy) — BIOS и MBR
Либо из Linux Live USB:
[ -d /sys/firmware/efi ] && echo "UEFI" || echo "BIOS"
Метод 1: BIOS + MBR (классическая установка)
Что понадобится
Live USB или Live DVD с тем же дистрибутивом Linux. Подойдёт и другой дистрибутив — главное, чтобы архитектура совпадала (64-бит).
Шаг 1 — найти раздел с Linux
После загрузки с Live USB открыть терминал:
sudo fdisk -l
Найти раздел с типом Linux — обычно это ext4. Запомнить его имя: /dev/sda1, /dev/sdb2 и т.д.
sudo lsblk -f
lsblk -f показывает файловые системы наглядно — удобнее, чем fdisk, когда разделов много.
Шаг 2 — смонтировать раздел и войти в chroot
Предположим, Linux-раздел — /dev/sda1:
sudo mount /dev/sda1 /mnt
Если есть отдельный раздел /boot — смонтировать его тоже:
sudo mount /dev/sda2 /mnt/boot
Подготовить виртуальные файловые системы для chroot:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
Войти в среду установленной системы:
sudo chroot /mnt
После этого команды выполняются уже в контексте установленного Linux, а не Live-окружения.
Шаг 3 — переустановить GRUB
Установить GRUB на диск (не на раздел — без цифры в конце):
grub-install /dev/sda
Обновить конфигурацию — GRUB автоматически найдёт все установленные ОС, включая Windows:
update-grub
Шаг 4 — выйти и перезагрузиться
exit
sudo umount /mnt/dev /mnt/proc /mnt/sys
sudo umount /mnt
sudo reboot
После перезагрузки должно появиться меню GRUB с пунктами для Linux и Windows 10.
Метод 2: UEFI + GPT
На UEFI-системах GRUB устанавливается в специальный раздел — EFI System Partition (ESP). Windows при установке не удаляет файлы GRUB из ESP, но регистрирует свой загрузчик как приоритетный в NVRAM материнской платы. Задача — вернуть GRUB в NVRAM на первое место.
Шаг 1 — найти EFI-раздел
sudo fdisk -l
ESP легко опознать: тип EFI System, размер обычно 100–512 МБ, файловая система FAT32.
sudo lsblk -f
Пусть ESP находится на /dev/sda1, Linux-раздел — на /dev/sda2.
Шаг 2 — смонтировать разделы
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi
Подключить виртуальные файловые системы:
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo mount --bind /sys/firmware/efi/efivars /mnt/sys/firmware/efi/efivars
Последняя строка критична для UEFI — без монтирования efivars запись в NVRAM работать не будет.
Шаг 3 — chroot и установка GRUB
sudo chroot /mnt
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu
update-grub
Параметр --bootloader-id задаёт имя записи в NVRAM. Для Ubuntu/Debian используется ubuntu, для Fedora — fedora, для Arch — arch и т.д.
Шаг 4 — проверить запись в NVRAM
efibootmgr
В выводе должна появиться запись с именем ubuntu (или тем, что было указано в --bootloader-id) и звёздочкой — это значит, что она активна.
Шаг 5 — выйти и перезагрузиться
exit
sudo umount /mnt/sys/firmware/efi/efivars
sudo umount /mnt/dev /mnt/proc /mnt/sys
sudo umount /mnt/boot/efi
sudo umount /mnt
sudo reboot
Альтернатива: bcdedit из Windows (только UEFI)
Если доступна запущенная Windows 10, можно вернуть приоритет GRUB без Live USB — через командную строку Windows.
Открыть CMD с правами администратора (Win + X → Командная строка (администратор)):
bcdedit /set {bootmgr} path \EFI\ubuntu\grubx64.efi
Путь зависит от дистрибутива:
| Дистрибутив | Путь к EFI-файлу |
|---|---|
| Ubuntu / Debian | \EFI\ubuntu\grubx64.efi |
| Fedora | \EFI\fedora\grubx64.efi |
| Arch Linux | \EFI\arch\grubx64.efi |
| Pop!_OS | \EFI\pop\shimx64.efi |
| Manjaro | \EFI\Manjaro\grubx64.efi |
Проверить, какие EFI-файлы реально есть на разделе, можно из Windows через Проводник — ESP монтируется как скрытый раздел. Для доступа к нему:
mountvol X: /s
dir X:\EFI\
Посмотреть содержимое и найти нужную папку с grubx64.efi.
Boot-Repair — графический способ для Ubuntu
Если chroot кажется сложным — в Ubuntu есть утилита Boot-Repair с графическим интерфейсом. Установка с Live USB:
sudo add-apt-repository ppa:yannubuntu/boot-repair
sudo apt update
sudo apt install boot-repair
boot-repair
В большинстве случаев достаточно нажать «Recommended repair» — утилита сама определит конфигурацию, смонтирует нужные разделы и переустановит GRUB. Подходит для стандартных систем; на нестандартных разбивках дисков может ошибиться.
Частые ошибки и их причины
grub-install: error: cannot find a GRUB drive for /dev/sda Виртуальные файловые системы не смонтированы перед chroot. Убедиться, что /dev, /proc, /sys примонтированы в /mnt.
EFI variables are not supported on this system На UEFI-системах не смонтирован /sys/firmware/efi/efivars. Добавить монтирование и повторить grub-install.
GRUB установился, но Windows исчезла из меню update-grub не нашёл Windows. Установить os-prober и повторить:
apt install os-prober
update-grub
На некоторых дистрибутивах os-prober отключён по умолчанию. Включить его в /etc/default/grub:
GRUB_DISABLE_OS_PROBER=false
После чего снова update-grub.
Secure Boot блокирует загрузку GRUB Windows 10 может включить Secure Boot. В настройках UEFI (BIOS Setup) проверить, включён ли Secure Boot. Для большинства дистрибутивов его можно оставить включённым — подписанные версии GRUB (shim) работают с ним корректно. Если не работает — временно отключить Secure Boot в UEFI.
Итог
| Ситуация | Метод |
|---|---|
| BIOS + MBR | chroot → grub-install /dev/sdX → update-grub |
| UEFI + GPT, нет доступа к Windows | chroot с монтированием ESP → grub-install --target=x86_64-efi |
| UEFI + GPT, Windows работает | bcdedit /set {bootmgr} path \EFI\...\grubx64.efi |
| Ubuntu, хочется без командной строки | Boot-Repair |
Сам GRUB и Linux-данные при установке Windows не повреждаются — восстановление в 99% случаев сводится к переустановке загрузчика на диск за 5–10 минут.