[IV]. Выбор и настройка загрузчика на использование фб, заставки и декораций(обой).
Расскажу на примере
grub . Почему? - потому что его не зря называют универсальным. Он не требует перезапуска после каждого редакта конфигов и т.п. и самое главное в нём стирается дефолтный выбор hda, sda и т.д. - всё проще - скажем (hd0,0) 1-й раздел на 1-м харде, там присутствует использование hda, sda, но при необходимости даже ещё до начала самой загрузки в этом загрузчике можно менять и вертеть как тебе нравится параметры и в каком угодно направлении... 2-я его версия как-то меня не прельстила, а вот 1-я - самое то. Почему нельзя исп-ть только hda,sda,etc? Потому что сталкивался со следующей неприятной особенностью новых ядер. Правка конфигов скажем в том же лило, который проверяет правильность написания своего конфа - при прошении заюзать sda, вежливо пошлёт - если хард у вас на hda – безусловно это обычные сим линки, НО... В новых ядрах и новые “приколы” aka стандартизация и hda-шки стали sda-шками, угу. После перезагрузки уже нужен sda, а в лило прописан для нового ядра всё тот же hda и приехали. Всё решаемо - но... в грабе проще ;-) Хотя он тоже не без изъянов.
1. Настройка стандартного vesa
Задать разрешение экрана в привычном для нас виде нельзя, задаётся параметром
vga . К примеру в опциях ядра указываем
vga=791, что означает запуск фб с разрешением 1024x768. Помните - без указания этого параметра машина никак не поймёт что надо пускать фб. Можно посмотреть таблицу режимов - благо в инете уже давно всё расписано, повыбирать и т.д., но я считаю более удобным использовать параметр
ask, тогда после перезагрузки будет выведен краткий перечень возможных разрешений моника с возможностью полного скана для нахождения ещё каких-либо разрешений. Впрочем, этот способ иногда не проходит, но это случается довольно редко. Далее второй немаловажный параметр, забыв который многие потом не понимают почему фильмы тормозят и т.п. –
video. Пример
video=vesafb,mtrr:3,ywrap – по порядку,
vesafb – наш драйвер фб,
mtrr – его опция, которую, если не указать будут тормоза – вот где собака зарыта, ага,
ywrap – делает закольцовывание памяти. Подробнее читайте в доках ядра ../Documentation/fb/vesafb.txt.
Пример конфига grub(разрешение 1920 на 1200):
Код:
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/gun_splash.xpm.gz
title XPeHb
rootnoverify (hd0,2)
chainloader +1
makeactive
title Gentoo Linux
root (hd0,0)
kernel /boot/bzImage5 root=/dev/sda1 video=vesafb,mtrr:3,ywrap vga=0x37D
splashimage – это просто картинка для граба.
2. Настройка uvesafb
У этого настройка посложнее, по сравнению с ним, в обычной весе вообще делать нечего. Первое, что необходимо понять – этот драйвер работает лишь при наличии установленной тулзы
v86d (необходимой для исполнения x86 кода BIOS). Во 1-х чтоб её скомпилить нам будет необходима одна из либ СИ – либо
klibc , либо
glibc . Klibc – для статичной сборки, далее образ с прогой просто передаётся как параметр ядру при его сборке в конфигах и загружается потом вместе с ядром – что пускает увесуфб практически сразу при загрузке. Glibc – для динамической сборки такого не позволяет, его лучше делать когда с klibc как-то не задалось, и только тогда, включить драйвер uvesafb в ядре
можно и нужно! как модуль. Лучше исп-ть klibc – прописал раз в ядре при сборке и забыл, к тому же она около полумб против 20 мб глибц-шной. Хотя кому как, комут удобней прописать в виде загрузки модуля один раз, чем каждый раз при сборке в ядре. Важно помнить, что после мейка ядра с увесойфб необходимо заново перекомпилировать ту из библиотек, которую вы выбрали для себя, даже, если они уже установлены – для чего это необходимо? – для того, чтоб эти либы заново прошлись по дереву ядра и просекли увесуфб. Поэтому, если у вас бинарный пакет собирался без неё – придётся вручную. Итак по порядку.
1) Собрали ядро с параметрами, о которых говорилось выше в разделе сборки ядра.
2) Определились с нужной либой и собрали или пересобрали
klibc или
glibc.
3) Компилим то, из-за чего весь сыр бор - v86d.
Внимание: при ручной сборке с klibc скрипту configure даём параметр --with-klibc, с glibc просто –-default.
4)- Если выбрали klibc, снова собираем ядро – ставим прошлый конфиг, НО добавляем уже в него запись об статично собранном образе v86d initramfs. Итак это следующие опции:
Код:
General Setup ->
<*>Initial RAM filesystem and RAM disk (initramfs/initrd) support
Под этой опцией там же в ядре будет строка в которой указывается образ – в нём даём путь к образу с v86d
Код:
/usr/share/v86d/initramfs
собственно путь к образу, который у нас собрался с помощью klibc. После этого собираем и ставим ядро. Всё – тут всё закончено, осталось только сообщить о священнодействии машине, т.е. загрузчику. Задаётся всё тем же параметром video. Т.е. будет что-то вроде такого video=uvesafb:1920x1200-32,mtrr:3,ywrap. Параметры расшифровываются как и в станд. весе. Для справки читайте доки ядра всё там же) ../Documentation/uvesafb.txt Полезно залезть туда – там много интересного. Не забудьте убрать, если где-то ещё стоит, параметр vga – он может сбить с толку загрузчик, а точнее, разумеется, само ядро при передаче параметра, из-за чего оно будет пытаться загрузить обычную весу. 32 – битность.
Пример конфига grub для uvesafb с использованием либы klibc для сборки v86d:
Код:
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/gun_splash.xpm.gz
title XPeHb
rootnoverify (hd0,2)
chainloader +1
makeactive
title Gentoo Linux
root (hd0,0)
kernel /boot/bzImage5 root=/dev/sda1 video=uvesafb:1920x1200-32,mtrr:3,ywrap
- Те же, кому выпала судьба собрать с помощью glibc – можете грузить обычную весу – зачем? – ну там заставку, о которой далее, на ней прокатить) т.к. с обычной весой проблемы практически исключены, а в процессе загрузки подгружать модуль uvesafb. Нет можно бесспорно заставку и после модуля, но кого устроит время анимации 2 из 10 с)) В загрузочный скрипт пишем
Код:
modprobe uvesafb mode_option=1920x1200-32 mtrr=3 scroll=ywrap v86d=/sbin/v86d
Думаю комментарии излишне.
5) Перезагруз, наслаждение, а я ещё не сказал? – uvesafb автоматически постарается выбрать наиболее высокую частоту обновления моника ;-) Проверить чего она там выбрала, выбрать самому, а также менять разрешение, настройки обновлений экрана во время работы и т.п. поможет утилита
fbset .
3. Настройка rivafb, nvidiafb, radeonfb, atyfb, etc...
У этих обычно параметр задаётся так
video=nvidifb:1920x1200-32@75, где
75 – обновление. Вообще в них необходимости я особой не вижу при существовании вышеперечисленного и их недостатках, конфиги у них меняются каждодневно)) + они обычно не совместимы со своими братьями для X-ов. Это вообще прикол.
[V]. Для любителей красоты
1. Настройка
У вас уже стоит пакет
splashutils , собранное ядро, предварительно пропатченное fbcondecor-ом, а также настроены дрова фб: веса c у или без, и т.п. Тогда скрипт запускаюищй фбк и работающий с заставкой лежит(штатно в gentoo) тут:
Код:
/sbin/splash-functions.sh
Поставьте темы для splash, если ещё не сделали этого - их возьмёте там же, где и сам пакет. Темы должны в итоге лежать в
Код:
/etc/splash/имя_темы
В gentoo у вас должен быть также файл конфигов фбк:
Код:
/etc/conf.d/fbcondecor
- насколько я понял, скрипты сплеша в первую очередь проверяют там, если что - гляньте в самих скриптах что как(splash-functions.sh, для gentoo: это ещё init и conf скрипты fbcondecor и splash). При компиляции для других дистров(отличных gentoo) splashutils автоматически подменит путь к конфигам - в любом случае его там можно менять при желании + довольно сильно помогает выдрать скрипты из пакетика
gentoo-splashutils. Файл конфига фбк должен иметь следующий вид:
Код:
FBCONDECOR_TTYS="1 2 3 4 5 6 7 8 9"
FBCONDECOR_TTY_MAP="1:ThemeGirl 2:Theme404 3:emerge-world 4:emerge-world 5:emerge-world 6:emerge-world 7:emerge-world 8:emerge-world 9:emerge-world"
Тут всё я думаю и так понятно.
Пример конфига grub, который запускает тему FarCry в виде заставки, по завершении которой стартует фбк – обои только на тех консолях, которые мы прописали в конфиге фбк:
Код:
default 0
timeout 30
splashimage=(hd0,0)/boot/grub/gun_splash.xpm.gz
title XPeHb
rootnoverify (hd0,2)
chainloader +1
makeactive
title Gentoo Linux
root (hd0,0)
kernel /boot/bzImage5 root=/dev/sda1 video=uvesafb:1920x1200-32,mtrr:3,ywrap splash=silent,fadein,theme:FarCry console=tty1
splash - параметр, который отвечает за тему заставки.
console - консоль по умолчанию на которой всё это дело подрубается.
2. Лёгкий тюнинг
А что если нам захотелось создать собственную темку, можно просто заменить в нужной теме обои на желаемые, но на этом дело не кончится, если меняем при одном и том же разрешение – то всё может не идеально, но срастается. Для разрешений же таких, которых нет в данной теме, а возможно вообще нет ни в одной из скачанных тем – надо создавать собственный файл конфигов. Имя этого файла в директории темы состоит из разрешения и расширения файла. При прописывании в конфигах декора и в загрузчике имени темы – ищется совпадение по имени диры с именем соответствующей темы. Пример моего конфа 1920x1200.cfg(/etc/splash/FarCry/1920x1200.cfg):
Код:
bgcolor=0
pic=images/vbg-1920x1200.png
silentpic=images/sbg-1920x1200.png
tx=31
ty=40
tw=1860
th=1080
text_x=468
text_y=703
text_size=15
text_color=0x408040
text_font=Vera.ttf
anim loop images/pbanim.mng 427 625
icon images/pbo.png 427 625 crop
icon images/pbf.png 412 610
text silent Vera.ttf b 15 960 middle 631 top #80C080F0 eval "$progress%"
box noover 31 31 1900 1200 #31323498
Заставка при загрузке грузится в двух режимах, один из который
silent, второй
verbose(указывается в загрузчике – см. выше). Silent – графическая заставка с возможными индикаторами загрузки и т.п., verbose – консоль просто на фоне рисунка, которая при фбк потом всё время остаётся на постоянное использование. Как ясно из названия pic – для verbose и для фбк, silent - соответственно для режима silent. Играться с полосами загрузки мы не будем, благо можно взять готовую тему – и взять оттуда конф, а вот выделение конкретного рабочего пространства на экране поверх уже обой – это надо.
tx,ty,tw,th – и есть координаты нашего раб. пространства, т.е. пространства в котором и будут отображаться сообщения, работа софта и т.п. – т.е. этим пространством будет ограничен и курсор. Эти координаты настраиваются экспериментально и довольно быстро, благо перезапускаем скрипт splash-а и вуаля, происходит отрисовка на всех консолях заново))
#31323498 – насколько я помню это число закрашивает нужным цветом нашу раб. область – выбор огромен, прозрачность и т.п. включены) Остальные параметры можно посмотреть в доках, но для комфортной работы мне хватило настройки этих.
[VI]. Что дальше?
Ну вот оно – получилось:
1 - рут консоль, т.к. места много - для неё выделил рабочую область в виде полупрозрачного прямоугольника.
2 - мизерный mp3 плеер mpg123 в действии))
3 - antichat ;-)
4 - ну и напоследок - а где мы будем кодить? - тута -)
В gentoo получится всё собрать с вероятностью 95%. Также в этот раз не было рассмотрено самое вкусное, а именно то, для чего всё это делалось – всё то ПО, на что это было направлено, об этом я постараюсь рассказать в след раз. Ниже приведены ссылки, которые детально описывают сборку на генте, также ссылки на доки, которые также могут помочь разобраться и что-то прояснить для себя новое.
Само ядро - качаем последнее и изучаем диру ../Documentation/fb -)
Интересная статья-ман по сборке этого дела на gentoo
Сайт разработчика fbsplash, fbcondecor, uvesafb, etc
первичная публикация
r3al.ru (c) - PNJL -