"Wallpaper" для консоли Версия для печати   


Специально для тех, кто хочет сделать работу в консоли красивой :)

Я использую дистрибутив Gentoo Linux, ядро 2.4.20 (vanilla - каноническое ядро с kernel.org).

Для того, чтобы поместить "wallpaper" в консоль, необходимо скачать пакет splashimage и патч для ядра с серера компании SUSE. Ниже привожу ссылки на них:

ftp://ftp.suse.com/pub/people/stepan/bootsplash/kernel/boots plash-3.0.7-2.4.20-vanilla.diff
ftp://ftp.suse.com/pub/people/stepan/bootsplash/rpm-sources/ bootsplash/splashutils.tar.bz2

Далее нужно выбрать изображение, которое будет показываться во время загрузки ядра и также отображаться на первой виртуальной консоли. В моем примере оно имеет размеры 1024x768 и 16-бит цвет. Пользователи дистрибутива Gentoo Linux (и не только) могут выбрать следующую:



Теперь необходимо собрать и установить splashutils. Предположим, что вы сохранили архив в каталоге ~/splash. Тогда:

$ cd ~/splash
$ tar xvjf splashutils.tar.bz2
splashutils/
splashutils/Makefile
splashutils/splash.c
splashutils/progress.c
splashutils/getkey.c
splashutils/fbresolution.c
splashutils/ChangeLog
splashutils/COPYRIGHT
$ cd splashutils
$ make
gcc -Os -Wall splash.c -o splash
gcc -Os -Wall progress.c -o progress
gcc -Os -Wall fbresolution.c -o fbresolution
gcc -Os -Wall getkey.c -o getkey
strip splash progress fbresolution getkey
$ cp splash /bin # Необходимо иметь права на запись в этот каталог
$ cd ..

Теперь нужно написать конфигурационный файл /usr/share/splash/bootsplash.cfg для установленной программы. Ниже приведу свой файл:

version=3
state=1
fgcolor=15
bgcolor=0
tx=20
ty=20
tw=984
th=733
text_x=204
text_y=544
text_size=26
text_color=0xeef4ff
jpeg=/usr/share/splash/bootsplash.jpg

Расшифрую некоторые полезные параметры:

fgcolor - цвет надписей, в нашем случае ярко-белый
bgcolor - фоновый цвет, который будет "прозрачным"
tx - отступ в пикселях от левого края по оси абцисс
ty - отступ в пикселях от верхнего края по оси ординат
tw - ширина экрана с учетом отступа от левого края
tw - высота экрана с учетом отступа от верхнего края
jpeg - ссылка на файл с изображением

Следующий этап - необходино пропатчить ядро системы. В файле патча bootsplash-3.0.7-2.4.20-vanilla.diff необходимо заменить названия папок "linux-2.4.20.orig" и "linux-2.4.20" на "linux". При этом предпологается, что символическая ссылка /usr/src/linux указывает на директорию с исходными текстами ядра. Вышеуказанную замену можно произвести с помощью редактора vi (или vim), который поставляется практически со всеми дистрибутивами:

vi *.diff
:%s/linux-2.4.20-orig/linux/g
:%s/linux-2.4.20/linux/g
:wq

Далее перемещаем патч в директорию /usr/src (предполагается, что Вы обладаете правами суперпользователя):

# mv *.diff /usr/src

Пропатчим ядро:

# cd /usr/src
# patch -p0 < bootsplash-3.0.7-2.4.20-vanilla.diff
patch -p0 < bootsplash-3.0.7-2.4.20-vanilla.diff
patching file linux/drivers/char/console.c
patching file linux/drivers/char/keyboard.c
patching file linux/drivers/char/n_tty.c
patching file linux/drivers/video/Config.in
Hunk #1 succeded at 232 (offset 10 lines)
Hunk #3 succeded at 369 (offset 10 lines)
patching file linux/drivers/video/Makefile
patching file linux/drivers/video/fbcon-jpegdec.c
patching file linux/drivers/video/fbcon-jpegdec.h
patching file linux/drivers/video/fbcon-splash.c
patching file linux/drivers/video/fbcon-splash.h
patching file linux/drivers/video/fbcon-splach16.c
patching file linux/drivers/video/fbcon.c
patching file linux/include/video/fbcon.h
patching file linux/kernel/panic.c
# cd linux
# make menuconfig

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

