Как изменить внешний вид загрузчика grub

GRUB – стандартный загрузчик Ubuntu начиная с версии 9.10 (до этого был GRUB Legacy). Он позволяет легко устанавливать собственный фон и изменять шрифты для меню загрузки системы.

Содержание

GRUB – стандартный загрузчик Ubuntu начиная с версии 9.10 (до этого был GRUB Legacy). Он позволяет легко устанавливать собственный фон и изменять шрифты для меню загрузки системы.

Не перепутайте GRUB Legacy, использовавшийся в Ubuntu до версии 9.04 включительно, и GRUB, которой используется в Ubuntu начиная с версии 9.10. Несмотря на то, что это фактически две версии одного приложения с названием GRUB, они не имеют ничего общего и являются совершенно разными программами.

Использование фоновых рисунков

GRUB 2 может использовать изображения в форматах PNG, JPG/JPEG и TGA как фон. Изображения должны отвечать следующим требованиям:

  1. JPG/JPEG должны быть 8-битными (256 цветов).

  2. Цветовая схема изображения должна быть RGB и не индексированной.

Несколько готовых фоновых изображений содержатся в пакете grub2-splashimages. Вы можете установить его при помощи Центра приложений или через терминал:

sudo apt-get install grub2-splashimages

Установленные изображения можно найти в каталоге /usr/share/images/grub.

Приоритет загрузки фона

Если GRUB находит более одного подходящего фонового рисунка, то выбор изображения происходит в следующей последовательности:

  1. Переменная GRUB_BACKGROUND установленная в /etc/default/grub

  2. Первое изображение, найденное в /boot/grub

    • изображения сортируются по расширению в следующем порядке: jpg, JPG, jpeg, JPEG, png, PNG, tga, TGA

    • если существуют несколько изображений с одинаковым расширение, то будет использовано первое в алфавитно-цифровом порядке.

  3. Обои, указанные в /usr/share/desktop-base/grub_backgorund.sh (если установлен desktop-base)

  4. Переменная WALLPAPER из /etc/05_debian_theme1)

    • по умолчанию значение равно /usr/share/images/desktop-base/desktop-grub.png

  5. Тема по умолчанию (без фона): цвета default_theme указанные в /etc/grub.d/05_debian_theme

Не все вышеперечисленные опции доступны в GRUB 1.98

GRUB 1.99 и новее

Этот раздел описывает установку фонового рисунка для GRUB2, входящего в состав Ubuntu 11.04 и новее.

  1. Откройте /etc/default/grub при помощи текстового редактора

    sudo gedit /etc/default/grub
  2. Добавьте следующую строчку:

    GRUB_BACKGROUND=/path/filename

    где /path/filename это путь к вашему изображению

  3. Обновите настройки GRUB2:

    sudo update-grub

GRUB 1.98

Эта часть инструкции подходит только для Ubuntu 10.04.

Выбор фонового рисунка GRUB2 происходит в следующем порядке:

  1. Изображение, указанное в /usr/share/desktop-base/grub_background.sh. По умолчанию этого скрипта не существует.

  2. Картинка, указанная в переменной WALLPAPER в /etc/grub.d/05_debian_theme.

    По умолчанию в WALLPAPER указан файл /usr/share/images/desktop-base/moreblue-orbit-grub.png. Это изображение содержится в пакете desktop-base, который изначально не установлен.

Чтобы установить собственное изображение откройте файл /etc/grub.d/05_debian_theme от имени root:

gksu gedit /etc/grub.d/05_debian_theme

Найдите строку начинающуюся с WALLPAPER=. Допишите в нее путь к своему файлу с изображением. Обновите GRUB2

sudo update-grub

Цвета пунктов меню

Цвета пунктов меню задаются в файле /etc/grub.d/05_debian_theme. Откройте этот файл

sudo gedit /etc/grub.d/05_debian_theme

и найдите строки

COLOR_NORMAL="black/black"
COLOR_HIGHLIGHT="magenta/black"

Первая строка отвечает за цвет не выделенного пункта меню, вторая строка – за цвет выделенного пункта. Значение каждой из этих строк представляет собой два цвета, разделенные слэшем. Первый цвет – цвет текста, а второй – цвет фона строки.

Таблица доступных цветов
 Таблица доступных цветов

Заметьте, что black при использовании в качестве второго параметра (фона) в результате даст прозрачный фон. Использование black в качестве цвета текста дает черный текст.

Ссылки

  • StartUp Manager — графическая утилита предназначенная для изменения настроек в GRUB

Самый популярный менеджер загрузки для современных систем на основе Unix — это GRUB. Или, если точнее, GRUB 2. Вторая версия была полностью переделана и получила новые функции, в числе которых поддержка UEFI, модулей, и сетевой загрузки с последовательным терминалом.

В большинстве современных дистрибутивов Linux в качестве менеджера загрузки используется именно GRUB 2. Помимо функций, необходимых непосредственно для работы с разными способами загрузки, он поддерживает и настройку визуального интерфейса — установку разнообразных тем, шрифтов и обоев. В этой статье мы собрали лучшие темы для Grub.

Устанавливать темы можно двумя способами — вручную и с помощью графической утилиты Grub Сustomizer. Обратите внимание, доступ к настройкам GRUB 2 разрешён только от имени суперпользователя, а это значит, что если у вас нет прав root, то сначала нужно их получить.

Установка темы вручную

Скачайте понравившуюся вам тему и распакуйте её в каталог /boot/grub/themes/. Далее откройте файл /etc/default/grub, отыщите там строчку, начинающуюся со слов GRUB_THEME, и замените её другой:

GRUB_THEME=/boot/grub/themes/папка_темы/тема.txt

Укажите вместо папка_темы и тема.txt название своей папки и темы. Не забудьте удалить знак # в начале строки. Также у вас есть возможность приблизить внешний вид приглянувшейся темы к своему идеалу, сменив обои. Для этого укажите в файле /etc/default/grub путь к фоновой картинке, например:

GRUB_BACKGROUND=/путь/к/картинке

Установка темы с помощью Grub Customizer

В Ubuntu 20.04 Grub Customizer проще всего установить из официального репозитория. Для этого выполните в терминале команду:

sudo apt install grub-customizer

После успешной установки запустите утилиту и введите свой пароль. В открывшемся окне перейдите на вкладку Настройки оформления, нажмите кнопку со знаком + рядом со строкой выбора темы и выберите из списка файлов заранее скачанный архив с темой. Если добавить тему не получается, проверьте, присутствует ли в архиве файл theme.txt.

Многие темы Grub поставляются вместе со скриптом для установки. Если вы выбрали тему, где есть такой скрипт, вам не придется редактировать настройки GRUB 2 вручную или использовать Grub Customizer.

Лучшие темы GRUB

Если в вашем загрузчике GRUB 2 нет оформления или вам наскучил стандартный дизайн, это легко исправить. Ниже мы рассмотрим наиболее популярные и интересные темы, которые можно найти на сайте gnome-look.org.

1. Vimix

Тема в стиле материальном стиле, созданная как дополнение одноимённой темы для GTK. Укомплектована скриптом install.sh, который во многом упрощает её установку. Запускать скрипт нужно дважды; в первый раз он установит зависимости, а во второй саму тему.

2. Tela

Ещё одна тема с материальным дизайном от автора Vimix. Также устанавливается с помощью скрипта install.sh.

3. CyberRe

Кибернетическая тема. Все её элементы окрашены в яркие, контрастные цвета, а благодаря оформлению, схожему с дизайном программ для обработки данных, ваш экран загрузки будет выглядеть очень необычно. Как и две предыдущие темы, устанавливается с помощью скрипта install.sh.

4. Fallout

Эта тема понравится фанатам игры Fallout. Если вы из их числа, устанавливайте новое оформление с помощью утилиты Grub Customizer и ваш экран загрузки будет выглядеть, словно точная копия компьютера из игры.

5. Sleek

Автор темы предлагает на выбор несколько цветовых вариантов: светлый, оранжевый, тёмный и стилизованный под macOS BigSur. В теме можно установить приветствие пользователя по имени; для этого введите желаемое имя во время работы установочного скрипта install.sh.

6. Stylish

Третья материальная тема от Vinceluice — автора Vimix и Tela. Используйте для установки скрипт install.sh.

7. Primitivistical

Примитивная тема для GRUB 2. Её отличительная особенность в том, что при наведении курсора на название дистрибутива рядом с ним появляется соответствующая иконка. При установке скрипт Install.sh распознаёт все имеющиеся на диске операционные системы и задаёт для них изображения.

8. Poly Light

Тема в серых тонах с поддержкой большого количества языков. Можно установить её через Grub Customizer или воспользоваться скриптом install.sh.

9. Atomic

Минималистичная тема с иконками для разных дистрибутивов.

10. Breeze

Тема с иконками и красивой фоновой картинкой. Создана в стандартном для KDE 5 стиле Breeze.

Эту тему можно установить вручную, следуя инструкции, которая дана в начале статьи. Чтобы окно загрузчика выглядело так же, как на скриншоте, выполните в терминале команду:

update-grub

Выводы

Помимо перечисленных здесь тем вы можете найти в интернете другие темы для Grub. В статьи мы постарались как можно подробнее рассказать об установке пользовательских тем для GRUB 2, но если что-то осталось для вас непонятным, оставляйте свой вопрос в комментариях — более опытные читатели обязательно помогут вам его решить.

Creative Commons License

Статья распространяется под лицензией Creative Commons ShareAlike 4.0 при копировании материала ссылка на источник обязательна .

Меню системного загрузчика GRUB, с помощью которого вы можете выбрать операционную систему для загрузки, является функциональным, но не очень привлекательным. Его внешний вид может быть в значительной степени улучшен.

Например, вы можете использовать в качестве его фона один из ваших праздничных снимков. В результате строки меню белого цвета будут наложены на выбранный вами снимок. Если вас заинтересовала данная возможность, вы можете действовать в соответствии с приведенными ниже инструкциями. Описанные манипуляции не являются особо сложными, хотя вам и придется использовать терминал.

Для корректного выполнении описанных действий рекомендуется использовать функции копирования/вставки с целью переноса команд в окно терминала без каких-либо искажений.

Примечание: данные действия имеют смысл лишь в том случае, если на вашем компьютере организована двойная загрузка (например, установлены Linux Mint и Windows). Ведь в противном случае вы просто не будете видеть меню системного загрузчика GRUB…

1. Стандартная процедура

Стандартная процедура изменения фона меню системного загрузчика должна завершаться успешно в большинстве случаев, поэтому в первую очередь рекомендуется выполнить описанные ниже действия.

1.1. Выбор подходящего изображения

В первую очередь вам придется выбрать изображение, подходящее для использования в качестве фона меню системного загрузчика. Подойдет любое изображение формата JPEG или PNG, поэтому вам следует выбрать один из файлов с расширением .jpg, .jpeg или .png, либо воспользоваться графическим редактором для сохранения изображения в одном из упомянутых форматов.

Следует выбирать изображение, на фоне которого строки меню системного загрузчика GRUB белого цвета будут достаточно контрастными, так как мы не будет изменять их цвет!

Более того, изображение должно иметь разрешение, не меньшее, чем стандартное разрешение экрана вашего монитора. Изображение большего разрешения отлично подойдет: GRUB самостоятельно осуществит его масштабирование для вывода на экран вашего монитора.

