Добавление операционной системы 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 не появляется в меню после обновления конфигурации, проверьте следующие параметры:
- Активация os-prober: Убедитесь, что в файле
/etc/default/grubпараметрGRUB_DISABLE_OS_PROBERустановлен в значениеfalse. - Права доступа: Запускайте
os-proberс правами суперпользователя (sudo), иначе он может пропустить защищенные разделы. - Отсутствие модулей: Ошибка
unknown filesystemвозникает при отсутствии необходимых драйверов файловой системы. Убедитесь, что загружены модулиfatдля ESP илиntfsдля разделов данных. - 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), который будет проверять переменные окружения и добавлять запись только при необходимости. Это позволяет оставить меню чистым для повседневного использования.