Как отредактировать загрузочное меню GRUB?

Как безопасно отредактировать пункты загрузочного меню GRUB в установленной Kubuntu 26.04 — удалить некоторые записи и переименовать другие? Система настроена в dual-boot с Windows 11. Раньше я использовал GRUB Customizer, но сейчас он, похоже, не работает и всегда был неудобен. Моё текущее меню — на фото ниже.
  • 23 мая 2026 г. 17:01
Ответы на вопрос 4
Коротко: 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 и подскажу точные команды.
Установите Grub-Customizer и будет вам щастя...
У меня аналогичная история — grub-customizer рассыпается на свежих убунтах. В /etc/grub.d/ лежат скрипты для каждого пункта — убираешь через chmod -x: memtest: <code>sudo chmod -x /etc/grub.d/20_memtest86+</code> , UEFI Firmware: <code>sudo chmod -x /etc/grub.d/30_uefi-firmware</code> . Submenu "Advanced options" убирается через <code>GRUB_DISABLE_SUBMENU=y</code> в /etc/default/grub (ядра показываются напрямую), переименовать основной пункт — <code>GRUB_DISTRIBUTOR="Новое имя"</code> там же. Потом <code>sudo update-grub</code> .
я правильно понял что надо просто поставить в дефолт загрузку винды  ?? <br/> <br/> для этого в файле /etc/default/grub надо изменить параметр <br/> <pre><code>GRUB_DEFAULT=0
# номер загружаемого пункта меню</code></pre> <br/> раскоментарить его и вместо нуля поставить название или идентификатор пункта меню груб с виндой. <br/> название судя по скриншоту у тебя "window boot mamnager (on /dev/nvmen1p1)" <br/> но лучше смотреть в текущем /boot/grub/grub.cfg <br/> там будет куча записей такого вида (у меня винды нет, так что вот только так) <br/> <blockquote>menuentry 'Ubuntu, with Linux 7.0.0-14-generic' *** $menuentry_id_option 'gnulinux-7.0.0-14-generic-advanced-f6315a80-ceac-48ef-a95c-c312c221d11a' {</blockquote> <br/> или <br/> <blockquote>menuentry 'Ubuntu, with Linux 7.0.0-14-generic' *** --id 'gnulinux-7.0.0-14-generic-advanced-f6315a80-ceac-48ef-a95c-c312c221d11a' {</blockquote> <br/> сразу после menuentry идет название, отображаемое на экране, а после --id идет уникальный идентификатор (он нужен когда названия получаются одинаковыми). <br/> копируешь с кавычками и прописываешь в дефолт, к примеру. <br/> GRUB_DEFAULT='gnulinux-7.0.0-14-generic-advanced-f6315a80-ceac-48ef-a95c-c312c221d11a' <br/> после чего обновляешь меню груба через sudo update-grub <br/> посмотри в обновленный /boot/grub/grub.cfg <br/> там должно появится чтото типа <br/> set default="gnulinux-7.0.0-14-generic-advanced-f6315a80-ceac-48ef-a95c-c312c221d11a" <br/> причем кавычки поменяются с одинарных на двойные :) <br/> все теперь по дефолту груб загружает указанный пункт меню, чтоб ты не обновил: груб, ядро и т.д.
Похожие вопросы