Темы для GRUB своими руками

мейн-кун

Если у вас установлен Linux, вы знаете, что такое GRUB - начальный загрузчик системы. Он может загрузить не только Linux, но и Windows, передав загрузку «по цепочке». Темы для GRUB существуют в большом количестве, но также не сложно сделать их самостоятельно, настроив полностью под себя.

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

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

Файл theme.txt не должен содержать опечаток, иначе система просто не загузится. Рекомендую для начала пробовать в виртуальной машине. Если же вы хотите делать сразу на рабочей системе, для страховки приготовьте LiveUSB для устранения возможных проблем.

Выбор и подготовка изображения

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

мейн-кун
Мейн-кун

И здесь у нас возникает одна проблема. Мониторы имеют разное разрешение и разное соотношение сторон. Наиболее популярны сейчас 16:9, 16:10, 21:9, но достаточно много ещё старых 4:3 и 5:4. И изображение, корректное на одном мониторе, будет искажено или обрезано на другом. Что делать в таком случае?

Выход достаточно простой – можно взять изображение, где по контуру один цвет. А дополнительно цвет фона сделаем таким же. Фото этого мейн-куна – хороший пример: здесь везде по контуру чёрный цвет (#000000). Поэтому укажем правильный режим отображения и проблемы не будет ни на одном мониторе. Также для уменьшения размера файла обрежем чёрный контур, насколько возможно. У меня после обрезки получилось 1306*888 пикселей.

Сразу создаём папку для нашей темы, называем её «Maine-coon» и помещаем туда наше изображение.

Подготовка шрифтов

Шрифта желательно использовать два – моноширинный для терминала и пропорциональный для прочего текста. Для терминала возьмём Terminus, а для прочего текста – Ubuntu. Эти шрифты легко читаются и не будут утомлять глаза.

Но шрифты в формате TTF загрузчик не прочитает, ему нужен специальный растровый формат. Для преобразования воспользуемся утилитой grub-mkfont, предварительно скопировав шрифты в нужную папку:

grub-mkfont -o ./terminus-14.pf2 -s 14 ./terminus.ttf

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

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

Файлы со шрифтами нескольких размеров: пропорциональный сделаем с размерами 16, 24 и 48, моноширинный – 14. Размер шрифта сразу добавим к имени файла, чтобы загрузчик смог прочитать нужные данные. В результате конвертирования у нас должно получиться 4 файла:

  • ubuntu-16.pf2
  • ubuntu-24.pf2
  • ubuntu-48.pf2
  • terminus-14.pf2

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

Создание темы

Для начала создаём пустой файл theme.txt в папке с темой и сразу пишем в него несколько строк:

# GRUB2 gfxmenu Linux theme
# Maine-coon theme

desktop-image: "maine-coon.jpg"
desktop-color: "#000000"
desktop-image-scale-method: "padding"

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

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

Будем исходить из минимального разрешения экрана 1024*768. Добавляем в файл темы следующий код:

+ boot_menu {
    left = 50%-350
    width = 700
    top = 50%-200
    height = 450
    icon_width = 24
    icon_height = 24
    item_height = 30
    item_padding = 1
    item_icon_space = 5
    item_spacing = 20
    item_font = "Ubuntu Regular 24"
    item_color = "#cccccc"
    selected_item_color = "#cc0000"
}

Подробное значение каждого параметра расписано в документации, поэтому не буду на них останавливаться. Далее мы упаковываем папку с темой в архив .tar.gz или .xz (zip не подойдёт), при необходимости копируем на виртуальную машину и устанавливаем тему при помощи GRUB Customizer. Перезагружаем компьютер и вот что получаем:

Первое тестирование темы для GRUB
Первое тестирование темы для GRUB

Всё это запустилось с первой попытки и работает. Из минусов - видим вверху плохо читаемую надпись, которую мы туда не добавляли. Это стандартный заголовок, попробуем его прочитать. Для этого перед блоком загрузочного меню добавим две строки:

title-font: "Ubuntu Regular 48"
title-color: "#cccccc"

Далее снова при необходимости загружаем тему на виртуальную машину и устанавливаем. Только при установке через GRUB Customizer вначале удаляем старую тему, затем устанавливаем заново. И смотрим, что за надпись:

Второе тестирование темы для GRUB
Второе тестирование темы для GRUB

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

title-text: "TEXT"

Вместо TEXT укажите то, что хотите там видеть. Можно вообще оставить пустую строку "" - в таком случае этой надписи не будет.

Добавим в тему ещё два элемента.

Подсказка с горячими клавишами

Допишем в конец файла:

+ label {
    font = "Ubuntu Regular 16"
    left = 50%-350
    top = 95%
    height = 25
    width = 700
    align = "center"
    color = "#cccccc"
    text = "@KEYMAP_SHORT@"
}

Это даст подсказку по некоторым доступным горячим клавишам – изменение параметров загрузки и т.д.

Терминал

Терминал как раз и нужен для редактирования параметров загрузки. Перед блоком загрузочного меню добавим ещё строку:

terminal-font: "Terminus Regular 14"

В терминале всё же удобнее моноширинный шрифт, для этого мы и готовили в начале шрифт Terminus.

И делаем последнюю проверку:

Финальное тестирование темы для GRUB
Финальное тестирование темы для GRUB

В таком виде уже можно пользоваться. Как видите, в создании своей темы для GRUB нет ничего сложного, главное – внимательность.

Также можно сделать фон для меню и для отдельных его пунктов, это описано в документации.

Comments:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *