Коротко: grub — это не отдельный «файл меню», а набор скриптов в /etc/grub.d/ и настроек в /etc/default/grub, из которых при выполнении update-grub (grub-mkconfig) генерируется /boot/grub/grub.cfg. Правильный безопасный способ — изменить скрипты/параметры и пересобрать конфиг, а не править /boot/grub/grub.cfg вручную. Ниже — понятная пошаговая инструкция с примерами.
1) Подготовка / резервные копии
- Создайте бэкапы:
sudo cp /boot/grub/grub.cfg /boot/grub/grub.cfg.bak
sudo cp /etc/default/grub /etc/default/grub.bak
sudo cp -r /etc/grub.d /etc/grub.d.bak
2) Общее правило
- После любых изменений запускайте:
sudo update-grub
(этот скрипт вызывает grub-mkconfig и обновит /boot/grub/grub.cfg)
- Если система UEFI, grub-install обычно не требуется при простых изменениях меню.
3) Удаление/скрытие нежелательных пунктов
- Скрыть пункты восстановления (Recovery):
Откройте /etc/default/grub и добавьте/измените строку:
GRUB_DISABLE_RECOVERY=true
- Убрать memtest86+:
sudo chmod -x /etc/grub.d/20_memtest86+
- Отключить автоматическое обнаружение других ОС (os-prober), чтобы убрать «автоматические» записи Windows:
В /etc/default/grub добавить:
GRUB_DISABLE_OS_PROBER=true
либо сделать скрипт неисполняемым:
sudo chmod -x /etc/grub.d/30_os-prober
- Удаление старых ядёр:
Список установленных ядер:
dpkg --list 'linux-image*' | grep ^ii
Удаляйте старые пакеты аккуратно:
sudo apt remove --purge linux-image-<версия>
Или:
sudo apt autoremove --purge
После удаления выполнить sudo update-grub.
4) Переименование/добавление пунктов (рекомендуемый безопасный способ)
- Отключите автоматическое добавление записи для той ОС, которую хотите переименовать (см. пункт выше для os-prober).
- Добавьте свои пользовательские записи в /etc/grub.d/40_custom. Пример для UEFI (Windows 11):
Откройте файл:
sudo nano /etc/grub.d/40_custom
Добавьте (замените <WIN_EFI_PART_UUID> на UUID вашей EFI‑раздела):
menuentry "Windows 11 (мой заголовок)" --class windows --class os {
insmod part_gpt
insmod fat
search --no-floppy --fs-uuid --set=root <WIN_EFI_PART_UUID>
chainloader /EFI/Microsoft/Boot/bootmgfw.efi
}
Найти UUID EFI‑раздела:
sudo blkid или lsblk -f
- Пример для BIOS/MBR (если у вас Legacy):
menuentry "Windows 11 (мой заголовок)" {
set root=(hd0,msdos1)
chainloader +1
}
- Пример кастомного пункта для конкретного ядра Linux (менять при обновлении ядра вручную):
menuentry "Kubuntu 26.04 (custom 6.7.0-xx)" {
set root=(hd0,gpt2)
linux /vmlinuz-6.7.0-xx-generic root=UUID=<root-uuid> ro quiet splash
initrd /initrd.img-6.7.0-xx-generic
}
Примечание: такие записи не обновляются автоматически при установке нового ядра — либо вручную правьте, либо оставьте авто‑генерацию для Linux.
5) Отключение автоматической генерации только для отдельных записей
- Вы не обязаны полностью отключать 10_linux — обычно отключают только os-prober и memtest, а для Windows делают собственную запись в 40_custom. Это даёт контроль над именем и порядком пунктов, при этом у вас останутся правильные текущие Linux‑пункты.
6) После изменений
- Сделайте исполняемыми скрипты (по умолчанию они исполняемы). Если вы что‑то отключали через chmod -x и хотите вернуть — sudo chmod +x /etc/grub.d/30_os-prober, и т.д.
- Пересоберите конфиг:
sudo update-grub
- Просмотрите сгенерированный файл:
less /boot/grub/grub.cfg
Убедитесь, что ваши menuentry присутствуют и названия корректны.
7) Тестирование/откат
- Перед перезагрузкой: сохраните live-USB с Linux на случай, если потребуется восстановление GRUB.
- Если что-то пошло не так, восстановите из бэкапов:
sudo cp /etc/default/grub.bak /etc/default/grub
sudo cp -r /etc/grub.d.bak/* /etc/grub.d/
sudo update-grub
Полезные команды резюме
- Просмотр разделов: sudo lsblk -f
- Поиск EFI‑UUID: sudo blkid
- Сделать скрипт неисполняемым: sudo chmod -x /etc/grub.d/30_os-prober
- Включить/отключить recovery: добавить GRUB_DISABLE_RECOVERY=true в /etc/default/grub
- Пересборка меню: sudo update-grub
Если хотите — пришлите выводы:
- sudo lsblk -f
- cat /etc/default/grub
- ls -l /etc/grub.d/
и скажите какие именно пункты хотите удалить и какие переименовать — я подготовлю конкретные строки для 40_custom и подскажу точные команды.