Если вы не смогли найти подходящее изображение, вы можете загрузить снимок северного сияния над Исландией («Aurora over Iceland», автор: Helena Bartosova, распространяется в соответствии с условиями лицензии Creative Commons BY-SA). Вам нужно просто перейти по приведенной ссылке и после открытия изображения в новой вкладке веб-браузера разместить указатель мыши над ним, нажать на правую кнопку мыши и выбрать пункт меню «Сохранить изображение как…». Вы можете сохранить это изображение в директории Загрузки и оставить его там.

Holiday

После этого вы можете перейти к разделу 1.2.

1.2. Размещение файла выбранного изображения в нужной директории

Далее вам придется разместить файл выбранного изображения (предположим, что он носит имя holiday.jpeg) в директории /boot/grub. Простейший способ выполнения данной операции связан с использованием терминала. Рассмотрим самый простой пример: файл изображения с именем holiday.jpeg уже находится в директории Загрузки, расположенной в вашей домашней директории.

В первую очередь следует открыть окно терминала. После этого нужно ввести в него следующую команду (используйте функции копирования/вставки):

sudo cp -v ~/Downloads/holiday.jpeg /boot/grub

(Разумеется, вам придется заменить имя файла holiday.jpeg на имя выбранного вами файла).

После окончания ввода команды следует нажать клавишу Enter. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter.

1.3. Уведомление системного загрузчика GRUB о необходимости использования нового фонового изображения

Теперь следует уведомить системный загрузчик GRUB о том, что следует использовать файл изображения с именем holiday.jpeg в качестве фона его меню. Вам не придется указывать путь к файлу изображения, так как GRUB обнаружит его самостоятельно. Все, что вам придется сделать — это выполнить стандартную команду обновления конфигурации системного загрузчика.

Для этого также придется открыть окно терминала и ввести в него (с помощью функций копирования/вставки) следующую команду:

sudo update-grub

После окончания ввода команды следует нажать клавишу Enter. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter.

На этом процесс добавления фонового изображения меню системного загрузчика GRUB можно считать оконченным! Вы можете проверить корректность отображения фонового изображения меню системного загрузчика, просто перезагрузив компьютер. Фоновое изображение не отображается? В этом случае вам, скорее всего, придется выполнить операции, описанные в разделе 2.1.

1.4. Дополнительное действие: улучшение читаемости строк меню системного загрузчика

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

Для этого следует загрузить файл измененной темы оформления меню системного загрузчика по ссылке. После окончания процесса загрузки следует переместить загруженный файл темы из директории Загрузки в определенную системную директорию (используйте функции копирования/вставки для переноса команд в окно терминала):

sudo cp -v ~/Downloads/05_debian_theme /etc/grub.d

После окончания ввода команды следует нажать клавишу Enter для ее исполнения. Далее следует выполнить ранее рассмотренную команду для обновления конфигурации системного загрузчика:

sudo update-grub

После окончания ввода команды следует нажать клавишу Enter. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter.

1.5. Замена существующего фонового изображения меню системного загрузчика

Замена существующего фонового изображения меню системного загрузчика не представляет каких-либо сложностей: вам нужно просто удалить используемый в данный момент файл изображения и выполнить описанные выше действия для установки нового фона меню. И это все, что нужно сделать.

Удалить используемый файл изображения достаточно просто. Например, для удаления файла изображения с именем holiday.jpeg следует выполнить следующую команду с помощью терминала:

sudo rm -v  /boot/grub/holiday.jpeg

После окончания ввода команды следует нажать клавишу Enter. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter.

Далее, как обычно, следует обновить конфигурацию системного загрузчика:

sudo update-grub

После окончания ввода команды следует нажать клавишу Enter для ее исполнения.

2. Настройка GRUB в случае неудачной установки фонового изображения меню системного системного загрузчика

Если стандартная процедура не позволяет установить фоновое изображение меню системного загрузчика GRUB, вы можете попытаться настроить системный загрузчик GRUB описанным ниже образом.

2.1. Получение информации о разрешении экрана в момент вывода меню системного загрузчика GRUB

В том случае, если стандартная процедура не дала желаемого результата, вы можете попытаться настроить системный загрузчик GRUB. В первую очередь следует узнать поддерживаемое разрешение экрана вашего монитора (например, 1366×768) в момент вывода меню системного загрузчика GRUB (а не загрузки окружения рабочего стола). Для этого в процессе вывода меню системного загрузчика GRUB следует нажать клавишу c, после чего вы переместитесь в командную оболочку. После приветствия этой командной оболочки следует ввести команду:

videoinfo

После окончания ввода команды нужно нажать клавишу Enter для ее исполнения. В результате вы получите список всех разрешений экрана монитора, поддерживаемых в момент вывода меню GRUB. Вас должно интересовать разрешение с символом звездочки (*), так как оно является предпочтительным.

Примечание: разрешения, поддерживаемые системным загрузчиком GRUB, могут отличаться от разрешений, поддерживаемых окружением рабочего стола.

После того, как вы узнали предпочтительное разрешение экрана монитора в момент вывода меню системного загрузчика GRUB, следует перезагрузить компьютер.

Для упрощения будем в рамках данного руководства считать, что предпочтительным разрешением экрана монитора в момент вывода меню системного загрузчика GRUB является разрешение 1366×768. Здесь 1366 — ширина, а 768 — высота экрана в пикселях.

2.2. Установка корректного разрешения экрана монитора на уровне файла конфигурации GRUB

В первую очередь следует убедиться в том, что вы установили такие приложения, как gksu и leafpad. Для этого следует открыть терминал, скопировать и вставить в его окно следующую команду:

sudo apt-get install gksu leafpad

После окончания ввода команды следует нажать клавишу Enter. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter.

Далее следует скопировать и вставить в окно терминала следующую команду:

gksudo leafpad /etc/default/grub

После окончания ввода команды следует нажать клавишу Enter для ее исполнения. В результате с помощью текстового редактора будет открыт файл конфигурации, в котором вы должны будете найти приведенные ниже строки:

# The resolution used on graphical terminal
# note that you can use only modes which your graphic card supports via VBE
# you can see them in real GRUB with the command `vbeinfo'
#GRUB_GFXMODE=640x480

