Стартовые красоты с fbsplash

Как правило, то, чем мы собираемся сегодня заняться, не приносит никакой пользы, кроме разве что эстетической. Но иногда хочется красоты. В том числе и при стартовой загрузке системы. Все user-friendly дистрибутивы балуют своих пользователей симпатичными графическими заставками и последним это, вроде бы, нравится. Что касается пользователей дистрибутивов типа "сделай сам", изначально заставка при загрузке считается лишней и не ставится по-умолчанию. Но мы можем это легко исправить. В течение десяти-пятнадцати минут. Тем, кто хотел бы настроить fbsplash, посвящается. Начнём.

# Настройки ядра

Входим в директорию с исходниками ядра, запускаем menuconfig:

# cd /usr/src/linux-3.8.2-gentoo/
# make menuconfig
1
2

Надо отметить, что рекомендуемое в большинстве источников включение initramfs совершенно необязательно для наших целей (не будет splash-картинки с начала загрузки), у автора этих строк работает и без него. Если читатель собирается поступить также, первые два блока — General Setup и Device Drivers — можно смело игнорировать:

General setup  --->
    [*] Initial RAM filesystem and RAM disk (initramfs/initrd) support
Device Drivers  --->
    [*] Block devices  --->
        <*>   RAM block device support

Device Drivers  --->
    Graphics support  --->
        {*} Support for frame buffer devices  --->
            *** Frame buffer hardware drivers ***
1
2
3
4
5
6
7
8
9
10

Готово. Собираем ядро:

# make bzImage modules modules_install install
1

Пока на этом всё. Займёмся поиском и установкой нужного софта.

# Настройки fbsplash

Скачиваем нужные заставки. Можно найти стандартные из репозитария gentoo, можно поставить другие. Пойдём по второму пути.

Скачайте этот файл. Имеющиеся там разрешения экрана:

1280×800
1024×768
1280×1024
1600×1200
1680×1050
1440×900
1
2
3
4
5
6

Не будет большой беды, если вашего разрешения нет. Это исправляется путём правки файла .cfg и переименованием его. Пример для экрана с разрешением 1366x768:

# 1440x900.cfg
#
bgcolor=0

tx=32
ty=27
tw=1305
th=684

text_x=7
text_y=741
text_size=13
text_color=0xdedede

pic=/etc/splash/powered_by_gentoo/images/verbose_1366x768.jpg
silentpic=/etc/splash/powered_by_gentoo/images/silent_1366x768.jpg

# progress bar
box silent noover 0 761 1305 768 #221f29
box silent inter 0 762 0 767 #221f29
box silent 0 761 1305 767 #ececec

# border of the progress bar
box silent 0 761 1305 761 #221f29
box silent 0 664 1305 664 #221f29
box silent 0 664 0 664 #221f29
box silent 1305 664 1305 664 #221f29
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

Переименовываем:

$ mv 1440x900.cfg 1366x768.cfg
1

Теперь следует изменить в графическом редакторе размер изображений silent_1440x900.jpg и verbose_1440x900.jpg на свои, и также переименовать их.

Обеспечить красоту призван патч bootsplash. Для старых версий ядра его придётся качать отдельно, в новые ядра (3.x ?) он уже включен. Также устанавливаем splashutils, поправив флаги в случае, если того требует emerge:

$ emerge -va splashutils
# emerge splashutils
1
2

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

# tar xvzf powered_by_gentoo_v0.7.tar.gz -C /etc/splash
1

Наиболее удобным способом для создания initial ram filesystem автор считает использование genkernel, поэтому решившим собрать ядро с поддержкой initramfs рекомендуется ставить его и делать всё в соответствии со своими настройками. Пример:

# emerge genkernel
# cd /usr/src/linux-3.8.2-gentoo/
# genkernel initramfs --splash=powered_by_gentoo --splash-res=1366x768
1
2
3

Дописываем к строке загрузчика в /boot/grub/menu.lst (справедливо для grub-legasy):

