Показать сообщение отдельно

  #2  
Старый 16.02.2010, 17:56
- PNJL -
Новичок
Регистрация: 15.02.2010
Сообщений: 8
Провел на форуме:
30861

Репутация: 11
По умолчанию

[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)
  1. Если выбрали 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
  2. Те же, кому выпала судьба собрать с помощью 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 -