Теперь следует убрать символ решетки (#) перед последней строкой, так как он деактивирует ее. После этого нужно изменить разрешение на то, которое вы узнали, выполнив действия из предыдущего раздела, например, на 1366×768:

GRUB_GFXMODE=1366x768

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

sudo update-grub

После окончания ввода команды следует нажать клавишу Enter. При запросе пароля вы должны будете ввести свой пароль. Символы вашего пароля не будут отображаться никоим образом, даже с помощью точек, и это нормально. После ввода пароля следует снова нажать клавишу Enter.

Теперь вы должны увидеть фон меню системного загрузчика GRUB. Если это не так, следует попробовать использовать разрешение экрана монитора, на шаг меньшее максимального, из списка поддерживаемых GRUB разрешений.

3. Хотите ознакомиться с дополнительными советами?

Хотите узнать о других настройках и приемах работы с Linux-системами? На данном веб-сайте размещено большое количество подобных материалов.

Grub2 2.00

В необъятных просторах всемирной паутины я не нашёл рукодства по созданию тем для GRUB2, в котором бы были показаны значения всех опций на конкретных примерах. А хочется, чтобы при создании темы результат соответствовал ожиданиями с точностью до пикселя. Поэтому, изучив исходники, я решил написать такое руководство.
Цель документа — дать читателю представление о всех возможностях графического оформления, объяснить ограничения и особенности, предоставить схему для построения темы, в точности соответствующей ожидаемому результату.

Содержание

  • 1 С чего начать
    • 1.1 создание директории
    • 1.2 создание тектового файла
    • 1.3 параметр GRUB_THEME в /etc/default/grub
    • 1.4 файл конфигурации загрузчика /boot/grub2/grub.cfg
  • 2 Общие концепции
    • 2.1 Типы элементов
    • 2.2 Изображения
    • 2.3 Оформление элемента
    • 2.4 Шрифты
  • 3 Описание тестовой схемы
    • 3.1 элементы оформления
      • 3.1.1 графический элемент оформления схемы
      • 3.1.2 графический элемент оформления схемы
      • 3.1.3 оформление меню загрузки
      • 3.1.4 фон полосы прокрутки
      • 3.1.5 ползунок полосы прокрутки
      • 3.1.6 оформление горизонтального индикатора оставшегося времени
    • 3.2 изображения
      • 3.2.1 центральное изображение кругового индикатора оставшегося времени
      • 3.2.2 изображение такта для кругового индикатора оставшегося времени
  • 4 Опции элементов
    • 4.1 Общие опции
    • 4.2 Корневой элемент
      • 4.2.1 desktop-color, desktop-image — фон
      • 4.2.2 title-text, title-color, title-font — вид заголовка
      • 4.2.3 terminal-box — оформление консоли
      • 4.2.4 terminal-font — шрифт консоли
      • 4.2.5 message-font, message-color, message-bg-color — не используются
    • 4.3 boot_menu — меню загрузки
      • 4.3.1 left, top, width, height — координаты прямоугольника
      • 4.3.2 item_color, item_font, selected_item_color, selected_item_font — шрифт и цвет пунктов меню
      • 4.3.3 seleted_item_pixmap_style, item_pixmap_style — оформление пунктов
      • 4.3.4 menu_pixmap_style — оформление меню
      • 4.3.5 item_padding — отступ
      • 4.3.6 height, item_height, item_spacing — расположение элементов
      • 4.3.7 icon-width, icon-height, item_icon_space — иконки и пространство для них
      • 4.3.8 Использование иконок
      • 4.3.9 scrollbar_frame, scrollbar_thumb, scrollbar_width, scrollbar — скроллбар, полоса прокрутки
      • 4.3.10 visible — не показывать меню загрузки
    • 4.4 progress_bar — Горизонтальный индикатор обратного отсчёта времени
      • 4.4.1 left, top, width, height — координаты прямоугольника
      • 4.4.2 id — идентификатор
      • 4.4.3 text — текст, выводимый на индикаторе
      • 4.4.4 text-color, font — цвет шрифта и шрифт
      • 4.4.5 Одноцветный режим и режим с оформлением
      • 4.4.6 bg_color, fg_color, border_color — для одноцветного режима
      • 4.4.7 bar_style, highlight_style — для режима с оформлением
      • 4.4.8 Убрать оформление
      • 4.4.9 visible — не показывать горизонтальный индикатор
    • 4.5 circular_progress — Круговой индикатор обратного отсчёта времени
      • 4.5.1 left, top, width, height — координаты прямоугольника
      • 4.5.2 id — идентификатор
      • 4.5.3 center_bitmap, tick_bitmap — изображения для кругового индикатора
      • 4.5.4 num_ticks, start_angle, ticks_disappear — параметры кругового индикатора
      • 4.5.5 Пример
    • 4.6 label — текстовая строка
      • 4.6.1 left, top, width, height — координаты прямоугольника
      • 4.6.2 font, color — шрифт и цвет шрифта
      • 4.6.3 align — выравнивание
      • 4.6.4 Отобразить время до автоматической загрузки
      • 4.6.5 text — отображаемый текст
      • 4.6.6 Пример с обычным значением параметра text
      • 4.6.7 Пример с особым значением параметра text
    • 4.7 image — изображение
      • 4.7.1 left, top, width, height — координаты прямоугольника
      • 4.7.2 file — путь к файлу
    • 4.8 vbox — вертикальный контейнер
      • 4.8.1 left, top, width, height — координаты прямоугольника
      • 4.8.2 Расположение элементов
    • 4.9 hbox — Горизонтальный контейнер
      • 4.9.1 left, top, width, height — координаты прямоугольника
      • 4.9.2 Расположение элементов
      • 4.9.3 Пример
    • 4.10 canvas — Канва
      • 4.10.1 left, top, width, height — координаты прямоугольника
  • 5 Особенности
    • 5.1 Порядок прорисовки элементов
    • 5.2 Область прорисовки элемента
    • 5.3 Минимальный размер элемента
    • 5.4 Если числовые значения принимают недопустимые значение
    • 5.5 Подбор символа
  • 6 Руководство по созданию шрифтов
    • 6.1 Создание шрифта c помощью grub2-mkfont
    • 6.2 Параметры утилиты grub2-mkfont
      • 6.2.1 —output, -o
      • 6.2.2 —verbose, -v
      • 6.2.3 —name, -n
      • 6.2.4 —size, -s
      • 6.2.5 —bold, -b
      • 6.2.6 ascent, descent или подъём и спусе шрифта
      • 6.2.7 Выбрать символы для перекодировки
  • 7 Параметры, изменяемые вне theme.txt
    • 7.1 Файл /etc/default/grub
      • 7.1.1 GRUB_THEME
      • 7.1.2 GRUB_BACKGROUND
      • 7.1.3 LANG и LANGUAGE

С чего начать

Итак, мы хотим создать собственную тему. Пойдём по порядку.

создание директории

Для начала создадим пустую директорию для хранения файлов новой темы.

Рекомендуется создать под-директорию в /boot/grub2/themes/

(здесь и далее — предполагаем, что загрузчик установлен в директорию /boot/grub2/)

Пусть это будет директория /boot/grub2/themes/test/

создание тектового файла

В созданной директории необходимо создать главный файл темы.

Рекомендуется назвать файл theme.txt.

Итак, мы создали файл /boot/grub2/themes/test/theme.txt

(Здесь и далее — theme.txt или главный файл темы)

параметр GRUB_THEME в /etc/default/grub

Для того, чтобы загрузчик переключился на нашу тему, нужно прописать

в файле /etc/default/grub параметр GRUB_THEME.

Или, проще говоря, добавить строчку GRUB_THEME=/boot/grub2/themes/test/theme.txt.

После знака «=» нужно прописать абсолютный путь к главному файлу темы.

Если в /etc/default/grub уже есть строчка вида GRUB_THEME=…,

то её нужно привести к виду GRUB_THEME=/boot/grub2/themes/test/theme.txt.

Не должно быть двух строк для одного и того же параметра.

файл конфигурации загрузчика /boot/grub2/grub.cfg

До тех пор, пока мы не перегенерируем файл конфигурации загрузчика, наши изменения не вступят в силу.

Обычно в системе есть скрипт update-grub2, который необходимо запустить с правами root.

Если такого скрипта нет, то нужно выполнить (опять же, с правами root) команду grub2-mkconfig -o /boot/grub2/grub.cfg.

Собственно, update-grub2 выполняет именно эту команду.

update-grub2 Необходимо вызывать всякий раз, когда мы вносим изменения в /etc/default/grub.

Почти всё, что касается темы Grub2, описано в theme.txt. Grub2 парсит этот файл каждый раз при загрузке. А значит, чтобы посмотреть изменения, внесённые в theme.txt или в директорию нашей новой темы, достаточно перезагрузиться. update-grub2 прописывает адрес к главному файлу темы в файл конфигурации загрузчика.

Общие концепции

Для начала ознакомьтесь со структурой главного файла.

Каждый параметр имеет определённый тип.

С типами данных можно ознакомиться по следующей ссылке:
Типы данных

Обратите внимание, что глобальные опции и названия компонентов проверяются. И если допущена ошибка, при загрузке будет отображено сообщение об ошибке. Для параметров компонентов это не работает. Если допущена ошибка, то параметр не будет применён и сообщение об ошибке не будет показано.

Типы элементов

Есть несколько предопределённых типов:

Корневой элемент
Верхний уровень theme.txt, здесь указываются общие свойства.
Загрузочное меню (boot_menu)
Основной элемент, здесь указываются свойства меню загрузки.
Горизонтальный индикатор обратного отсчёта времени (progress_bar)
Отображение времени, оставшегося до загрузки пункта по-умолчанию с помощью горизонтальной полосы и или текста.
Круговой индикатор обратного отсчёта времени (circular_progress)
Отображение времени, оставшегося до загрузки пункта по-умолчанию с помощью круговой анимации.
Строка (label)
Вывод текстовой строки.
Изображение (image)
Вывод изображения.
Вертикальный контейнер (vbox)
Контейнер, элемент, родительский для других элементов. Отображает элементы по очереди сверху вниз по вертикали.
Горизонтальный контейнер (hbox)
Контейнер, элемент, родительский для других элементов. Отображает элементы по очереди слева направо по горизонтали.
Канва (canvas)
Контейнер, элемент, родительский для других элементов. Позволяет задать координаты для дочерних элементов.

Корневой элемент — на самом деле, это канва с дополнительными опциями, растянутая на весь экран.

Изображения

Изображения растягиваются до указанных размеров, если указанные размеры больше реального размера изображения. Минимальные значения — реальные размеры изображение.

При выборе фона необходимо учесть эту особенность. Есть различные типы матриц мониторов. На матрице с соотношением сторон 4:3 и на матрице с соотношением сторон 16:9 одно и то же изображение может выглядеть по-разному.

При отображении логотипа рекомендуется использовать абсолютные величины для параметров width и height, чтобы избежать разного рода искажений.

За счёт растяжения удобно делать градиентную заливку — можно сделать полоску с градиентом шириной в 1 пиксель.

Оформление элемента

Оформление элемента состоит из 9 зон — центральная, южная, юго-западная, западная и т.д.

4 угловых зоны (северо-западный и т.д.) не подвергаются растяжению.

Западная и восточная зоны — растягиваются по вертикали.

Северная и южная зоны — растягиваются по горизонтали.

Центральная растягивается по горизонтали и по вертикали.

Если в оформлении присутствует угловая зона — то должны присутствовать обе боковые зоны, соседние по стороне с угловой. Например, если использована северо-восточная зона, то обязательно должны быть северная и восточная зоны. Причём, неизменные величины угловой зоны обязательно должны совпадать с соответствующими величинами боковых зон. В случае нашего примера, высота северо-восточной зоны должна совпадать с высотой северной зоны, а ширина северо-восточной зоны — с шириной восточной зоны.

Шрифты

Шрифты необходимо создавать с помощью специальной утилиты grub2-mkfont. Подробнее в разделе «Создание шрифтов».

Описание тестовой схемы

элементы оформления

Увеличены в 5 раз для наглядности. Alpha-канал — 75%. (прозрачность)

Тёмно-красный фон — для наглядности.

графический элемент оформления схемы

inbox_*.png

Grub2 guide inbox nw.png Grub2 guide inbox n.png Grub2 guide inbox ne.png
Grub2 guide inbox w.png Grub2 guide inbox c.png Grub2 guide inbox e.png
Grub2 guide inbox sw.png Grub2 guide inbox s.png Grub2 guide inbox se.png

графический элемент оформления схемы

button_*.png

Grub2 guide inbox se.png Grub2 guide inbox s.png Grub2 guide button ne.png
Grub2 guide inbox e.png Grub2 guide inbox c.png Grub2 guide inbox w.png
Grub2 guide button ne.png Grub2 guide inbox n.png Grub2 guide inbox nw.png

оформление меню загрузки

menu_*.png

Grub2 guide inbox nw.png Grub2 guide inbox n.png Grub2 guide menu ne.png
Grub2 guide inbox w.png Grub2 guide inbox c.png Grub2 guide menu e.png
Grub2 guide inbox sw.png Grub2 guide inbox s.png Grub2 guide menu se.png

фон полосы прокрутки

scrollbar_frame_*.png

Grub2 guide frame n.png
Grub2 guide frame c.png
Grub2 guide frame s.png

ползунок полосы прокрутки

scrollbar_thumb_*.png

Grub2 guide thumb n.png
Grub2 guide thumb c.png
Grub2 guide thumb s.png

оформление горизонтального индикатора оставшегося времени

progress_*.png

Grub2 guide progress c.png

изображения

центральное изображение кругового индикатора оставшегося времени

center.png

Grub-guide-circular-center.png

изображение такта для кругового индикатора оставшегося времени

tick.png

Grub-guide-circular-tick.png

Опции элементов

Подробное описание значений опций со скриншотами и схемами.

Общие опции

краткое описание

left, top, width, height — Координаты прямоугольника, содержащего элемент.

id — идентификатор. Есть несколько особых значений, которые влияют на поведение некоторых элементов. Использование с другим значениями не приносит никаких бонусов.

Корневой элемент

краткое описание

Корневой элемент — элемент, в котором можно задать некоторые глобальные свойства и в котором размещаются все остальные элементы. Является расширенным элементом типа «канва».

Обратите внимание, что в имени глобальных свойств пишется дефис («-«, например «terminal-box»), а в свойствах элементов — нижнее подчёркивание («_», например «item_height»). Также обратите внимание, что для глобальных свойств используется разделитель двоеточие («:», например «title-text: «GNU Grub»»), а для свойств элементов разделителем является знак равенства («=», например «item_height = 20»).

desktop-color, desktop-image — фон

Первое — цвет фона.

Второе — фоновая картинка.

Если задано desktop-image, то desktop-color не используется.

Картинка должна лежать в директории темы.

Картинка растягивается по размеру экрана.

title-text, title-color, title-font — вид заголовка

Оформление заголовка. Если мы не хотим его отображать, зададим title-text=»».

Текст заголовка всегда будет центрирован по горизонтали и базовая линия шрифта будет отстоять от верхнего края экрана на 40 + подъём (см описание шрифтов)

title-text: "Title Text"
title-color: "#FFFFFF"
desktop-image: "background.png"

Grub2-guide-title-ru.png

terminal-box — оформление консоли

Графическое оформление консоли.

Оформление рисуется СНАРУЖИ прямоугольника консоли. Координаты консоли неизменные и прописаны в исходном коде. Их можно изменить патчем. Смотри ниже.

Обратите внимание, что консоль рисуется поверх центрального элемента с отступом 3 пикселя со всех сторон.

Фон консоли задаётся в /etc/default/grub. Подробнее ниже.

Изображение для фона консоли должно быть непрозрачным.

По умолчанию вместо центрального элемента будет чёрный экран.

terminal-font — шрифт консоли

Имя шрифта, используемого в консоли.

После добавления шрифта в директорию темы необходимо перезапустить update-grub2.

Подробнее о создании шрифтов в разделе о шрифтах.

title-text: ""
desktop-image: "background.png"
terminal-font: "Droid Sans Mono Regular 11"
terminal-box: "inbox_*.png"

Здесь и далее — глобальные опции будут в точности такими.

Grub2-guide-terminal-ru.png

message-font, message-color, message-bg-color — не используются

На текущий момент эти параметры можно задать, но они никак не используются.

краткое описание

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

left, top, width, height — координаты прямоугольника

Стандартные параметры, не забудьте их указать.

item_color, item_font, selected_item_color, selected_item_font — шрифт и цвет пунктов меню

Чтобы понимать, какой пункт выбран, нужно его как-то выделить — цветом, шрифтом или оформлением.
item_color, item_font — цвет и шрифт неактивных пунктов меню
selected_item_color, selected_item_font — цвет и шрифт выбранного пункта

+ boot_menu {
        left = 50%-300
        top = 50%-100
        width = 600
        height = 300
   
        selected_item_color = "#0000FF"
}

Grub2-guide-bootmenu-simple-ru.png

Подробнее о создании шрифтов в разделе о шрифтах.

seleted_item_pixmap_style, item_pixmap_style — оформление пунктов

Оформление рисуется СНАРУЖИ пункта меню.

По умолчанию можно сделать «рамку» только для активного пункта меню.

В ROSA можно сделать оформление для неактивного пунтка.

Обозначим размеры «рамки» выбранного элемента как pad_left, pad_top, pad_right, pad_bottom. Полная высота элемента будет item_height + pad_top + pad_bottom — 1.

Стоит учесть уменьшение на 1, если мы хотим достичь требуемого размера выбранного пункта.

+ boot_menu {
        left = 50%-300
        top = 50%-100
        width = 600
        height = 300
   
        selected_item_color = "#0000FF"
        selected_item_pixmap_style = "button_*.png"
}

Grub2-guide-bootmenu-selected-box-ru.png

Оформление меню рисуется ВНУТРИ указанного для меню прямоугольника. Размеры оформления учитываются для пунтов меню (пункты меню рисуются в центральной области). Для полосы прокрутки немного сложнее (смотри ниже).

item_padding — отступ

Определяет область прорисовки пунктов меню — прямоугольник внутри центральной области оформления меню (или внутри прямоугольника меню, если не задано оформление меню), с отступом item-padding от всех краёв центральной области (или от краёв прямоугольника меню, если не задано оформление меню).

Обратите внимание, что item_padding не работает для скроллбара. Если требуется изменить отступы скроллбара, переделайте оформление меню и оформление скроллбара (например, добавьте прозрачных пикселей к соответствующим областям).

height, item_height, item_spacing — расположение элементов

Расстояние между нижними краями строчек меню (см иллюстрацию) всегда item_height + item_spacing.

Стоит учесть, что количество выводимых пунктов меню рассчитывается с учётом «рамки» и item_padding, но без учёта pad_top и pad_bottom. (см иллюстрацию)

height нужно рассчитывать по неочевидной формуле. Пусть мы хотим видеть N пунктов. Тогда общую высоту меню нужно выставить равной

2*item_padding + menu_pad_top + menu_pad_bottom + (N — 1)*(item_height + item_spacing)
+ pad_top + pad_bottom + item_height — 1

Также стоит учесть, что минимальное число отображённых элементов (N) — это 3.

Если сделать height меньше величины, вычисленной по формуле, то при достаточном количестве пунктов меню при выборе самого нижнего в списке элемента его «рамка» будет недорисована. Если выбрать больше, то при выборе самого нижнего элемента нижний край скроллбара не будет соответствовать нижнему краю пункта.

+ boot_menu {
        left = 50%-300
        top = 50%-100
        width = 600
        height = 289
    
        selected_item_color = "#0000FF"
        selected_item_pixmap_style = "button_*.png"

        menu_pixmap_style = "inbox_*.png"

        item_padding = 20
        
        item_spacing = 20
        item_height = 30
}

Высота вычислена по формуле.

Grub2-guide-bootmenu-vertical-scheme.png

icon-width, icon-height, item_icon_space — иконки и пространство для них

По умолчанию,

icon_width = 32
icon_height = 32
item_icon_space = 4

Текст будет дополнительно отступать на icon_width + item_icon_space от левого края области рисования пункта.
Проще говоря, место под иконку оставляется независимо от того, есть иконка или нет.

Если это поведение нежелательно, стоит обнулить icon_width и выставить нужное значение для item_icon_space.

Стоит также учесть, что ширина пунктов меню дополнительно уменьшено на 2 пикселя. Таким образом, справа мы будем иметь дополнительно два пикселя до рамки меню.

Обратите внимание, что символ шрифта может включать пустые пиксели с любой из сторон. Например, в тестовой схеме расстояние от левой «рамки» по умолчанию — 36 (icon_width + item_icon_space), но расстояние до первого пикселя буквы — 37.

Grub2-guide-bootmenu-icon-space.png

Использование иконок

Для того, чтобы использовать иконки, нужно завести директорию image в директории темы.

После этого необходимо поместить в директорию image иконки в формате png с именем, соответствующим классу.

Список классов по-умолчанию:

  • windows > os
  • gnu-linux > gnu > os
  • osx > darwin > os
  • hurd > gnu > os

Слева направо по убыванию важности. Если найдена иконка windows.png, то будет отображена она, а не иконка os.png.

Также, для основной системы, под которой был установлен Grub2, доступен класс с её именем. (более важный, чем gnu-linux).

Например, для системы ROSA класс будет «rosa» и тп. Классы можно найти в файле /boot/grub2/grub.cfg.

С патчем, применённым в ROSA, подобный класс выводится для остальных установленных на компьютере операционных систем.

scrollbar_frame, scrollbar_thumb, scrollbar_width, scrollbar — скроллбар, полоса прокрутки

Подробнее про полоску прокрутки.

  • Не стоит использовать элементы оформления, отличные от севера, центра и юга для scrollbar_thumb.
  • Для scrollbar_frame можно использовать все 9 областей.
  • Добавляя прозрачные пиксели к крайним областям scrollbar_frame, можно добиться увеличения отступов от краёв экрана и от пунктов меню загрузки.
  • Полоска прокрутки рисуется, начиная от правого края центрального среза. Т.е. если у нас нет оформления меню или в оформлении меню нет восточной части, мы не увидим полоску прокрутки, даже когда она нужна.
  • Полоска рисуется только тогда, когда необходима.
  • Стоит учесть, что ширина элемента меню уменьшена на 2 пикселя от максимальной. Таким образом расстояние от пунктов меню до скроллбара у нас всегда минимум два пикселя.
  • Нужно обязательно указать и scrollbar_frame, и scrollbar_thumb. Если указан только один из элементов, то скроллбар не будет прорисован.
  • Ширина scrollbar_frame и scrollbar_thumb может быть разной.
  • scrollbar_frame рисуется в восточной части оформления меню. scrollbar_thumb рисуется целиком в центральной части scrollbar_frame.
  • scrollbar_width — ширина скроллбара. А именно, ширина центральной части scrollbar_frame. Если сумма scrollbar_width и ширин восточной и западной областей scrollbar_frame меньше ширины восточной части оформления меню, то не вся полоска будет прорисована.
  • Можно задать значение False для scrollbar. Тогда полоса прокрутки не будет показана. Можно просто не указывать scrollbar_thumb и scrollbar_frame.
  • Как уже говорилось выше, на скроллбар не действует параметр item_padding.

В этом примере к «рамке» не добавлены дополнительные пиксели под скроллбар.

+ boot_menu {
       left = 50%-300
       top = 50%-100
       width = 600
       height = 289
        
       selected_item_color = "#0000FF"
       selected_item_pixmap_style = "button_*.png"
        
       menu_pixmap_style = "inbox_*.png"
       
       item_padding = 20
         
       item_height = 30
       item_spacing = 20
        
       scrollbar_thumb = "scrollbar_thumb_*.png"
       scrollbar_frame = "scrollbar_frame_*.png"
       scrollbar_width = 10
}

Как видим, скроллбар недорисован.

Grub2-guide-bootmenu-scrollbar-incorrect-menu-box.png

В этом примере мы заменили «рамку» меню на специально созданную. Далее используем именно такое описание boot_menu.

+ boot_menu {
       left = 50%-300
       top = 50%-100
       width = 600
       height = 289
        
       selected_item_color = "#0000FF"
       selected_item_pixmap_style = "button_*.png"
        
       menu_pixmap_style = "menu_*.png"
       
       item_padding = 20
         
       item_height = 30
       item_spacing = 20
        
       scrollbar_thumb = "scrollbar_thumb_*.png"
       scrollbar_frame = "scrollbar_frame_*.png"
       scrollbar_width = 10
}

Как видим, теперь скроллбар отображается корректно. Также видим, что item_padding не влияет на скроллбар.

Grub2-guide-bootmenu-scrollbar-menu-box.png

visible — не показывать меню загрузки

Можно задать значение False для visible — тогда меню загрузки не будет показано. Аналогично, можно не описывать компонент boot_menu в главном файле темы.

progress_bar — Горизонтальный индикатор обратного отсчёта времени

краткое описание

Этот элемент служит для отображения времени, оставшегося до автоматической загрузки пунта, выделенного по умолчанию.

Изначально прогресс показывается не от начала индикатора.

left, top, width, height — координаты прямоугольника

Стандартные параметры, не забудьте их задать.

Обратите внимание, что если width или height будет меньше, чем необходимо для отображения заданного текста, то width или height будет автоматически увеличено.

id — идентификатор

Чтобы происходило отображение обратного отсчёта времени (текстом или визуально), необходимо задать предопределённое значение для id.

id = "__timeout__"

text — текст, выводимый на индикаторе

Текст, выводимый на индикаторе отсчёта времени.
Есть несколько встроенных особых значений. Они имеют особый смысл и переводятся на разные языки.

  • @TIMEOUT_NOTIFICATION_SHORT@ для «Nс»
  • @TIMEOUT_NOTIFICATION_MIDDLE@ для «осталось Nс.»
  • @TIMEOUT_NOTIFICATION_LONG@ для «Выделенный пункт будет выполнен автоматически через Nс.»

N — это количиство секунд до автозапуска пункта по умолчанию. Строка обновляется каждую секунду.
Также можно задать любое значение.

text-color, font — цвет шрифта и шрифт

Цвет шрифта и шрифт для выводимого на индикаторе текста.

Подробнее о создании шрифтов в разделе о шрифтах.

Одноцветный режим и режим с оформлением

Предусмотрены два варианта оформления:

  • одноцветный, с заливкой областей фиксированными цветами и однопиксельной рамкой
  • с элементам оформления, или «рамочками»

Если использована хотя бы одна опция для оформления с использованием «рамочек», то будет включён второй режим. Иначе используется первый режим.

Подбробнее далее.

bg_color, fg_color, border_color — для одноцветного режима

+ progress_bar {
        left = 50%-300
        top = 50%+200
        width = 600
        height = 50
       
        id = "__timeout__"
        text = "@TIMEOUT_NOTIFICATION_LONG@"
       
        border_color = "white"
}

В примере используются значения по умолчанию:

bg_color = "128, 128, 128"
fg_color = "200, 200, 200"

Grub2-guide-progress-bar-mono-ru.png

bar_style, highlight_style — для режима с оформлением

Обратите внимание, что для highlight_style рекомендуется использовать элементы оформления, состоящие только из центральной области. Иначе индикатор отсчёта времени будет отображён некорректно.

Обратите внимание, что достаточно использовать одну из опций для включения режима.

+ progress_bar {
        left = 50%-300
        top = 50%+200
        width = 600
        height = 50
       
        id = "__timeout__"
        text = "@TIMEOUT_NOTIFICATION_LONG@"
       
        bar_style = "inbox_*.png"
        highlight_style = "progress_*.png"
}

Grub2-guide-progress-bar-styled-ru.png

Убрать оформление

Чтобы убрать оформление и оставить только текстовую строку, нужно придать одинаковые значения bar_style и highlight_style.

Значение может быть любым, не обязательно, чтобы оно соответствовало какому-то реальному элементу оформления.

В значении обязательно должен присутствовать символ «*».

В примере текст сообщения сделан белым.

+ progress_bar {
        left = 50%-300
        top = 50%+200
        width = 600
        height = 50
       
        id = "__timeout__"
        text = "@TIMEOUT_NOTIFICATION_LONG@"
      
        text_color = "white"
       
        bar_style = "*"
        highlight_style = "*"
}

Grub2-guide-progress-bar-only-text-ru.png

visible — не показывать горизонтальный индикатор

Можно задать значение False. Тогда индикатор обратного отсчёта времени не будет отображён. Аналогично, можно просто не указывать индикатор в главном файле темы.

circular_progress — Круговой индикатор обратного отсчёта времени

краткое описание

Круговой индикатор обратного отсчёта времени позволяет отобразить графически время, оставшееся до загрузки пункта по умолчанию.

Отображение оставшегося времени идёт путём прорисовки «тактов».

Если не установлена опция ticks_disappear, то такты появляются (по кругу, по часовой стрелке), пока не замкнут круг.

Если установлена опция ticks_disappear, то такты исчезают.

Всегда рисуется на один такт меньше ожидаемого. Изначально часть тактов может быть прорисована (круговой индикатор начинает заполняться не с нуля).

left, top, width, height — координаты прямоугольника

Стандартные параметры, не забудьте их задать. Рекомендуются придать ширине и высоте равные значения. Подробнее об особенностях координат прямоугольника смотрите далее.

id — идентификатор

Чтобы происходило отображение обратного отсчёта времени, необходимо задать значение для id.

id = "__timeout__"

center_bitmap, tick_bitmap — изображения для кругового индикатора

Центральное изображение не масштабируется и не поворачивается. Рисуется в центре указанного прямоугольника. Если изображение меньше прямоугольника, то часть изображения не будет отображена.

Изображение для тактов не масштабируется и не поворачивается. Рисуется многократно по окружности, вписанной в указанный прямоугольник.

Рекомендуются квадратные изображения (ширина и высота совпадают).

Вычисления ведутся по ширине элемента и по ширине такта.

Если ширина элемента больше высоты, то часть тактов не будет прорисована.

Grub-guide-circular-wrongwidth.png

Если высота такта будет больше ширины, то такты будут прорисованы некорректно.

Grub-guide-circular-wrongtickheight.png

Рекомендуется сделать ширину такта такой же чётности, как чётность ширины элемента. (только в таком случае можно добиться корректного симметричного отображения)

num_ticks, start_angle, ticks_disappear — параметры кругового индикатора

num_ticks — количество тактов

start_angle — стартовый угол (относительно оси «x»). Измеряется в «попугаях». Один «попугай» — 1/256 круга. Таким образом, -90 градусов (или -π/2), в «попугаях», будет -64.

По причине того, что tick_bitmap прорисовается без изменений (не поворачивается, не масштабируется, не изменяется), и в силу того, что углы измеряются в оговоренных «попугаях», рекомендуется задавать для num_ticks значения, равные степеням двойки. Таким образом, мы получим более гладкую и симметричную картину.

ticks_disappear — по умолчанию такты появляются, пока не замкнут окружность.

Grub-guide-ticks-appear.png

Можно задать для величины ticks_disappear значение True. Тогда такты будут исчезать, пока не исчезнет последний.

ticks_disappear = "True"

Grub-guide-ticks-disappear.png

Обратите внимание, что на каждом шаге рисуется на один такт меньше ожидаемого количества.

Пример

+ circular_progress {
        left = 50%-450
        top = 50%+310
        id = "__timeout__"
        width = 51
        height = 51
        center_bitmap = "center.png"
        tick_bitmap = "tick.png"
        num_ticks = 8
}

Grub-guide-circular.png

label — текстовая строка

краткое описание

Мы можем отобразить текст с помощью элемента label.
Также, задав определённым образом id и text, мы можем отобразить время, оставшееся до автоматической загрузки пункта по умолчанию.

Обратите внимание, что строки не переносятся. Если текст не помещается в заданный прямоугольник, он пишется правее до конца экрана.

left, top, width, height — координаты прямоугольника

Стандартные параметры, не забудьте их задать.

Обратите внимание, что width используется только для оценки смещения текста, если задан параметр align со значениями «center» или «right».

Также обратите внимание, что height не используется.

font, color — шрифт и цвет шрифта

Цвет шрифта и шрифт для выводимого на элементе текста.

Подробнее о создании шрифтов в разделе о шрифтах.

align — выравнивание

Доступны три значения:

  • left — выровнять текст по левому краю элемента
  • center — выровнять текст по центру элемента
  • right — выровнять текст по правому краю элемента

Отобразить время до автоматической загрузки

Чтобы происходило отображение обратного отсчёта времени, необходимо задать значение для id. И не должен быть указан параметр text.

+ label {
        left = 50%-350
        top = 50%+260
        height = 30
        width = 30
       
        id = "__timeout__"
       
        color = "white"
}

Grub-guide-label-timeout.png

text — отображаемый текст

Мы можем отобразить любое текстовое сообщение.
Есть несколько особенных значений.

  • @KEYMAP_SHORT@ для отображения ««enter»: загрузка, «e»: параметры, «c»: командная строка»
  • @KEYMAP_MIDDLE@ для отображения «Нажмите «enter» для загрузки выбранной ОС, «e» для редактирования команд до загрузки или «c» для получения командной строки.»
  • @KEYMAP_LONG@ для отображения «Нажмите «enter» для загрузки выбранной ОС, «e» для редактирования команд до загрузки или «c» для получения командной строки. По ESC осуществляется возврат в предыдущее меню.»

Особенные значения переводятся на выставленный язык.

Обратите внимание, что текст не переносится построчно и не обрезается по ширине.

Пример с обычным значением параметра text

+ label {
        left = 50%-300
        top = 50%+220
        height = 30
        width = 600
       
        color = "white"
       
        align = "right"
       
        text = "Some text."
}

Grub-guide-label-text.png

Пример с особым значением параметра text

+ label {
        left = 50%-300
        top = 50%+220
        height = 30
        width = 600
       
        color = "cyan"
       
        align = "center"
       
        text = "@KEYMAP_SHORT@"
}

Grub-guide-label-special.png

image — изображение

краткое описание

Мы можем вывести изображение на экран.

Если высота меньше реальной высоты изображения или не указана, то высоте будет присвоено значение высоты изображения.
Аналогично для ширины.

Если высота или ширина больше реальной высоты или ширины, соответственно, то изображение будет растянуто до указанных размеров.

left, top, width, height — координаты прямоугольника

Стандартные параметры, не забудьте их задать.

Если мы хотим отобразить изображение не растянутым, мы можем не задавать width и height — они будут заданы автоматически.

file — путь к файлу

Полный путь к файлу изображения.

vbox — вертикальный контейнер

краткое описание

Контейнер. Элемент, который содержит другие элементы.

left, top, width, height — координаты прямоугольника

Не забудьте указать left и top. height и width указывать не нужно — они всё равно будут переопределены.

Расположение элементов

Элементы, содержащиеся в вертикальном контейнере, выводятся последовательно сверху вниз.

Для дочерних элементов не нужно указывать left и top — эти значения не берутся в расчёт.

Подсчитывается максимум из ширин элементов, содержащихся в вертикальном контейнере, затем всем ширинам элементов и ширине вертикального контейнера задаётся значение этого максимума.

Значения высот дочерних компонентов сохраняются.

+ vbox {
        left = 50%+310
        top = 50%-50
        width = 20
        height = 100
       
#D1
        + image { left = 50 top = 10 width = 60 height = 60 file = "center.png" }
#D2
        + image { left = 40 top = 20 width = 70 height = 70 file = "button_n.png" }
}

Grub-guide-vbox-layout.png

hbox — Горизонтальный контейнер

краткое описание

Контейнер. Элемент, который содержит другие элементы.

left, top, width, height — координаты прямоугольника

Не забудьте указать left и top. height и width указывать не нужно — они всё равно будут переопределены.

Расположение элементов

Элементы, содержащиеся в горизонтальном контейнере, выводятся последовательно слева направо.

Для дочерних элементов не нужно указывать left и top — эти значения не берутся в расчёт.

Подсчитывается максимум из высот элементов, содержащихся в горизонтальном контейнере, затем всем высотам элементов и высоте горизонтального контейнера задаётся значение этого максимума.

Значения ширин дочерних компонентов сохраняются.

Пример

+ hbox {
        left = 300
        top = 50%+310
        width = 20
        height = 100
       
#D1
        + image { left = 50 top = 10 width = 60 height = 60 file = "center.png" }
#D2
        + image { left = 40 top = 20 width = 70 height = 70 file = "button_n.png" }
}

Grub-guide-hbox-layout.png

canvas — Канва

краткое описание

Контейнер. Элемент, который содержит другие элементы. Координаты элементов, содержащихся в контейнере, являются относительными. Таким образом, (0,0) для содержимого контейнера — это координаты верхнего левого угла контейнера.

Корневой элемент является канвой.

left, top, width, height — координаты прямоугольника

Стандартные параметры, не забудьте их задать.

Особенности

Общие особенности, не относящиеся к конкретному пункту.

Порядок прорисовки элементов

В вертикальном контейнере элементы рисуются сверху вниз, по порядку.

В горизонтально контейнере элементы рисуются слева направо, по порядку.

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

Область прорисовки элемента

Для каждого элемента определена область прорисовки — с помощью параметров left, top, width, height.

Всё, что выходит за рамки области прорисовки — не будет прорисовано.

Минимальный размер элемента

Для каждого элемента подсчитывается минимально допустимая ширина и минимально допустимая высота. Если указанная в файле темы ширина или высота меньше минимальной ширины или высоты (соответственно), то ширина или высота переопределяются.

Если числовые значения принимают недопустимые значение

Описание числовых значений.

Обратите внимание, что абсолютные и относительные значения берутся относительно родительского контейнера.

Для удобства назовём ширину и высоту родительского контейнера, соответственно, parent_width и parent_height.

Если left или top оказались отрицательными, они приравниваются к 0.

Если left + width оказывается больше, чем parent_width, то width приравнивается к parent_width — left. Таким образом, правый край будет совпадать с правым краем родительского контейнера.

Если top + height оказывается больше, чем parent_height, то height приравнивается к parent_height — top. Таким образом, нижний край будет совпадать с нижним краем родительского контейнера.

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

Подбор символа

Когда указанный в файле темы шрифт не найден, или в указанном шрифте отсутствуют нужный символ — берется символ из наиболее близкого по параметрам шрифта (среди представленных в теме).

Например, в некоторых шрифтах нет символов для прорисовки рамок, и если задать шрифт консоли именно такой, — то символ рамки будет взять из другого шрифта. Не зная данной особенности, можно долго удивляться неожиданному результату (например, прерывистая рамка)

Руководство по созданию шрифтов

краткое описание

GRUB использует свой собственный формат шрифтов. Эти шрифты можно получить с помощью утилиты grub2-mkfont.

После создания шрифта и помещения его в директорию темы, необходимо перезапустить утилиту grub2-update, чтобы изменения были приняты.

Создание шрифта c помощью grub2-mkfont

GRUB не использует кернинг (изменение межсимвольного расстояния при определённых сочетаниях символов).

Полученный в результате действия утилиты файл обязательно должен иметь расширение .pf2

Синтаксис:

grub2-mkfont INPUT_FONT [дополнительные параметры] -o OUTPUT_FONT

Полученный файл нужно положить в директорию с главным файлом темы.

Параметры утилиты grub2-mkfont

—output, -o

Обязательный параметр. Имя полученного файла. Должно иметь расширение .pf2, чтобы шрифт мог быть прочитан GRUB.

—verbose, -v

grub2-mkfont DroidSansMono.ttf -o tmp.pf2 -v

Font name: Droid Sans Mono Regular 16
Max width: 13
Max height: 17
Font ascent: 17
Font descent: 5
Number of glyph: 591

Отобразить информацию о созданном шрифте.

Отображает имя, максимальную ширину и высоту, подъём и спуск шрифта, количество символов.

—name, -n

Задать имя шрифта.

По умолчанию, имя шрифта формируется следующим образом: ИМЯ_ШРИФТА ТИП РАЗМЕР

—size, -s

Задать размер шрифта в пикселях.

По умолчанию 16.

—bold, -b

Отображить жирный шрифт.

По умолчанию формируется обычный шрифт.

ascent, descent или подъём и спусе шрифта

Grub-guide-font-scheme.png

--asce, -c

ascent или подъём шрифта (см схему)

--desc, -d

descent или спуск шрифта (см схему)

Можно задать эти параметры, если мы хотим получить меньшее большее межстрочное расстояние, выровнять базовую линию (baseline на чертеже). Если мы указываем эти параметры вручную, необходимо проследить, чтобы нужные нам символы были отображены полностью.

Выбрать символы для перекодировки

Мы можем выбрать только определённую группу символов для перекодировки.

--ascii-bitmaps

чтобы перекодировать только ascii символы

--range, -r

чтобы перекодировать выбранный диапазон символов

Параметры, изменяемые вне theme.txt

Настройки, прописанные вне главного файла темы.

Файл /etc/default/grub

GRUB_THEME

Полный путь главного файла темы.

GRUB_BACKGROUND

Полный путь фонового изображения консоли. Данный файл должен быть строго непрозразным. Растягивается до размеров консоли (с учётом 3 пикселей рамки)

LANG и LANGUAGE

Чтобы задать используемый в GRUB язык, нужно указать оба этих параметра. Значения должны совпадать.

Можно использовать различный синтаксис: ru, ru_RU, ru_RU.UTF-8.

Владимир Тестов, ROSA, 2013.

Настройка фона Grub 2 В этой заметке я расскажу как добавить фоновое изображение для загрузчика Grub 2, а также как изменить цвет шрифта в меню Grub. Фоновое изображение (Splash Image) появляется на экране выбора операционной системы и в процессе загрузки системы. Во-первых, это красиво, а во-вторых, добавляет индивидуальности вашему компьютеру.

Примечание: Периодически выходят новые версии Grub 2 и в настройке Grub могут появляться новые возможности и особенности. Действия, описанные ниже, я выполнял над Grub версии 1.99-21ubuntu3.1 в Ubuntu 12.04 (Unity).

Grub 2 поддерживает изображения в форматах PNG, JPG/JPEG и TGA. Изображения должны быть сохранены в определенном формате (для более подробной информации обратитесь к документации вашей версии Grub). Вы можете использовать свое изображение и сохранить его в нужном формате, например, в редакторе GIMP. А можно воспользоваться готовым набором красивых фоновых изображений из пакета grub2-splashimages.

Устанавливаем фоновое изображение

Установим пакет, который содержит готовые фоновые изображения для Grub2. Выполните в терминале команду:

sudo apt-get install grub2-splashimages

Изображения автоматически устанавливаются в директорию /usr/share/images/grub. Чтобы выбрать нужное изображение откройте эту директорию в файловом менеджере. Например, чтобы открыть ее в файловом менеджере Nautilus, выполните команду:

sudo nautilus /usr/share/images/grub

Изображения из пакета grub2-splashimages

Теперь нужно прописать путь до вашего изображения в файле конфигурации Grub. Для этого откроем файл конфигурации в редакторе GEdit:

sudo gedit /etc/default/grub

Файл /etc/default/grub содержит различные настройки для Grub 2. Строки, начинающиеся с символа решетка #, являются комментариями и игнорируются. Для указания пути до фонового изображения используется опция GRUB_BACKGROUND. Добавьте в файл следующую строку:

GRUB_BACKGROUND="/usr/share/images/grub/Moraine_Lake_17092005.tga"

В кавычках я указал путь до файла Moraine_Lake_17092005.tga.

Обновляем настройки Grub

Теперь нужно, чтобы Grub обновил свои настройки. Для этого выполните команду (в результате выполнения этой команды настройки ваши автоматически записываются в файл /boot/grub/grub.cfg):

sudo update-grub

В результате на экран будут выводится строки вида:

yuriy@yuriy-NIX:/usr/share/images/grub$ sudo update-grub
Generating grub.cfg ...
Found background: /usr/share/images/grub/Moraine_Lake_17092005.tga
Found background image: /usr/share/images/grub/Moraine_Lake_17092005.tga
Found linux image: /boot/vmlinuz-3.2.0-29-generic
...

Мы видим, что Grub нашел наше изображение (строка «Found background image …»). Если такой строки нет, значит вы неправильно указали путь до файла (путь нужно указывать абсолютный).

Если же вы получили сообщение вида:

yuriy@yuriy-NIX:/usr/share/images/grub$ sudo update-grub
Generating grub.cfg ...
Found background: /home/yuriy/mybg.jpg
Unsupported image format

Это значит, что изображение имеет формат, который не поддерживается загрузчиком Grub.

Перезагружаем компьютер

Итак, если все настройки были выполнены правильно, то можно перезагрузить компьютер и проверить результат.

Изменяем цвет меню Grub (цвет шрифта)

Теперь рассмотрим, как изменить цвета в меню Grub. Цвета можно задать в файле /etc/grub.d/05_debian_theme. Мы установим две опции color_highlight и color_normal:
color_highlight — цвет текущего выбранного пункта меню;
color_normal — цвет остальных пунктов меню.

Цвет задается в виде 2 цветов, разделенных косой чертой — color1/color2:
color1 — это цвет шрифта;
color2 — это цвет фона.
В качестве значений необходимо указать название цвета. Поддерживаются следующие значения: black, blue, brown, cyan, dark-gray, green, light-cyan, light-blue, light-green, light-gray, light-magenta, light-red, magenta, red, white, yellow.
Если в качестве параметра color2 вы используете black, то Grub трактует это, как прозрачный цвет.

Откроем для редактирования файл /etc/grub.d/05_debian_theme:

sudo gedit /etc/grub.d/05_debian_theme

Найдите в нем следующие строки:

	if [ -z "" ] && [ -z "" ]; then
		echo "  true"
	fi

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

	if [ -z "" ] && [ -z "" ]; then
		echo "  true"
		echo "  set color_highlight=magenta/black"
		echo "  set color_normal=green/black"
	fi

Сохраните файл и выполните команду:

sudo update-grub

Теперь осталось перезагрузить компьютер. В моем случае меню Grub стало выглядеть следующим образом:
Фоновое изображение Grub 2

Contents

  1. Choosing a GRUB 2 Background Image
  2. Installing Splash Images

    1. Image Priority
    2. GRUB 1.99 and later
    3. GRUB 1.98
    4. Troubleshooting Splash Images
  3. Setting Menu Font Colors

    1. GRUB 2 Colors

      1. About «Black»
      2. Configuration settings (no splash image)
      3. Configuration settings (splash image present)
  4. Testing Fonts and Splash Images

    1. Tips & Techniques for Live Testing
  5. Changing Menu Resolutions
  6. Creating User Splash Images

    1. Resolution Settings
    2. Image Creation and Setup

GRUB 2’s splash image/background capability is greatly enhanced over its predecessor, GRUB 0.97. This page provides information on how to add a background image, change font colors and resolutions on the GRUB 2 menu without using a theme. The developers have created a set of compatible background images available as a package download but GRUB 2 accepts a variety of popular image formats. The user may choose any compatible image to use on the GRUB 2 menu.

GRUB 2 themes are becoming more available and are discussed in the Grub2#Themes community documentation. A separate page for themes is under development.

g2_lake_splash.png

A collection of compatible background images such as the one to the left is available from the Universe repository in the grub2-splashimages package.

Choosing a GRUB 2 Background Image

GRUB 2 can use PNG, JPG/JPEG and TGA images for the background. The image must meet the following specifications:

  • JPG/JPEG images must be 8-bit (256 color). Else you will get errors saying «Too many Huffman tables». Since most of the time you will not want to limit yourself to 256 colors (which is totally yesteryear) you will probably find PNG much preferable.
  • Images should be non-indexed, RGB.
  • The GIMP image editor is one application which can edit images to conform to the GRUB 2 standards. Use the Image > Mode menu options to set the properties to RGB and ensure the mode is not set to Indexed.

Sample GRUB 2 splash images are contained in the grub2-splashimages package in the Universe repository. The package can be installed in several ways:

  • Synaptic (if installed). Select and install grub2-splashimages.

  • Ubuntu Software Center. Search for grub2-splashimages and click the Install button.

  • Terminal:
    • sudo apt-get install grub2-splashimages

    Once installed, the images are located in the /usr/share/images/grub folder.

important The grub-splashimages package was designed for GRUB 0.97 and is not compatible with GRUB 2.

Installing Splash Images

The method to include a background image in Grub 2 varies depending on the version of GRUB installed on the system. Early versions of Grub 1.98, installed on Lucid, are different than later versions of Grub 1.98 installed on Maverick. See the specific instructions for the release you are using. Instructions for Grub 1.97~beta in Karmic Koala (unsupported) are located at the end of this section.

The installed version of GRUB on the system can be obtained by running grub-install -V

The final step in adding the splash image in all the methods described below is to update the GRUB 2 menu. 1. Update GRUB to incorporate the image into the GRUB 2 menu:

  • sudo update-grub

    As the command runs, the user should see a terminal message indicating the image was found. If the image is not found, refer to the Troubleshooting Splash Images section of this page.

  • g2_update-grub_imagefound.png

Image Priority

If more than one suitable image is available to GRUB 2, the following order is used to determine which image is used as the GRUB 2 background.

  1. GRUB_BACKGROUND setting in /etc/default/grub

  2. First image found in /boot/grub
    • The first image found, in this order: jpg, JPG, jpeg, JPEG, png, PNG, tga, TGA
    • If multiple images of the same extension, alphanumerically.
  3. Wallpaper designated in /usr/share/desktop-base/grub_background.sh (if desktop-base installed)

  4. WALLPAPER= line in /etc/05_debian_theme * GRUB 1.98 only

    • The default setting is /usr/share/images/desktop-base/desktop-grub.png (the desktop-base package must be installed)

  5. Default theme (no image): default_theme colors specified in /etc/grub.d/05_debian_theme

Note: Not all these options are available in GRUB 1.98

GRUB 1.99 and later

The following guidance for setting the background image is for GRUB 2 version found in Ubuntu 11.04, Natty Narwhal and later.

GRUB 1.99 greatly simplified adding a GRUB 2 splash image. In addition to the following procedures, the methods detailed for GRUB 1.98 will also work.

Note: Adding a background image requires system folder operations. The user must use administrator privileges to make the required changes.

  1. Review image requirements in the previous section to ensure the image you select is compatible with GRUB 2.

The user has two options for selecting the splash image to be used. The first requires editing a GRUB 2 configuration file. The second is to copy a compatible image file to the grub folder.

  1. Open /etc/default/grub with a text editor.

    • Add the following line:
      • GRUB_BACKGROUND=/path/filename

      • Example: GRUB_BACKGROUND=»~/Pictures/grubbackround.png»
    • This option takes precedence over the next method.

OR:

  1. Place a suitable image in the grub folder.

    • The default location for this folder is /boot/grub.

    • If more than one suitable image resides in the grub folder, the priority for the image used in GRUB 2 is:

      • First image found in /boot/grub
        • The first image found, in this order: jpg, JPG, jpeg, JPEG, png, PNG, tga, TGA
        • If multiple images of the same extension, alphanumerically.
  2. Update GRUB to incorporate the image into the GRUB 2 menu:
    • sudo update-grub

GRUB 1.98

The following guidance for setting the background image is for GRUB 2 version 1.98-1ubuntu13 found on Ubuntu 10.04, Lucid Lynx.

The GRUB 2 splash image, if it exists, is selected in the following order:

  1. The image specified in /usr/share/desktop-base/grub_background.sh. This script does not exist in a default Ubuntu installation.

  2. The file listed in the WALLPAPER line in /etc/grub.d/05_debian_theme.

    • The default file listed in the WALLPAPER line is /usr/share/images/desktop-base/moreblue-orbit-grub.png.

    • This image is present only if the desktop-base package is installed.

    • The image will be used if GRUB 2 locates it in either the /usr/share/images/desktop-base or the /grub folder (normally a subfolder of /boot.

The use a different splash image:

  1. Open /etc/grub.d/05_debian_theme for editing as root:

    • gksu gedit /etc/grub.d/05_debian_theme

  2. Find and edit the WALLPAPER= line. Include the new path and filename of the image you wish to use. Save the file when done editing.

  3. Update GRUB 2.
    • sudo update-grub

Troubleshooting Splash Images

If no image appears in the GRUB 2 menu, the following procedures may help determine the problem:

  • If «Found background image: » is not displayed as a terminal message when update-grub is executed, confirm that the file exists and that the path and filename in the appropriate configuration file are correct.

  • The image is of the proper size & format (8-bit JPG/JPEG, PNG, or TGA)

  • The file is an RGB, non-indexed image.
  • The console mode is not enabled in /etc/default/grub

  • The update-grub command must be executed to place the background image information into the /boot/grub/grub.cfg file.

  • If the problem is not determined, substituting one of the images provided in the grub2-splashimages package will help determine if the cause is due to an incompatible image.

If the incorrect image appears as the GRUB 2 background:

  • Review the Image Priority section of this document.

  • Run sudo update-grub and view the terminal display to check what image is being selected.

  • Review the Font Background section of this document. The font background must be transparent for an image to be viewable.

Setting menu font colors is normally the job of theme files, which are discussed in greater depth in the Grub2/Themes community document. This section will detail how to change font, highlight and background colors on the GRUB 2 menu without creating detailed themes.

Note that there is a Debian wishlist bug aiming to make the process of specifying custom text/menu colours easier, especially in conjunction with a splashimage. The methods provided below require you to edit different files in different cases. The proposed GRUB patch will enable all settings to be set at a single source i.e. /etc/default/grub. Brave souls can, at their own risk, consider building from Debian GRUB sources with the patch applied or, far easier, just apply the relevant modifications to your already present /etc/grub.d/05_debian_theme and /usr/sbin/grub-mkconfig files once to enable further customization possible solely from /etc/default/grub.

GRUB 2 Colors

For each font color entry, two inputs are required, separated by a /. The first entry is the text color, while the second entry is generally the background color if an image is not present.

  • Example: menu_color_highlight=black/white

GRUB 2 accepts the following colors for the menu fonts and background:

  • black

    blue

    brown

    cyan

    dark-gray

    green

    light-cyan

    light-blue

    light-green

    light-gray

    light-magenta

    light-red

    magenta

    red

    white

    yellow

About «Black»

GRUB 2 treats «black» differently when it is the second entry in a setting, for example » color_normal=white/black «. In this case, black is considered a value for «transparent». The underlying image will be visible rather than the color black. This distinction becomes important when an image is present in the menu. GRUB 2 automatically ignores the menu_color_highlight and menu_color_normal values when an image is present and uses color_normal=white/black and color_highlight=black/white.

Setting the background value of non-highlighted entries black (the «transparency» value) ensures the image will be viewable. Since the developers don’t know what image the user might choose, they selected the other values to provide the best chance that the menuentries will be visible. The colors may be changed to other values when using themes or by writing them directly into the 05_debian_theme file.

important.png If using a splash image and the second value of color_normal is not black the splash image will be hidden behind a solid color background.

Configuration settings (no splash image)

The 3 main font color settings which the user might wish to change on the GRUB 2 menu are listed below. These include the color codings for the menuentries (highlighted and unselected) and the colors of the background and text outside of the menu ‘box’.

  • menu_color_highlight=text-color/bg-color

    The color of the highlighted menuentry and its background within the menu ‘box’.

    menu_color_normal=text-color/bg-color

    The color of non-selected menuentries within the menu ‘box’

    color_normal=text-color/bg-color

    The color of the text and background outside the menu ‘box’

Each setting contains two values, separated by a /. The first is the foreground color; the second is the background color. In the example below the colors of the text/background are produced by the settings in bold white.

g2_nosplash_menu.png

color_normal=cyan/black *

* Black in this case is treated as a transparency, revealing the Ubuntu 12.04 aubergine.

menu_color_highlight=yellow/dark-gray

menu_color_normal=black/light-gray

Although specific theme files should be built and referenced in /etc/default/grub, for Ubuntu users the /lib/plymouth/themes folder contains a relatively empty GRUB 2 theme file referenced during update-grub execution. A user can add basic settings with minimal effort to this file to change the GRUB 2 menu colors if no splash image is detected. Refer to the next section for an explanation of what happens if a splash image is detected. Since this is a system file, administrator/root privileges are required to edit the file.

To modify font colors when no splash image is used:

  • Open /lib/plymouth/themes/default.grub for editing as root.

    • Add the following entries below the existing lines. Substitute color values as desired:
      • set menu_color_highlight=yellow/dark-gray
        set menu_color_normal=black/light-gray
        set color_normal=yellow/black

  • Save the file and run update-grub The above example entry creates yellow highlighted text on a dark gray bar with black unselected text on a light gray background. Outside the ‘box’ is yellow informational text and an aubergine background. The aubergine background is the result of the Ubuntu 12.04 settings. Ubuntu has a default background of aubergine, and in this case the black setting in color_normal is treated as transparent.

Configuration settings (splash image present)

When an image is present GRUB 2 uses only color_normal and color_highlight settings. Themes are recommended when the user wishes to override the default monochromatic color text scheme. The user can add the menu_color_highlight and menu_color_normal settings to system files if desired.

  • The color of selected menu entries is set by menu_color_highlight setting.

  • The color of non-selected menu entries is set by menu_color_normal setting.

  • The second value of the color_normal entry must be set to black for the image to be visible.

To add menu_color_normal and/or menu_color_highlight values when using a splash image:

  • Open /etc/grub.d/05_debian_theme as root.

    • Find the following lines:
      • if [ -z "${2}" ] && [ -z "${3}" ]; then
            echo "  true"
        fi

    • Change the entry to the following, replacing ‘color1’ and ‘color2’ to the desired colors. Leave /black as is!

      • if [ -z "${2}" ] && [ -z "${3}" ]; then
            # echo "  true"
            echo "    set color_highlight=color1/color2"
            echo "    set color_normal=color1/black"
        fi

  • Save the file and run update-grub

Testing Fonts and Splash Images

info.png Rather than rebooting to test the color combinations, the user can see the changes by using GRUB 2’s command line during the boot process. It is also a good way to ensure the color combinations are visible and the command settings are correct. Settings tested in a GRUB 2 terminal are not saved.

Tips & Techniques for Live Testing

  • Select the splash image and initial font colors as described above, update GRUB 2’s files with update-grub, and reboot.

  • When the GRUB 2 splash image/menu appears, press any key to stop the countdown timer.
  • Press c to enter the GRUB 2 command line.

  • Typing set will display the current settings.

  • Experiment with various color/highlight modes. Make changes by typing:
    • set color_normal=color1/color2

    • set color_highlight=color1/color2

    • set menu_color=color1/color2

  • Text colors are viewable immediately after the command is entered. You can use the «up» arrow to recall the last command and edit it to quicky test different color combinations.
  • Pressing ESC returns the user to the main menu to view the full effect

  • Repeat as desired.
  • Remember the desired color combinations, boot normally and edit the appropriate file(s).
    • g2_splash_color-edit.png

  • Update GRUB 2 if any changes are written to file: sudo update-grub

If the user wishes to change the resolution of the GRUB 2 screen for image enhancement or general font size changes:

  1. Set the desired resolution in /etc/default/grub

    • Change the value of GRUB_GFXMODE= (Example: GRUB_GFXMODE=800×600)

    • If unsure of what resolutions are available to GRUB 2 they can be displayed by typing vbeinfo in the GRUB 2 command line. The command line is accessed by typing «c» when the main GRUB 2 menu screen is displayed.

  2. Select an image of the same proportions.
    • GRUB 1.99 — Place the image in the grub folder or add a GRUB_BACKGROUND entry in /etc/default/grub

    • GRUB 1.98 — Change the value of WALLPAPER in /etc/grub.d/05_debian_theme

    • GRUB 1.99 — Place the image in the grub folder or add a GRUB_BACKGROUND= entry in /etc/default/grub

    • If an image of the correct size is not used, the menu will not be positioned correctly.
    • Use the image editor of your choice to create/resize an image to the correct size.
    • The user may be able to view the image size via Properties in a file browser (check the Properties Image tab in Nautilus).

  3. Run update-grub to update GRUB 2

Creating User Splash Images

GRUB 2’s splash image management makes it easy to use a wide variety of splash images.

Resolution Settings

The images in the grub2-splashimages package are primarily 640×480 images.

GRUB 2 looks for a resolution setting in /etc/default/grub. If uncommented, the resolution is determined by this line:

  • If no setting is found in /etc/default/grub, GRUB 2 attempts to use the highest resolution possible. GRUB 2 may not be able to handle the same resolutions as the computer can once the operating system is booted.

Image Creation and Setup

info.png In Ubuntu, refer to the Display in DASH or via the System, Preferences, Display menu for available monitor resolutions, or run vbeinfo in the GRUB 2 terminal to display the resolutions available it.

  1. Determine the resolution you will use for the GRUB 2 splash image.
  2. Create or resize any image to to the appropriate size.
    • GRUB 2 currently supports PNG, TGA, and 8-bit JPG/JPEG images.

    • The images should be RGB, non-indexed.
      • If using GIMP, naming the file with the applicable extension will save the file in the given format. Set the correct properties via the «Image > Mode» menu.

  3. Make the applicable changes in the GRUB 2 configuration files:
    • /etc/default/grub: Uncomment the GRUB_GFXMODE=640×480 line and change the value if the resolution will be other than 640×480.

    • Add the GRUB 2 background image information to the configuration files(s) as discussed previously.
  4. Run sudo update-grub to incorporate the changes into GRUB 2.


Related Links

Grub2

Grub2/Themes (Under Construction)

Grub2/Submenus

Grub2/Upgrading


CategoryBootAndPartition

banner

Installation:

Usage: sudo ./install.sh [OPTIONS...]

  -t, --theme     theme variant(s)          [tela|vimix|stylish|whitesur]       (default is tela)
  -i, --icon      icon variant(s)           [color|white|whitesur]              (default is color)
  -s, --screen    screen display variant(s) [1080p|2k|4k|ultrawide|ultrawide2k] (default is 1080p)
  -r, --remove    Remove theme              [tela|vimix|stylish|whitesur]       (must add theme name option, default is tela)

  -b, --boot      install theme into '/boot/grub' or '/boot/grub2'
  -g, --generate  do not install but generate theme into chosen directory       (must add your directory)

  -h, --help      Show this help

If no options are used, a user interface dialog will show up instead

Examples:

  • Install Tela theme on 2k display device:
sudo ./install.sh -t tela -s 2k
  • Install Tela theme into /boot/grub/themes:
sudo ./install.sh -b -t tela
  • Uninstall Tela theme:
sudo ./install.sh -r -t tela

Issues / tweaks:

Correcting display resolution:

  • On the grub screen, press c to enter the command line
  • Enter vbeinfo or videoinfo to check available resolutions
  • Open /etc/default/grub, and edit GRUB_GFXMODE=[height]x[width]x32 to match your resolution
  • Finally, run grub-mkconfig -o /boot/grub/grub.cfg to update your grub config

Setting a custom background:

  • Make sure you have imagemagick installed, or at least something that provides convert
  • Find the resolution of your display, and make sure your background matches the resolution
    • 1920×1080 >> 1080p
    • 2560×1080 >> ultrawide
    • 2560×1440 >> 2k
    • 3440×1440 >> ultrawide2k
    • 3840×2160 >> 4k
  • Place your custom background inside the root of the project, and name it background.jpg
  • Run the installer like normal, but with -s [YOUR_RESOLUTION] and -t [THEME] and -i [ICON]
    • Make sure to replace [YOUR_RESOLUTION] with your resolution and [THEME] with the theme

Contributing:

  • If you made changes to icons, or added a new one:
    • Delete the existing icon, if there is one
    • Run cd assets; ./render-all.sh
  • Create a pull request from your branch or fork
  • If any issues occur, report then to the issue page

Preview:

preview

Documents

Grub2 theme reference

Grub2 theme tutorial

GRUB, stands for GRand Unified Bootloader, is default boot loader for most Linux operating systems. GRUB boot loader is the first program that runs when the computer starts. As you may noticed, the default theme of the GRUB menu is bland. It’s just a black background with white characters on it. Some of you may not like the default GRUB theme. In this tutorial, I will demonstrate how to change GRUB theme or apply gorgeous themes in-order to make your GRUB menu more beautiful and elegant in Linux.

A few years ago, we published a guide that explained how to configure GRUB2 bootloader settings in Ubuntu. In that article, we showed you how to change the GRUB background.

But, changing background is not the real customization. In this guide, we are going to change not only the wallpaper but also the fonts, theme and the overall design of GRUB.

Disclaimer: Installing GRUB themes may break you system. I strongly recommend you to try and test a theme in a VM and see if it works without any issues. And then install the theme in the actual system.

Introduction

There are many Community-developed GRUB themes available on Internet. However, they are all scattered across different websites. So finding a good GRUB theme might be little difficult and time-consuming.

One of the notable contributor for GRUB themes is Pling website. But the majority of the themes in Pling are either very basic or outdated.

Fortunately, I’ve come across a project called «Gorgeous GRUB», a place for finding various elegant GRUB themes. Trust me, the author has put a good effort to collect these themes and you will definitely like one of them.

Gorgeous GRUB — A Place To Find Decent GRUB Themes

Gorgeous GRUB is a collection of decent GRUB community themes created by various users. The developer of this project has hand-picked beautiful GRUB themes from Pling, /r/unixporn and many other forums and put them all together to make it easy for the users to browse them.

As stated already, so many themes in Pling are just crappy and outdated. The author of Gorgeous GRUB repository dug through the entire GRUB section of Pling, and a few other forums and put together all good GRUB theme in one place.

FYI, these aren’t some low-quality, poorly made themes. They had a fair amount of effort put into them, with custom backgrounds, fonts, and colours.

Please note that Gorgeous GRUB isn’t an application to install your favorite GRUB theme. It is just a curated list of decent working GRUB themes.

This project is hosted in GitHub. If you’ve any cool GRUB theme, you can add it to the Gorgeous GRUB theme list as well.

How To Change GRUB Theme

Applying or changing GRUB themes is not that difficult.

Go to the Gorgeous GRUB GitHub page and click on the title of any theme you want to apply. And then you will be taken to the theme’s actual home page. Some themes are hosted in Pling and some are hosted in GitHub. We will see how to install GRUB themes from Pling and GitHub.

First, let use see how to apply Descent theme, which is hosted in Pling.

1. Install GRUB Theme From Pling

If the themes are hosted in Pling site, follow these instructions.

From the theme home page, click the Files tab. You will find this tab right under the image preview. Click on the file link to download it.

Download GRUB Theme From Pling
Download GRUB Theme From Pling

Go to the download location and extract the archive file.

$ tar xzf 173860-20150926 descent.tar.gz 

The contents of the archive will be extracted to a directory called «descent» in the current working directory.

Copy the «descent» directory to /boot/grub/themes/ directory using the following command.

$ sudo cp -r descent/ /boot/grub/themes/

If the «themes» directory is not available, just create it.

$ sudo mkdir /boot/grub/themes

And assign proper ownership to the «themes» directory.

$ sudo chown $USER /boot/grub/themes/

And then copy the contents of the «descent» directory to «themes» directory as shown above.

You should now have a folder in the themes directory named after the theme.

$ ls /boot/grub/themes/
descent

And that theme folder (i.e. descent) should include the theme.txt and any other relevant files (e.g. background image, customization files) that theme came with.

$ ls /boot/grub/themes/descent/
background1280x800.png    descent_score_14.pf2  menu_ne.png  menu_s.png         progresshigh_c.png  scrollframe_c.png   scroll_thumb_n.png
background_original.jpg   descent_score_18.pf2  menu_n.png   menu_sw.png        progresshigh_e.png  scrollframe_n.png   scroll_thumb_s.png
copyright                 menu_c.png            menu_nw.png  menu_w.png         progresshigh_w.png  scrollframe_s.png   select_os.png
descent_logo_bold_18.pf2  menu_e.png            menu_se.png  progressbar_c.png  readme              scroll_thumb_c.png  theme.txt

After copying the downloaded theme to /boot/grub/themes/ directory, edit /etc/default/grub file.

Before any changes, please backup the grub file, just in case:

$ sudo cp /etc/default/grub /etc/default/grub.bak

Now edit the file with your preferred editor:

$ sudo nano /etc/default/grub

Find the GRUB_THEME= line and add the path to the theme.txt of the theme you want to use. And also, uncomment the GRUB_GFXMODE= line and enter the background image resolution. Usually, the filename of background image contains its resolution (e.g. background1280x800.png).

[...]
GRUB_THEME=/boot/grub/themes/descent/theme.txt
GRUB_GFXMODE=1280x800
[...]
Enter Theme Txt File Path And Background Image Resolution
Enter Theme Txt File Path And Background Image Resolution

Again, if those lines does not exist, simply add them. Press CTRL+O and CTRL+X to save the changes and close the file.

Now, apply the changes to the GRUB using command:

$ sudo update-grub

Sample output:

Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found theme: /boot/grub/themes/descent/theme.txt
Found linux image: /boot/vmlinuz-5.15.0-41-generic
Found initrd image: /boot/initrd.img-5.15.0-41-generic
Found linux image: /boot/vmlinuz-5.15.0-39-generic
Found initrd image: /boot/initrd.img-5.15.0-39-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done
Update GRUB
Update GRUB

If you’re on RPM-based systems (E.g. Fedora), run the following command to update GRUB:

$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg instead

Reboot your system. You will be pleased with the updated GRUB theme. If the GRUB menu doesn’t appear, power on the system and immediately hit the ESC key until the boot menu appears.

This is the default GRUB menu in my Ubuntu 22.04 LTS desktop.

Ubuntu Default Grub Menu
Ubuntu Default Grub Menu

And here is the updated GRUB menu with Descent theme.

Updated GRUB Menu With Descent Theme
Updated GRUB Menu With Descent Theme

Cool, yeah?

1.1. Remove GRUB Theme

To remove a theme, simply delete the theme folder:

$ sudo rm -fr /boot/grub/themes/descent/

And then edit /etc/default/grub file:

$ sudo nano /etc/default/grub

Remove the following lines:

[...]
GRUB_THEME=/boot/grub/themes/descent/theme.txt
GRUB_GFXMODE=1280x800
[...]

Save the file and close it.

Finally, apply the changes to the GRUB and reboot your system:

$ sudo update-grub
$ sudo reboot

2. Install GRUB Themes From GitHub

If a GRUB theme is hosted in GitHub, it will probably has the installer and uninstaller scripts. Let us take Modern GRUB Themes as an example. It is hosted in GitHub.

Git clone the project’s GitHub repository:

$ git clone https://github.com/vinceliuice/grub2-themes.git

Go to the project’s folder:

$ cd grub2-themes/

Run the installer script:

$ sudo ./install.sh

Select your preferred GRUB theme background (E.g. tela).

Choose GRUB Theme Background
Choose GRUB Theme Background

Select icon style:

Choose Icon Style
Choose Icon Style

Select your display resolution.

Choose Display Resolution
Choose Display Resolution

Now the chosen GRUB theme will be installed and applied.

  Checking for the existence of themes directory... 
  
 Installing tela color 1080p theme... 
  
 Setting tela as default... 
  
 Updating grub config...
 
Sourcing file `/etc/default/grub'
Sourcing file `/etc/default/grub.d/init-select.cfg'
Generating grub configuration file ...
Found theme: /usr/share/grub/themes/tela/theme.txt
Found linux image: /boot/vmlinuz-5.15.0-41-generic
Found initrd image: /boot/initrd.img-5.15.0-41-generic
Found linux image: /boot/vmlinuz-5.15.0-39-generic
Found initrd image: /boot/initrd.img-5.15.0-39-generic
Found memtest86+ image: /boot/memtest86+.elf
Found memtest86+ image: /boot/memtest86+.bin
Warning: os-prober will not be executed to detect other bootable partitions.
Systems on them will not be added to the GRUB boot configuration.
Check GRUB_DISABLE_OS_PROBER documentation entry.
done
  
 * All done! 
  
 * At the next restart of your computer you will see your new Grub theme: 'tela'  
Install Tela Modern Grub Theme
Install Tela Modern Grub Theme

Reboot your system to see the changes.

Tela GRUB Theme
Tela GRUB Theme

This is one of the pretty GRUB theme ever I’ve seen.

You can also explicitly give the name of the theme with screen resolution like below.

$ sudo ./install.sh -t whitesur -s 1080p

This will apply a theme called «Whitesur» with 1080p screen resolution. You can mention other resolutions, for example 2k, 4k, ultrawide, ultrawide2k. If you don’t mention the resolution, 1080p will be applied by default.

Install Tela theme to /boot/grub/themes folder:

$ sudo ./install.sh -b -t whitesur

Reboot your system to see the changes.

Whitesur GRUB Theme
Whitesur GRUB Theme

2.1. Remove GRUB Themes

To remove an installed theme, go to the project’s cloned directory:

$ cd grub2-themes/

And, run:

$ sudo ./install.sh -r -t tela

Replace «tela» with the name of your installed theme.

Please note that the installation instructions for each theme might be different. Refer the project’s respective GitHub page carefully and install the theme accordingly.

Conclusion

Some people prefer to use stylized Linux distributions. They feel good and took pride in beautifying their Linux distributions. If you’re one of them, you can look into the Gorgeous GRUB project to beautify your GRUB menu.

Got to the Gorgeous GRUB theme site, pick your favorite theme from the list and follow the instructions provided in the respective project’s home page to install and apply the GRUB theme.

Resource:

  • Gorgeous GRUB GitHub Repository

Понравилась статья? Поделить с друзьями:
  • Как изменить внешний вид духа чайника геншин
  • Как изменить внешний вид друида вов
  • Как изменить внешний вид драккара ассасин крид вальхалла
  • Как изменить внешний вид дота 2
  • Как изменить внешний вид доспехов aion