Редактирование меню загрузки GRUB 2 на Linux
Обзор GRUB 2
GRUB 2 — гибкий загрузчик, который понимает файловые системы и форматы исполняемых образов ядра. Это значит, что вы указываете путь к файлу ядра, диск и раздел, и GRUB загрузит систему без привязки к физическому смещению ядра на диске.
Файл конфигурации теперь называется grub.cfg (в отличие от старых menu.lst или grub.conf) и генерируется автоматически. Команда, которая создаёт файл конфигурации в большинстве дистрибутивов Debian/Ubuntu, —
grub-mkconfig(в системах на базе GRUB2 иногда используется grub2-mkconfig, см. раздел совместимости).
Важно: не редактируйте напрямую
/boot/grub/grub.cfg. Изменения нужно вносить в шаблоны и параметры, откуда файл генерируется.

Где редактировать
Главные места, которые нужно знать:
/etc/default/grub— общие параметры меню загрузки и поведения GRUB./etc/grub.d/— набор скриптов, которые генерируютgrub.cfg. Порядок выполнения определяется именами файлов (например,30_os-prober,40_custom).
Откройте файл настроек (как пример для GUI-редактора):
gksu gedit /etc/default/grubИли используйте любимый консольный редактор:
sudo nano /etc/default/grubОсновные переменные в /etc/default/grub
Пример блока, который вы увидите:
GRUB_DEFAULT=0
#GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=-1
GRUB_DISTRIBUTOR=`lsb_release -i -s 2> /dev/null || echo Debian`
GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"
GRUB_CMDLINE_LINUX=""Краткие пояснения (простым языком):
- GRUB_DEFAULT — пункт по умолчанию. Может быть числом (счёт с нуля), названием пункта или строкой saved.
- GRUB_HIDDEN_TIMEOUT — если задан, GRUB попробует загрузить пункт по умолчанию через N секунд, если клавиша не нажата. 0 — загрузка без показа меню, -1 — ждать бесконечно.
- GRUB_HIDDEN_TIMEOUT_QUIET — true скрывает обратный отсчёт (покажет пустой экран), false показывает таймер.
- GRUB_TIMEOUT — сколько секунд показывать меню перед автозапуском. 0 — сразу загрузить; -1 — ждать выбора.
- GRUB_DISTRIBUTOR — определяет текст дистрибутива в меню (получается через lsb_release).
- GRUB_CMDLINE_LINUX_DEFAULT — параметры ядра, применяемые для нормальной загрузки. Уберите
quiet, чтобы видеть текстовый вывод, уберитеsplash, чтобы отключить изображение-заставку.
Примечание: в кодовой строке выше используется обратная кавычка
\lsb_release…`` — это конструкция shell, она оставлена исходной как пример.
Установка пользовательского splash-изображения
Добавьте файл изображения в /boot/grub/:
sudo cp splash1.jpg /boot/grub/Форматы: GRUB поддерживает PNG и JPG; для лучшей совместимости используйте PNG с разрешением, близким к разрешению экрана.