# menu.lst
#
default 0
timeout 30
splashimage=(hd0,1)/boot/grub/splash.xpm.gz
title Gentoo Linux 3.8.2-gentoo-iniram root (hd0,1)
kernel /boot/vmlinuz-3.8.2-gentoo root=/dev/ram0 real_root=/dev/sda3 splash=silent,theme:powered_by_gentoo console=tty1
initrd /boot/initramfs-genkernel-x86_64-3.8.2-gentoo
1
2
3
4
5
6
7
8

Если intramfs не используется, прописывать всё то же самое, но без root=/dev/ram0 real_root=/dev/sda3 и без указания последней строки.

В случае с Grub2:

# /etc/default/grub
GRUB_DISTRIBUTOR="Gentoo"

GRUB_DEFAULT=0
GRUB_HIDDEN_TIMEOUT=0
GRUB_HIDDEN_TIMEOUT_QUIET=true
GRUB_TIMEOUT=10
GRUB_CMDLINE_LINUX_DEFAULT="vga=0x0362 splash=silent,theme:powered_by_gentoo console=tty1 quiet
GRUB_GFXPAYLOAD_LINUX=1024x768x24
GRUB_GFXMODE=1024x768x24
1
2
3
4
5
6
7
8
9
10

Перезагружаемся. Наслаждаемся стартовыми красотами.

silent mode

silent mode

verbose mode

fbspash verbose mode

Готово! При нажатии клавиши F2 вы сможете перейти в режим verbose.

Кстати, вопреки утверждениям сторонников systemd, которые как мантру повторяют, что systemd загружает ОС намного быстрее, OpenRC не дал автору сего поста вдоволь налюбоваться содеянным. Gentoo загрузилась очень быстро.

# Мы пойдём дальше. Заставка в tty

Да, все дистрибутивы, ориентированные на новичков, имеют splash-картинку. Но многие ли из них могут похвастаться красивым терминалом? Не эмулятором терминала, а самим терминалом. Мы же пойдём дальше и настроим эту фичу.

Это уже не укладывается в указанные в начале поста 10-15 минут. Это дополнительное действо, вы можете от него отказаться.

В ядре должно быть отключено!:

Device Drivers  --->
    Graphics support  --->
        Support for frame buffer devices
            [ ] Enable Tile Blitting Support

1
2
3
4
5

И, наоборот, включена опция:

Graphics support  --->
    Console display driver support
        [*] Support for the Framebuffer Console decorations
1
2
3

Вот так:

vesa vga

framebuffer

Теперь пересоберите splashutils с флагом "fbcondecor" или добавьте этот флаг в make.conf и скомандуйте:

# emerge --update --newuse --deep @world
1

Следующие шаги достаточно просты:

Прописать в /etc/conf.d/fbcondecor:

#fbcondecor
#
FBCONDECOR_TTYS="1 2 3 4 5 6"
FBCONDECOR_TTY_MAP="1:powered_by_gentoo 2:powered_by_gentoo 3:powered_by_gentoo 4:powered_by_gentoo 5:powered_by_gentoo 6:powered_by_gentoo"
1
2
3
4

где TTYS — терминалы, на которых будет запускаться изображение

TTY_MAP — отображение в формате "<номер tty>:<тема>"

Как вы уже, вероятно, поняли на разных терминалах могут быть разные темы.

Стартовать fbcondecor при запуске системы:

# rc-update add fbcondecor default
1

Менять тему можно так:

$ splash_manager -c set -t powered_by_gentoo --tty=2
1

где powered_by_gentoo — название темы, а --tty=2 — номер терминала, где будет запущена тема.

И последний штрих: поправить загрузчик. На этот раз пример для ядра без initramfs:

# menu.lst
#
title Gentoo Linux 3.8.2-gentoo
root (hd0,1)
kernel /boot/vmlinuz-3.8.2-gentoo root=/dev/sda3 splash=silent,theme:powered_by_gentoo console=tty1 video=vesafb:ywrap,mtrr:3 vga=0x0362
1
2
3
4
5

Параметр vga должен быть указан для вашего разрешения экрана. В примере это 1366x678.

Итог:

powered_by_gentoo

Теперь можно отказаться от мыши и иксов 😉

2013  linux