Введение / Зачем это нужно
GRUB (Grand Unified Bootloader) — это загрузчик, который появляется при включении компьютера и позволяет выбрать операционную систему или версию ядра. Конфигурация GRUB автоматически генерируется на основе файлов в /boot и обнаруженных разделов. Обновлять её нужно, когда:
- Вы установили новую ОС (например, Windows или другую Linux-дистрибутив) рядом с Ubuntu.
- Удалили старое ядро или обновили систему.
- Меняли разметку дисков (создавали/удаляли разделы).
- Меню GRUB не отображает нужные системы или показывает ошибки.
Этот гайд поможет вам за несколько минут корректно пересобрать конфигурацию GRUB, чтобы всё работало стабильно.
Требования / Подготовка
Перед началом убедитесь, что:
- У вас есть доступ к терминалу Ubuntu с правами администратора (sudo).
- Система загружена и работает в нормальном режиме (не из Live-USB, если только вы не пытаетесь починить установленную систему).
- Подключены все диски, которые могут содержать другие операционные системы (особенно важно для внешних HDD/SSD или если вы меняли SATA-порты).
- Для автоматического обнаружения Windows/Linux установлен пакет
os-prober(в некоторых дистрибутивах он есть по умолчанию).
Пошаговая инструкция
Шаг 1: Проверка и установка os-prober
Пакет os-prober — это скрипт, который сканирует диски на наличие других ОС. В большинстве случаев он уже установлен.
sudo apt update
sudo apt install os-prober
Если пакет уже установлен, команда сообщит об этом. Важно: В Ubuntu 22.04 и новее os-prober по умолчанию отключен в конфиге GRUB из соображений безопасности (чтобы случайно не добавить непроверенную ОС). Если вы хотите, чтобы GRUB искал другие системы, перейдите к следующему шагу.
Шаг 2: Активация поиска ОС (если нужно)
Отредактируйте главный конфигурационный файл GRUB:
sudo nano /etc/default/grub
Найдите строку GRUB_DISABLE_OS_PROBER. Если её нет, добавьте в конец файла:
GRUB_DISABLE_OS_PROBER=false
Если строка есть и равна true, измените на false. Сохраните файл (Ctrl+O, Enter) и закройте редактор (Ctrl+X).
💡 Совет: Если вы не хотите, чтобы GRUB автоматически добавлял найденные ОС (например, для безопасности), оставьте эту настройку
trueи добавляйте пункты вручную через/etc/grub.d/40_custom.
Шаг 3: Запуск обновления конфигурации GRUB
Теперь выполните основную команду. Она соберёт информацию о всех ядрах Linux в /boot и о других ОС (если os-prober активен).
sudo update-grub
Вы увидите примерно такой вывод:
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-5.15.0-78-generic
Found initrd image: /boot/initrd.img-5.15.0-78-generic
Found Windows Boot Manager on /dev/sda1@/EFI/Microsoft/Boot/bootmgfw.efi
done
Здесь Found Windows Boot Manager означает, что Windows успешно обнаружена.
Шаг 4: Проверка результата (опционально)
После выполнения команды можно посмотреть, что именно попало в конфигурационный файл:
grep -E "menuentry|submenu" /boot/grub/grub.cfg | head -n 10
Эта команда выведет первые 10 пунктов меню. Ищите названия ваших операционных систем и версий ядер. Если нужная ОС (например, Windows) отсутствует, вернитесь к шагу 2 и проверьте, правильно ли активирован os-prober.
Шаг 5: Перезагрузка
Изменения вступают в силу только после перезагрузки, так как GRUB читает конфиг при старте компьютера.
sudo reboot
После перезагрузки в меню загрузчика должны отображаться все обнаруженные системы.
Проверка результата
- При включении компьютера появится меню GRUB.
- В списке должны быть все установленные операционные системы (Ubuntu с разными версиями ядра, Windows, другие Linux).
- Вы можете успешно загрузиться в любую из них.
- Если вы обновляли GRUB из-за проблем с загрузкой (например, "grub rescue>"), то система должна загружаться в нормальный режим без ошибок.
Если проблема осталась (например, Windows не появляется), перейдите к разделу "Возможные проблемы".
Возможные проблемы
Проблема: os-prober не найден, или update-grub не видит Windows
Решение:
- Убедитесь, что раздел Windows не отключен в UEFI/BIOS (например, через Fast Boot или Secure Boot).
- Проверьте, смонтирован ли EFI-раздел (для UEFI-систем). Обычно он монтируется в
/boot/efi. Если нет, смонтируйте его вручную и запуститеupdate-grubснова. - Вручную добавьте Windows в GRUB через файл
/etc/grub.d/40_custom. Пример записи для UEFI:
Добавьте в конец:sudo nano /etc/grub.d/40_custom
Затем снова выполнитеmenuentry "Windows 11" { insmod part_gpt insmod fat insmod chain set root='(hd0,gpt1)' # Замените на ваш EFI-раздел, узнайте через `sudo fdisk -l` chainloader /EFI/Microsoft/Boot/bootmgfw.efi }sudo update-grub.
Проблема: После обновления GRUB система не загружается, появляется grub rescue>
Решение: Это означает, что GRUB не может найти свои модули или конфиг. Загрузитесь с Live-USB Ubuntu и смонтируйте корневой раздел вашей системы. Затем chroot в систему и переустановите GRUB:
# Предположим, корневой раздел на /dev/sda2
sudo mount /dev/sda2 /mnt
sudo mount /dev/sda1 /mnt/boot/efi # Если используется UEFI
sudo mount --bind /dev /mnt/dev
sudo mount --bind /proc /mnt/proc
sudo mount --bind /sys /mnt/sys
sudo chroot /mnt
grub-install /dev/sda # Установка в MBR (для BIOS) или
grub-install --target=x86_64-efi --efi-directory=/boot/efi --bootloader-id=ubuntu # Для UEFI
update-grub
exit
sudo reboot
Проблема: В меню GRUB слишком много старых ядер
Решение:
Удалите старые ядра через apt:
sudo apt autoremove --purge
Или вручную, посмотрев список: dpkg --list | grep linux-image. Затем снова выполните sudo update-grub.
Проблема: GRUB не показывает меню, сразу загружает Ubuntu
Решение:
Возможно, скрыт пункт меню. Проверьте настройку GRUB_TIMEOUT в /etc/default/grub. Она должна быть больше 0 (например, GRUB_TIMEOUT=10). После изменения файла обязательно выполните sudo update-grub.