Block Devices -> RAM disk support
Block Devices -> Loopback device support
Block Devices -> Initial RAM disk (initrd) support
Console Drivers -> Video mode selection support
Console Drivers -> Frame-buffer support -> Support for frame-buffer devices
Console Drivers -> Frame-buffer support -> VESA VGA graphics console
Console Drivers -> Frame-buffer support -> Use splash screen instead of boot logo

Хочу отметить, что для того, чтобы включить последний пункт, необходимо в системе иметь установленный tcl/tk.

Далее сохраните настройки (Save and Exit) и компилируйте:

# make dep && make clean bzImage modules modules_install

После компиляции:

# mount /boot (если не смонтирован)
# cp arch/i386/boot/bzImage /boot/vmlinuz

На данный момент мы имеем следующие файлы:
1. /bin/splash
2. новое ядро /boot/vmlinuz
3. каталог /usr/share/splash с файлами:
3.1. bootsplash.cfg
3.2. bootsplash.jpg

Конфигурируем загрузчик:

1. LILO

Пример файла /etc/lilo.conf

boot = /dev/hda
lba32

# MENU

image = /boot/vmlinuz
read-only
label = linux
vga = 791
root = /dev/hda2
initrd = /boot/initrd

Наиболее важные для нас строки - это:

vga = 791
initrd = /boot/initrd

Значение vga=791 характеризует выбранный видеорежим и соответствует разрешению экрана 1024x768 и 16-бит цвет, а файл /boot/initrd будет содержать фоновое изображение.

Создаем файл /boot/initrd и обновляем MBR:

# splash -sf /usr/share/splash/bootsplash.cfg > /boot/initrd
# lilo
Added linux *

2. GRUB

Пример файла /boot/grub/grub.conf

timeout 0
default 0
splashimage=(hd0,5)/grub/splash.xpm.gz

title=Gentoo Linux
root (hd0,5)
kernel /bzImage root=/dev/hda2 vga=791 video=vesa:ywrap:mtrr
initrd=/initrd

Сохраняемся и создаем файл /boot/initrd:

# splash -sf /usr/share/splash/bootsplash.cfg > /boot/initrd

Теперь Вам необходимо перезагрузиться и проверить :)

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

# splash -s -u 1 /usr/share/splash/bootsplash.cfg

Вышеуказанная команда ставит фоновое изображение на вторую виртуальную консоль /dev/tty2 (/dev/vc/2) аналогичное изображению на первой консоли. Проверьте нажатием сочетания клавиш Ctrl-Alt-F2.

Было бы неплохо иметь индивидуальное фоновое изображение для каждой виртуальной консоли:

# cd /usr/share/splash
# for i in tty2 tty3 tty4 tty5 tty6; do mkdir $i; cp boot* $i; done

Тем самым мы создали папки /usr/share/splash/tty[2-6] и скопировали в каждую из них файлы bootsplash.jpg и bootsplash.cfg. Теперь осталось положить в каждую папку индивидуальный файл с изображением. Не забудьте также изменить строчку "jpeg=/usr/share/splash/bootsplash.jpg" в файлах bootsplash.cfg на строчку "jpeg=/usr/share/splash/ttyX/bootsplash.jpg", где ttyX зависит от номера виртуальной консоли.

Логичнее всего поместить комманды "splash -s -u X /usr/share/splash/bootsplash.cfg" в скрипты автозагрузки. Эти действия специфичны для каждого дистрибутива. Например в своем Gentoo Linux я поместил нижеперечисленные строки в файл /etc/conf.d/local.start

/bin/splash -s -u 1 /usr/share/splash/tty2/bootsplash.cfg
/bin/splash -s -u 2 /usr/share/splash/tty3/bootsplash.cfg
/bin/splash -s -u 3 /usr/share/splash/tty4/bootsplash.cfg
/bin/splash -s -u 4 /usr/share/splash/tty5/bootsplash.cfg
/bin/splash -s -u 5 /usr/share/splash/tty6/bootsplash.cfg

Вот и вся настройка.
Желаю удачи, Satellite

Опубликовал: Satellite
Дата: 10.10.2003
постоянный адрес статьи: http://linuxportal.ru/entry.php/P692_0_3_0/