Эстетически редактирование grub.cfg

Править: (для ясности), я надеюсь изменять появление меню начальной загрузки личинки путем редактирования конфигурационных файлов (возможно, но не обязательно grub.cfg).

Так, любой пользователь человечности знает, как заполненный меню начальной загрузки добирается после нескольких обновлений ядра. Назад в эпоху menu.lst, Вы могли настроить меню, чтобы скрыть нежелательные опции, но все еще сохранить их доступными.

Например, если Ваше меню личинки было похоже на это:

A
B
C
D

Вы могли сделать опции C и D невидимыми путем вставки пустой опции между B и C. Таким образом, опции C и D не были бы видимы во время, загружаются, но стал бы видимым, если Вы прокрутили вниз им в меню начальной загрузки.

Попытка этого того же приема в grub.cfg, ведомом ни к какому результату вообще. Так, я ищу способ достигнуть этого того же результата с новым меню личинки путем редактирования grub.cfg файла. Другие эстетические тонкие настройки также приветствуются.

Спасибо

EDIT2: Если бы сокрытие записей меню не возможно, я хотел бы способ вставить разделитель между ними, таким образом, меню будет похоже на это:

A
B

- Другие-
C
D

10
задан 20.02.2010, 21:45

3 ответа

Во-первых, поймите, как Ubuntu настраивает Grub2.

  • /boot/grub/grub.cfg меню Grub2
  • команда личинки обновления автоматически генерирует тот файл
  • ... путем чтения настроек по умолчанию из/etc/defaults/grub
  • ... и выполнение сценариев оболочки в/etc/grub.d

Так, если Вы не хотите редактировать grub.cfg после каждого обновления ядра, Вы хотите настроить сценарии в/etc/grub.d, таким образом, Ваши изменения применяются каждый раз, когда личинка обновления выполняется.


Во-вторых, для ответа на первый вопрос непосредственно я не знаком ни с какими средствами создания определенных невидимых параметров загрузки, но все еще доступных через меню Grub. Существует много небольших вещей о Grub1, который не стал повторно реализованным в Grub2, и меня не удивило бы, если бы это было одним из них.

Вместо этого Вы могли сделать все записи меню невидимыми (пока выделенный) путем установки цвета шрифта меню на то же как цвет фона. В/etc/grub.d/05_debian_theme, изменение menu_color_normal так, чтобы первый цвет (шрифт) соответствовал второму цвету (фон). Оставьте menu_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-тестер - записи для 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

Теперь выполненная личинка обновления, и исследует/boot/grub/grub.cfg - необходимо видеть разделители там. Если Вы делаете, перезагружаете и проверяете их.

....

Если Вы захотите поместить разделители в другое место, скажем, между различными версиями ядра, то необходимо будет отредактировать 10_linux (или другой сценарий) непосредственно и найти, что соответствующее место добавляет разделитель. Можно использовать строки из сценария выше; включайте все кроме первого #!/bin/sh строка.


Если Вы хотите что-то более симпатичное, используйте изображения всплеска Личинки или темы. Я должен дать Вам "дождевой билет" по тем темам, но проверить ресурсы ниже.


Ресурсы:

Существует два крупных руководства Grub2 по UbuntuForums, который я узнал и люблю:

Личинка GNU 2 является другим большим ресурсом. У него есть ряд сценариев для тонкой настройки Grub2 Karmic (полное раскрытие: Я не судил их).

Копайтесь страница Theme Format Wiki - необходимость для взламывания на темах Grub2.

8
ответ дан 07.12.2019, 12:52

Если Вы не используете другие ядра, можно просто удалить их использование, какой бы ни интерфейс диспетчера пакетов подходит Вам. Это автоматически удаляет их из grub.cfg

0
ответ дан 07.12.2019, 12:52

Разделитель может быть сделан из тире, если его первый символ является пространством. Кроме того, не необходимо использовать команду Linux для раздела разделителя, можно использовать любую команду как это:

menuentry " -----------------------------------------------------------" {
  echo "It is just a separator, select another item!"
}

Или даже "верный" для возврата тихо:

menuentry " -----------------------------------------------------------" {
  true
}
5
ответ дан 07.12.2019, 12:52

Теги

Похожие вопросы