Добавление операционной системы Windows в список загрузки GNU GRUB версии 2.12 требует точного определения архитектуры системы (UEFI или Legacy) и правильного указания пути к загрузчику Microsoft. В отличие от ранних версий, GRUB 2.12 предоставляет более гибкие инструменты для работы с многозагрузочными конфигурациями, однако ошибки в настройке chainloading могут привести к появлению сообщения GRUB rescue.

Подготовка и проверка среды

Перед внесением изменений необходимо убедиться, что система загружена в правильном режиме. От этого зависит метод установки загрузчика и структура файлов.

  • Проверка режима загрузки: Выполните команду ls /sys/firmware/efi. Если директория существует, система работает в режиме UEFI. Отсутствие папки указывает на Legacy BIOS.
  • Поиск разделов: Используйте утилиту lsblk или fdisk -l для выявления дисков. В системах UEFI раздел EFI System Partition (ESP) обычно имеет формат FAT32 и монтируется в /boot/efi.
  • Резервное копирование: Обязательно создайте копию файла конфигурации /etc/grub.d/40_custom перед редактированием, чтобы иметь возможность восстановить исходное состояние.

Установка пакета GRUB 2.12

Версия 2.12 может отсутствовать в стандартных репозиториях некоторых дистрибутивов. Для её получения потребуется использование сторонних PPA-репозиториев или сборка из исходного кода.

После подключения нужного источника выполните установку пакетов:

sudo apt install grub-pc-bin grub-common grub-efi-amd64-bin

Затем установите загрузчик на целевой диск (например, /dev/sda):

sudo grub-install --target=x86_64-efi /dev/sda

Для систем Legacy используйте флаг --target=i386-pc. После установки проверьте наличие модулей в директории /usr/lib/grub/x86_64-efi/ и обновите конфигурацию командой sudo update-grub.

Ручная настройка записи загрузки

Автоматический сканер os-prober не всегда корректно определяет Windows, особенно если она находится на отдельном физическом носителе. В таком случае запись создается вручную через скрипт 40_custom.

Для систем UEFI

Необходимо указать путь к файлу bootmgfw.efi. Сначала найдите UUID раздела ESP с помощью команды blkid.

menuentry 'Windows Boot Manager' { insmod part_gpt insmod fat search --no-floppy --fs-uuid --set=root ВАШ_UUID chainloader /EFI/Microsoft/Boot/bootmgfw.efi }

Для систем Legacy BIOS

В этом режиме управление передается первому сектору раздела с Windows.

menuentry 'Windows Legacy' { insmod part_msdos insmod ntfs set root='hd0,msdos1' chainloader +1 }

После внесения изменений сохраните файл и выполните sudo update-grub для применения настроек.

Совместимость режимов загрузки

Критически важно, чтобы режим установки Windows совпадал с режимом работы GRUB. Смешивание стилей разметки без поддержки CSM может сделать систему не загружаемой.

Проведите по таблице влево, чтобы увидеть остальные столбцы

Режим Windows Режим GRUB Статус совместимости
UEFI (GPT) UEFI (GPT) Работает штатно
Legacy (MBR) Legacy (MBR) Работает штатно
UEFI (GPT) Legacy (MBR) Ошибка загрузки
Legacy (MBR) UEFI (GPT) Требуется включение CSM

Устранение распространенных ошибок

Если Windows не появляется в меню после обновления конфигурации, проверьте следующие параметры:

  1. Активация os-prober: Убедитесь, что в файле /etc/default/grub параметр GRUB_DISABLE_OS_PROBER установлен в значение false.
  2. Права доступа: Запускайте os-prober с правами суперпользователя (sudo), иначе он может пропустить защищенные разделы.
  3. Отсутствие модулей: Ошибка unknown filesystem возникает при отсутствии необходимых драйверов файловой системы. Убедитесь, что загружены модули fat для ESP или ntfs для разделов данных.
  4. Secure Boot: Если функция безопасности включена в BIOS, неподписанный загрузчик GRUB может быть заблокирован. Требуется либо отключение Secure Boot, либо подпись ключей MOK.

Оптимизация поведения меню

Для удобства управления загрузкой отредактируйте файл /etc/default/grub:

  • GRUB_TIMEOUT=5 — время отображения меню в секундах.
  • GRUB_DEFAULT=saved — запоминание последнего выбранного пункта.
  • GRUB_SAVEDEFAULT=true — активация функции запоминания выбора.

Изменения вступят в силу только после повторного выполнения команды sudo update-grub.

Часто задаваемые вопросы

Почему Windows не отображается в списке загрузок?

Чаще всего причина кроется в отключенном поиске сторонних ОС. Проверьте файл /etc/default/grub на наличие строки GRUB_DISABLE_OS_PROBER=true и удалите её или замените на false. Затем запустите sudo update-grub.

Можно ли загрузить UEFI-систему через Legacy BIOS?

Нет, это технически невозможно. Архитектура загрузчиков различается. Если Windows установлена в режиме UEFI, загрузчик GRUB также должен быть запущен в режиме UEFI.

Что делать при ошибке file not found?

Это означает, что GRUB не смог найти указанный файл загрузчика. Перепроверьте UUID раздела и путь к файлу bootmgfw.efi. Также убедитесь, что загружен модуль файловой системы соответствующего раздела (например, insmod fat).

Как скрыть Windows из основного меню?

Создайте собственный скрипт в папке /etc/grub.d/ (например, 50_hide_windows), который будет проверять переменные окружения и добавлять запись только при необходимости. Это позволяет оставить меню чистым для повседневного использования.