Добавление собственного пункта меню
Для своих пунктов используйте файл /etc/grub.d/40_custom. Имя файла определяет порядок — скрипты запускаются по возрастанию имени.
Откройте для редактирования:
gksu gedit /etc/grub.d/40_customПример простого собственного пункта (скопируйте и адаптируйте под вашу систему):
menuentry 'My custom Linux' {
set root='hd0,msdos1'
linux /vmlinuz-5.4.0-42-generic root=/dev/sda1 ro quiet splash
initrd /initrd.img-5.4.0-42-generic
}После добавления убедитесь, что файл исполняемый:
sudo chmod +x /etc/grub.d/40_custom
Применение изменений
После редактирования /etc/default/grub или скриптов в /etc/grub.d/ нужно перегенерировать grub.cfg:
sudo update-grubНа некоторых системах (например, Fedora) команда отличается — см. раздел совместимости ниже.
Перезагрузите систему и проверьте меню.
Отладка и ситуация, когда изменения не применяются
Когда правки не видны в меню, проверьте:
- Вы действительно редактировали правильный файл (
/etc/default/grub, а не/boot/grub/grub.cfg). - Не забыли запустить
update-grubили эквивалентную команду. - Файлы в
/etc/grub.d/имеют корректные права (исполняемые там, где нужно). - На системах с UEFI конфигурация может храниться в других путях (см. раздел совместимости).
Типичные ошибки и их решения:
- Неправильный путь к ядру или initrd в
40_custom— приведёт к ошибке загрузки. Проверьте имена файлов в/boot/. - Неверный синтаксис в
40_custom—update-grubможет проигнорировать или сломать генерацию. Внимательно следите за фигурными скобками и кавычками.
Альтернативные подходы
- Использование
grub2-mkconfig -o /boot/grub2/grub.cfgна дистрибутивах, где так называется утилита. - Ручное редактирование
/boot/grub/grub.cfgдопустимо только в экстренных ситуациях; лучше изменить скрипты и регенерировать. - Для массового развёртывания конфигураций используйте конфигурационные менеджеры (Ansible, Puppet) — шаблонизация
/etc/grub.d/и/etc/default/grubпозволит воспроизводить настройки.
Безопасность и откат
- Всегда делайте резервную копию:
sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.bakиsudo cp /etc/default/grub /etc/default/grub.bak. - Если после обновления GRUB система не загружается, загрузитесь с live-USB, смонтируйте раздел и восстановите резервную копию файлов или используйте chroot для восстановления.
Краткий плейбук при неудачной загрузке:
- Загрузитесь с live-USB.
- Смонтируйте ваш корневой раздел и /boot (если отдельный).
- Восстановите
/boot/grub/grub.cfgиз.bakили пересоберитеupdate-grubв chroot. - Восстановите загрузчик (grub-install) по необходимости.
Критерии приёмки
- Пункт меню появляется и загружает систему в рабочее состояние.
- Splash-изображение отображается при загрузке (если включено).
- При восстановлении из резервной копии система возвращается к прежнему состоянию.
Рольовые чек-листы
Администратор:
- Сделать резервные копии
/etc/default/grubи/boot/grub/grub.cfg. - Проверить правильность путей к ядру и initrd.
- Выполнить
update-grubи перезагрузку.
Разработчик/тестер:
- Проверить, что параметры ядра (
GRUB_CMDLINE_LINUX_DEFAULT) дают нужный вывод/режим. - Тестировать варианты с и без
quiet/splash.
Домашний пользователь:
- Скопировать splash в
/boot/grub/и установитьGRUB_CMDLINE_LINUX_DEFAULTпо вкусу. - Не менять сложные скрипты в
/etc/grub.d/без понимания.
Шпаргалка команд
- Редактировать настройки:
sudo nano /etc/default/grub - Добавить свой пункт:
sudo nano /etc/grub.d/40_custom - Сделать исполняемым:
sudo chmod +x /etc/grub.d/40_custom - Обновить конфигурацию:
sudo update-grub - Копировать splash:
sudo cp splash1.jpg /boot/grub/ - Восстановить назад конфигурацию:
sudo cp /boot/grub/grub.cfg.bak /boot/grub/grub.cfg
Совместимость и миграция
- Debian/Ubuntu:
update-grub(обёртка надgrub-mkconfig) и путь/boot/grub/grub.cfg. - RHEL/Fedora: используйте
grub2-mkconfig -o /boot/grub2/grub.cfgи, в случае EFI,/boot/efi/EFI/fedora/grub.cfg(зависит от дистрибутива). - UEFI vs BIOS: на UEFI система может хранить файлы загрузчика в ESP (раздел EFI), обратите внимание сохраняете ли вы файлы в правильном месте.
Когда изменения не помогут (контрпримеры)
- Если проблема заключается в повреждённом ядре или initrd — изменение меню не исправит сам образ. Нужно восстановить/переустановить пакеты ядра.
- Если устройство имеет аппаратную проблему с диском, загрузчик может не увидеть файлы — в этом случае нужно диагностировать диск.
Глоссарий (в одну строку)
- GRUB: загрузчик (Grand Unified Bootloader) для Linux.
- splash: графическая заставка при загрузке.
- initrd/initramfs: временная файловая система для инициализации перед монтированием корня.
- UEFI: современный интерфейс прошивки, заменяющий BIOS.
Краткое резюме
- Правьте
/etc/default/grubи/etc/grub.d/— не/boot/grub/grub.cfg. - После правок выполняйте
sudo update-grub(или эквивалент для вашего дистрибутива). - Всегда делайте резервную копию и тестируйте изменения перед массовым применением.
Ссылки
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента