Спочатку зрозумійте, як Ubuntu налаштовує Grub2.
- /boot/grub/grub.cfg - це меню Grub2
- команда update-grub автоматично генерує цей файл
- ... читаючи налаштування за замовчуванням з / etc / defaults / grub
- ... та запуску оболонок у /etc/grub.d
Отже, якщо ви не хочете редагувати grub.cfg після кожного оновлення ядра, ви хочете налаштувати сценарії в /etc/grub.d, щоб ваші зміни застосовувалися в будь - який час, коли буде запущено оновлення-grub .
По-друге, щоб відповісти на ваше перше запитання безпосередньо, я не знайомий з будь-якими способами зробити конкретні параметри завантаження невидимими, але все ще доступними через меню Grub. Є багато дрібниць про Grub1, які не переробили в Grub2, і це не здивувало б мене, якби це була одна з них.
Натомість ви можете зробити всі записи меню невидимими (до виділення), встановивши колір шрифту меню таким же, як і колір тла. У /etc/grub.d/05_debian_theme змініть menu_color_normal так, щоб перший колір (шрифт) відповідав другому кольору (фону). Залиште меню_color_highlight іншим, щоб запис під курсором відображався.
# example from a likely-tweaked Karmic /etc/grub.d/05_debian_theme
set menu_color_normal=white/black
set menu_color_highlight=black/white
# ...to this
set menu_color_normal=black/black
set menu_color_highlight=black/white
Отримання роздільника в меню Grub.
У Grub1 ви вставили б такий запис, як цей. Як я пам’ятаю, вам потрібна була коренева декларація, щоб зробити її дійсною меню, інакше Grub1 проігнорував її.
# separator
title --------------------
root
Я підозрюю, що Grub2 може бути подібним. Дуже базовий запис меню виглядає так у grub.cfg :
# basic example
menuentry "Memory test (memtest86)" {
linux /boot/memtest86+.bin
}
Оскільки в подвійних лапках "що-небудь" відображається як заголовок, ви можете підробити роздільник з цим. Як і Grub1, і Grub2 хоче, щоб ключове слово Linux розглядало його як реальне меню, тому будьте обережні, щоб випадково не вибрати його.
# a separator! no, really!
menuentry "....." {
linux /boot/memtest86+.bin
}
На жаль, «нічого» не означає нічого ; поки я тестував це, я спробував довгу нитку тире ("----------------"), і це ніколи не вийшло. Але це подобається короткий рядок крапок, показаний вище, тому ви можете використовувати це.
.....
Тепер ось як зробити один роздільник. Щоб скласти купу і розмістити їх там, де ви хочете їх автоматично, потрібно додати їх до сценаріїв у /etc/grub.d .
Для цього прикладу поставимо простий роздільник між різними розділами grub.cfg . Якщо ви подивитесь на /etc/grub.d , ви побачите такі сценарії:
- 00_header
- 05_debian_theme
- 10_linux - записи для ядер Ubuntu та відновлення
- 20_memtest86 + - запис для Memtest86 +
- 30_os-prober - записи для Windows та інших дистрибутивів Linux
- 40_custom - нічого за замовчуванням; сюди можуть заходити спеціальні записи користувачів
Ми створимо новий скрипт, роздільник та розмістимо в ньому таке:
#!/bin/sh
# create a separator menu entry
cat << EOF
menuentry "....." {
linux /boot/memtest86+.bin
}
EOF
Тепер перемістіть цей скрипт на місце для першого роздільника та зв’яжіть його на місце для інших. Сценарії виконуються в порядку, тому якщо ви хочете, щоб перший прийшов перед 10_linux , назвіть його 09_separator або щось інше.
cd /etc/grub.d
# start the editor, paste in the script above, save, and exit
sudo nano separator
# set executable
sudo chmod +x separator
# rename into the first position
mv separator 09_separator
# link into remaining positions (can also use cp)
ln -s 09_separator 19_separator
ln -s 09_separator 29_separator
# not really necessary since 40_custom is empty by default
ln -s 09_separator 39_separator
Якщо в / etc / default / grub у вас є специфічний запис, встановлений за замовчуванням , можливо, вам доведеться оновити його - Grub2 починає рахувати записи в меню 0, і кожен з цих «роздільників» є дійсним записом, тому вони також враховуються. Якщо ваш попередній запис за замовчуванням був 0, і ви додали до нього один роздільник, не забудьте змінити GRUB_DEFAULT на 1
Тепер запустіть update-grub та вивчіть /boot/grub/grub.cfg - там слід побачити роздільники. Якщо ви це зробите, перезавантажте та перевіряйте їх.
….
Якщо ви хочете розмістити роздільники в іншому місці, скажімо, між різними версіями ядра, вам потрібно буде відредагувати 10_linux (або інший скрипт) безпосередньо та знайти відповідне місце для додавання роздільника. Ви можете використовувати рядки зі сценарію, наведеного вище; включити все, крім першого рядка #! / bin / sh .
Якщо ви хочете щось красивіше, використовуйте Grub-плескітні зображення або теми. Мені потрібно дати точну перевірку цих тем, але перевірити ресурси нижче.
Ресурси:
У UbuntuForums є два великі посібники з Grub2, які я дізнався і люблю:
GNU Grub 2 - ще один чудовий ресурс. У нього є набір сценаріїв для налаштування Karb's Grub2 ( повне розкриття: я їх не пробував ).
Сторінка формату теми Grub Wiki - обов'язкова для хакерства тем Grub2.