<!doctype linuxdoc system>

<!-- Framebuffer HOWTO 

    fordította: Bábos Balázs (bbk@swi.hu)
    fordítás legutolsó frissítése: 1999.12.13.23:57
-->

<article>

<title>Framebuffer-HOGYAN
<author>Alex Buell, <tt/alex.buell@tahallah.demon.co.uk/
<date>v1.1, 22 July 1999
<abstract>
Ez a dokumentáció bemutatja a framebuffer eszközök használatát Linux
alatt különböző platformokon. A többfejes megjelenítők beállításáról
is találsz itt útmutatót.
</abstract>

<toc>

<!-- HOWTO proper -->
<sect>Közreműködők
<p>
Köszönet az alább felsorolt embereknek, akik segítettek a Framebuffer-HOWTO
elkészítésében.

<itemize>
<item>Jeff Noxon <tt/jeff@planetfall.com/
<item>Francis Devereux <tt/f.devereux@cs.ucl.ac.uk/
<item>Andreas Ehliar <tt/ehliar@futurniture.se/
<item>Martin McCarthy <tt/marty@ehabitat.demon.co.uk/
<item>Simon Kenyon <tt/simon@koala.ie/
<item>David Ford <tt/david@kalifornia.com/
<item>Chris Black <tt/cblack@cmpteam4.unil.ch/
<item>N Becker <tt/nbecker@fred.net/
<item>Bob Tracy <tt/rct@gherkin.sa.wlk.com/
<item>Marius Hjelle <tt/marius.hjelle@roman.uib.no/
<item>James Cassidy <tt/jcassidy@misc.dyn.ml.org/
<item>Andreas U. Trottmann <tt/andreas.trottmann@werft22.com/
<item>Lech Szychowski <tt/lech7@lech.pse.pl/
<item>Aaron Tiensivu <tt/tiensivu@pilot.msu.edu/
<item>Jan-Frode Myklebust a permedia kártyákról adott információkért<tt/janfrode@ii.uib.no/
<item>Számos más embert is felsorohatnék még, köszönöm nekik is!
</itemize>

Köszönet Rick Niles-nek <tt/frederick.a.niles@gsfc.nasa.gov/ aki megengedte,
hogy az ő Multi-Head Mini-HOWTO-ját felhasználjam e HOWTO elkészítésében.

Köszönet az alább felsorolt embereknek, hogy elkészítették az Intel
platformos X11-hez a libc5/glibc2-es XF86_FBdev X11 framebuffer 
meghajtót.

A Framebuffer-HOWTO magyar fordítását, a Framebuffer-HOGYAN-t Bábos Balázs (bbk@swi.hu) készítette.

<itemize>
<item>Brion Vibber <tt/brion@pobox.com/
<item>Gerd Knorr <tt/kraxel@cs.tu-berlin.de/
</itemize>

és természetesen a framebuffer eszközök készítőinek:

<itemize>
<item>Martin Schaller - original author of the framebuffer concept
<item>Roman Hodek <tt/Roman.Hodek@informatik.uni-erlangen.de/
<item>Andreas Schwab <tt/schwab@issan.informatik.uni-dortmund.de/
<item>Guenther Kelleter 
<item>Geert Uytterhoeven <tt/Geert.Uytterhoeven@cs.kuleuven.ac.be/
<item>Roman Zippel <tt/roman@sodom.obdg.de/
<item>Pavel Machek <tt/pavel@atrey.karlin.mff.cuni.cz/
<item>Gerd Knorr <tt/kraxel@cs.tu-berlin.de/
<item>Miguel de Icaza <tt/miguel@nuclecu.unam.mx/
<item>David Carter <tt/carter@compsci.bristol.ac.uk/
<item>William Rucklidge <tt/wjr@cs.cornell.edu/
<item>Jes Sorensen <tt/jds@kom.auc.dk/
<item>Sigurdur Asgeirsson
<item>Jeffrey Kuskin <tt/jsk@mojave.stanford.edu/
<item>Michal Rehacek <tt/michal.rehacek@st.mff.cuni.edu/
<item>Peter Zaitcev <tt/zaitcev@lab.ipmce.su/
<item>David S. Miller <tt/davem@dm.cobaltmicro.com/
<item>Dave Redman <tt/djhr@tadpole.co.uk/
<item>Jay Estabrook 
<item>Martin Mares <tt/mj@ucw.cz/
<item>Dan Jacobowitz <tt/dan@debian.org/
<item>Emmanuel Marty <tt/core@ggi-project.org/
<item>Eddie C. Dost <tt/ecd@skynet.be/
<item>Jakub Jelinek <tt/jj@ultra.linux.cz/
<item>Phil Blundell <tt/philb@gnu.org/
<item>Anyone else, stand up and be counted. :o) 
</itemize>


<sect>Mi is az a framebuffer eszköz?
<p>
A framebuffer eszköz a grafikus hardver egy leképezése. A video
hardver framebuffer-ét reprezentálja, és az alkalmazói szoftverek 
számára a grafikus hardverhez való hozzáférést jól definiált
interfészen kereszül biztosítja, így a szoftvernek semmit sem kell
tudnia az alacsony szintű interfész cuccokról [Geert Uytterhoeven 
framebuffer.txt-jéből szedtem a linux kernel forrásból]

<sect>Milyen előnyei vannak a framebuffer eszközöknek?
<p> 
A pingvin logo. :o) Komolyabbra fordítva a szót, a framebuffer meghajtók
legfőbb előnye az, hogy általános interfészt biztosít minden platform
számára. A 2.1.x-es kernel késői fejlesztésénél fordult elő, hogy az
Intel platform konzol meghajtói tökéletesen különböztek a más platformok
meghajtóitól. A 2.1.109 bevezetésével mindez pozitív irányba változott,
és sokkal általánosabb konzol kezelést mutattak be az Intel platformra,
valamint ekkor mutattak be valódi bittérképes grafikus konzolt, ami 
képes volt Intel gépen a pingvin logo megjelenítésére. Jegyezzük
meg, hogy a 2.0.x-es kernelek nem támogatják a framebuffer eszközöket,
de elképzelhető valamikor, hogy valaki visszamenőleg elkészíti a kódot
a 2.1.x-es kernelből a 2.0.x-es kernelbe. Azért van kivétel e szabály
alól, mert a v0.9.x-es kernel m68k platformra átírt változata már
tartalmaz beépített framebuffer eszköztámogatást.

<em/A 2.2.x-es kernel kiadásával a framebuffer eszköz támogatás nagyon
síma és stabil lett. Célszerű is használnod, ha a grafikus kártyád
támogatja, amennyiben 2.2.x-es kernelt használsz. A régebbi, 2.0.x-es 
kernelek nem támogatják a framebuffer eszközöket, legalábbis Intel
platformon./

<itemize>
<item>0.9.x (m68k) - bemutatták az m68k framebuffer eszközöket. Jegyezzük
meg, hogy a 0.9.x funkcionálisan az 1.0.9-es Intellel egyenértékű (és
az 1.2.x-es kiegészítés)
<item>2.1.107 - bemutatták az Intel framebuffer és az új konzol eszközöket
és általános támogatást tettek hozzá, scrollback buffer támogatás nélkül.
<item>2.1.113 - a vgacon scrollback buffer támogatást kapott.
<item>2.1.116 - a vesafb scrollback buffer támogatást kapott.
<item>2.2.x - csatolták a matroxfb(Matrox)-t és a atyfb(ATI)-t.
</itemize>

Van néhány nagyszerű tulajdonsága a framebuffer eszközöknek, többek között
általános kapcsolókat adhatsz át a kernelnek indulásidőben, akár még
framebuffer eszköz függő paramétereket is. Ilyenek például:

<itemize>
<item><tt/video=xxx:off/ - letiltja a framebuffer eszköz automatikus 
felismerését
<item><tt/video=map:octalis-szám/ - a virtuális konzolokat (VC-k) 
framebuffer (FB) eszközhöz rendeli
<itemize>
<item><tt/video=map:01/ a VC0-t FB0-hoz, a VC1-t FB1-het, a VC2-t FB0-hoz,
a VC3-t az FB1-hez rendeli
<item><tt/video=map:0132/ a VC0-t az FB0-hoz, a VC1-t az FB1-hez, a 
VC2-t az FB3-hoz, a VC4-t az FB2-höz, a VC5-t az FB0-hoz rendeli...
</itemize>
</itemize>

A framebuffer eszközöket a kernelben meghatározott sorrendben ismeri 
fel a rendszer, de ha megadod a <tt/video=xxx/ opciót, meghatározhatod
azt a framebuffer eszközt, amit a kernelben meghatározott sorrendben 
felismerendő eszközök <em/előtt/ szeretnél felismertetni.  

<sect>Framebuffer eszközök használata Intel platformokon

<sect1>Mi az a vesafb?
<p>
A vesafb egy VESA 2.0 kompatibilis grafikus kártyákkal működő   
framebuffer eszköz Intel architektúrára. Nagyban hasonlít
a kernelben levő framebuffer eszköz meghajtókhoz.  

A vesafb képernyőmeghajtó lehetővé teszi, hogy grafikus módokat
használj Intel platformon bitmap-es szöveges konzolokon. Lehetővé
teszi továbbá, hogy logo-t jeleníts meg, ami valószínűleg a fő
oka annak, hogy vesafb-t használj. 

Sajnos, nem használhatod a vesafb-vel a VESA 1.2-es kártyákat. 
Ez azért van, mert az 1.2-es kártyák nem <em/lineáris/ frame
buffering-et használnak. A lineáris framebuffering egyszerűen
azt jelenti, hogy a rendszer processzor közvetlenül hozzáfér
a képernyő minden egyes bitjéhez. A történelmet tekintve, a
régebbi grafikus kártyák csak 64K-t engedtek egyszerre hozzáférni
a kernelnek, mivel a fantasztikus CGA/EGA üzemmódoknak ez volt
a korlátja. Elképzelhető, hogy valaki írni fog egy vesafb12-es 
eszközmeghajtót ezekhez a kártyákhoz, de értékes kernel memóriát
használna, és meglehetősen ronda patch-re lenne szükség. 

Létezik azonban egy potenciális lehetőség, VESA 2.0-s kiegészítést
adhatsz a VESA 1.2-es kártyádnak. Letölthetsz egy DOS alól futó
rezidens programot, amit ha loadlin-el használsz, segíthet a 
kártya megfelelő grafikus üzemmódba konfigurálásában. Jegyezzük
meg, hogy ez nem mindig működik, például néhány Cirrus Logic kártya,
mint például a VLB 54xx-es sorozat, a frame buffering-hez olyan
memória címeket használ (például a 15-16MB-os tartomány), amik
megakadályozzák, hogy 32MB memóriánál több memóriával rendelkező
rendszerek rendesen működjenek. Van mód arra, hogy működésre bírjuk, 
ha a BIOS-ban szerepel egy olyan opció, amely lyukat hagy a 15-16Mbyte
területen a memóriában. Így talán működne, de a Linux nem támogatja
a memórialyukakat. Bár van patch ennek az opciónak a megvalósítására
[Kinek van, és honnan lehet beszerezni?]. Ha szeretnél kísérletezni
ezzel az opcióval, rengeteg TSR szerű program rendelkezésedre áll,
a legjobb példa például az UNIVBE, amit megtalálsz az Interneten.

Elképzelhető, hogy találsz kernel patch-et, hogy működésre bírd a
VESA 1.2-es kártyád a VESA framebuffer meghajtóval. Például, léteznek
patch-ek a régebbi S3 kártyákhoz (mint az S3 Trio, S3 Virge), melyek
VESA 1.2-es támogatással rendelkeznek. Ezekhez a kártyákhoz választhatsz 
patch-et a ftp://ccssu.crimea.ua/pub/linux/kernel/v2.2/unofficial/s3new.diff.gz
címről. 

<sect1>Hogy aktíváljam a vesafb meghajtót?
<p>
Tegyük fel, hogy menuconfig-ot használsz, ekkor a következő lépésekre
van szükséged:

Ha a processzorod (Intel platformokon) támogatja az MTRR-t, engedélyezd.
Ez felgyorsítja a processzor és a grafikus kártya között a memóriamásolást,
de nem feltétlen szükséges. Ezt megteheted természetesen a konzol 
eszköz sikeres beállítása után is.

<em/FONTOS: A 2.1.x kernelverziók esetén, menj a Code Maturity Level menübe,
és engedélyezd a fejlesztés alatt álló és/<em/vagy nem teljes meghajtóprogramok
kiválasztási lehetőségét. Erre a 2.2.x kernelverziók esetében már nincs
szükség./

Menj a Consol Drivers menübe, és engedélyezd a következőket:

<itemize>
<item>VGA Text Console
<item>Video Selection Support
<item>Support for frame buffer devices (experimental)
<item>VESA VGA Graphic console
<item>Advanced Low Level Drivers
<item>Válaszd ki a Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp és a 32bpp tömörített pixel
meghajtókat
</itemize>

VGA Chipset Support (text only) - vgafb - szerepelnie kellene a fenti listában,
de mivel már helytelenítik a használatát, és többé nem támogatott, így
nem szerepeltettük a listában. Rövidesen el is lesz távolítva. Használd 
inkább a VGA Text Console-t (fbcon). A VGA Character/Attributes csak
VGA Chipset támogatással használatos, és nem szükséges kiválasztani.

Biztosítsd, hogy a Mac változó bpp tömörített pixel támogatás nem engedélyezett.
A Linux 2.1.111-es kernelverziója (és a 112-es) úgy tűnik, hogy automatikusan
engedélyezi, ha az Advanced Low Level Drivers elsőre ki lett választva. 
Ez a 2.1.113-ban már nem így történik többé.

Fennáll ezenkívük a karakterek memóriábafordításának lehetősége is, de 
erre valójában nincs szükség és mindig használhatod a kbd-0.99 setfont
szerszámát (lásd a karakterekről szóló fejezetet), amivel megváltoztathatod
a karaktereket úgy, hogy betöltöd a karaktereket a konzol eszközbe.

Győződj meg róla, hogy ezek nem modulok lesznek. [Nem vagyok benne biztos,
hogy lehetséges már modulba fordítani őket - kérlek javíts ki, ha tévednék]

El kell készítened a framebuffer eszközöket a /dev alkönyvárban. Framebuffer
eszközönként egyre lesz szükséged, így mindössze annyi a teendőd, hogy kiadod
az első alkalommal a mknod /dev/fb0 c 29 0 parancsot. A következők 32 többszörösei
lesznek, például a /dev/fb1 elkészítéséhez mknod /dev/fb1 c 29 32 parancsot kell
kiadnod, és így tovább, egészen a nyolcadik framebuffer eszközig 
(mknod /dev/fb7 c 29 224).

Ezután fordítsd újra a kernelt, módosítsd a /etc/lilo.conf-ot, és csatold
a VGA=ASK paramétert, majd futtasd a lilo-t, erre azért van szükség, hogy
kiválaszthasd, melyik módot szeretnéd majd használni.

Íme egy példa a LILO konfigurációra (az én gépemről vettem):

<verb>
# LILO konfigurációs állomány
boot = /dev/hda3
delay = 30 
prompt
vga = ASK # Engedjük, hogy a felhasználó adja meg a kívánt módot
image = /vmlinuz
  root = /dev/hda3
  label = Linux
  read-only # A nem-UMSDOS állományrendszert célszerű csak olvashatónak beilleszteni az ellenőrzéshez
</verb>

Indítsd újra a kernelt, és próbaképpen, írj be 0301-et a VGA promptnál
(ez 640x480-as felbontást ad 256 színnel) és máris egy aranyos pici
pingvin logót láthatsz. 

Jegyezzük meg, hogy a VGA promptnál a szám beírásánál 'x' nélkül kell
beírnod a számot "0" és 3 számjegy formában. Erre nincs szükség LILO
használatával.

Ha látod, hogy jól működik, felfedezheted a különböző VESA módokat
(lásd lejjebb), eldöntheted, hogy melyik tetszik a legjobban és
be bedrótozhatod a "VGA=x" paraméter használatával a lilo.conf
állományba. Ha kiválasztottad, hogy melyik tetszik a legjobban, 
keresd ki a neki megfelelő hexadecimális számot a lentebb található
táblázatból (pl. 1280x1024 @ 256-hoz "VGA=0x307"-et találsz), és
újra le kell futtatnod a lilo-t. Mindössze ennyi a teendő. A
későbbi hivatkozásokhoz olvasd el a LoadLin/LILO HOGYANokat.

<em/MEGJEGYZÉS!/ A vesafb nem engedélyezi a scrollback buffering-et alapértelmezés
szerint. Neked kell átadni az engedélyező kernel paramétert. Az engedélyezéshez
használd a video=vesa:ypan vagy a video=vesa:ywrap paramétereket. Mindkettő
ugyanazt a dolgot teszi, de másképpen. Az ywrap lényegesen gyorsabb, mint az ypan,
de nem, vagy részben rosszul működik VESA 2.0-s grafikus kártyákkal. Az ypan 
lassabb az ywrap-nál, de nagyobb mértékben kompatibilis. Ez az opció csak
a 2.1.116-os és magasabb verziószámú kernelekben van jelen. A korábbi kernelekben
nem volt meg a scrollback buffering engedélyezésének képesség a vesafb-hez.

<sect1>Milyen VESA módok állnak rendelkezésemre?

<p>
Ez valójában a rendszered VESA 2.0 kompatibilis grafikus kártyájától függ,
valamint a rajta lévő video memória mennyiségétől. Az csak a tesztelés
kérdése, hogy melyik video üzemmód a legjobb a grafikus kártyádnak. 

A következő tábla a VGA promptnál beadható, vagy a LILO programmal használható
üzemmódok számait mutatja. (jelenleg ezek a számok 0x200 felettiek, hogy könnyebb
legyen a táblára hivatkozni)

<verb>
Színek     640x400 640x480 800x600 1024x768 1280x1024 1600x1200
---------+-----------------------------------------------------
 4 bites |    ?       ?     0x302      ?        ?         ?
 8 bites |  0x300   0x301   0x303    0x305    0x307     0x31C
15 bites |    ?     0x310   0x313    0x316    0x319     0x31D
16 bites |    ?     0x311   0x314    0x317    0x31A     0x31E
24 bites |    ?     0x312   0x315    0x318    0x31B     0x31F
32 bites |    ?       ?       ?        ?        ?         ?
</verb>

Kulcs: 8 bites = 256 színű, 15 bites = 32,768 színű, 16 bites = 65,536
színű, 24 bites = 16.8 millió színű, 32 bites - ugyanaz, mint a 24 bites, 
de az extra 8 bit más dolgok tárolására is felhasználható, ami tökéletesen
megfelel a 32 bites PCI/VLB/EISA busznak.

Egyéb üzemmódok a gyártó diszkréciójától függ, mivel a VESA 2.0 dokumentációja
csak a 0x31F feletti üzemmódokat definiálja. Némi próbálkozásra lesz 
szükséged az extra üzemmódok felfedezéséhez.

<sect1>Matrox kártyád van?
<p>

Ha Matrox grafikus kártyád van, nincs is szükséged a vesafb-re, annál inkább
a matroxfb meghajtóra. Ez nagyban kiszélesíti a kártyád képességeit. A Matroxfb
a Matrox Mystique Millennium I & II, G100 és G200 kártyákkal működik. Támogatja
ezen kívül a többfejes rendszereket (ez az, ha két Matrox kártyád van a gépedben,
két megjelenítőt használhatsz ugyanabban a gépben!). Ahhoz, hogy beállítsd 
rendszered a Matroxhoz, a következőket kell tenned:

Esetleg szükséged lehet a BIOS frissítésére, amihez le kell töltened a BIOS
frissítést a http://www.matrox.com/mgaweb/drivers/ftp_bios.htm honlapról.
Ügyelj rá, hogy a frissítéshez majd DOS-ra lesz szükséged.

Menj a Code Maturity Level menübe és engedélyezd a fejlesztés alatt álló 
és/<em/vagy nem teljes meghajtóprogramok kiválasztási lehetőségét. Erre a 
2.2.x kernelverziók esetében már nincs szükség./


Menj a Console Drivers menübe és engedélyezd a következőket:

<itemize>
<item>VGA Text Console
<item>Video Selection Support
<item>Support for frame buffer devices (experimental)
<item>Matrox Acceleration
<item>Válassz a következőkből annak megfelelően, hogy milyen kártyád van:
<itemize>
<item>Millennium I/II support
<item>Mystique support
<item>G100/G200 support
</itemize>
<item>Engedélyezd a többfejes támogatást (Multihead Support), ha egynél 
több Matrox kártyát szeretnél használni
<item>Advanced Low Level Drivers
<item>Válaszd ki a Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp és 32bpp tömörített pixel
meghajtókat
</itemize>

Fordítsd újra a kernelt. Ezután módosítanod kell a lilo.conf állományt, hogy
engedélyezd a Matroxfb eszközt. A leggyorsabb és legegyszerűbb módja, ha
felhasználod az enyémet.

<verb>
# LILO konfigurációs állomány
boot = /dev/hda3
delay = 30 
prompt
vga = 792    # Erre azért van szükség, hogy használható állapotban induljon
# A Linux bootolható partíció beállítása következik
image = /vmlinuz
  append = "video=matrox:vesa:440" # akkor váltsunk Matroxfb-re
  root = /dev/hda3
  label = Linux
  read-only # A nem-UMSDOS állományrendszert célszerű csak olvashatónak beilleszteni az ellenőrzéshez
</verb>

Végül kell készítened a framebuffer eszközöket a /dev alkönyvárban. Framebuffer
eszközönként egyre lesz szükséged, így mindössze annyi a teendőd, hogy kiadod
az első alkalommal a mknod /dev/fb0 c 29 0 parancsot. A következők 32 többszörösei
lesznek, például a /dev/fb1 elkészítéséhez mknod /dev/fb1 c 29 32 parancsot kell
kiadnod, és így tovább, egészen a nyolcadik framebuffer eszközig 
(mknod /dev/fb7 c 29 224).

És ennyi. [MEGJEGYZÉS: Ha valaki használ többfejes támogatást, kérem, vegye fel
a kapcsolatot velem - beszélnem kell valakivel róla, hogy dokumentálhassam!]

<sect1>Permedia kártyád van?
<p>

A Permedia kártyákat nem lehet a vesafb-vel használni, de szerencsére 
elkészült egy használható Permedia framebuffer meghajtó. Feltéve, hogy
menuconfig-ot használsz, tedd a következőket:


Menj a Code Maturity Level menübe és engedélyezd a fejlesztés alatt álló 
és/<em/vagy nem teljes meghajtóprogramok kiválasztási lehetőségét. Erre a 
2.2.x kernelverziók esetében már nincs szükség./

Menj a Console Drivers menübe és engedélyezd a következőket:

<itemize>
<item>VGA Text Console 
<item>Video Selection Support 
<item>Support for frame buffer devices (experimental) 
<item>Permedia2 support (experimental)
<item>Generic Permedia2 PCI board support
<item>Advanced Low Level Drivers 
<item>Válaszd ki a Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp és 32bpp tömörített pixel meghajtókat
<item>Ha szeretnél kernelbefordított karaktereket, válaszd ki a következőket:
<itemize>
<item>Select compiled-in fonts
<item>Select Sparc console 12x22 font
</itemize>
</itemize>

Fordítsd újra a kerneled. Ezután módosítanod kell a lilo.conf állományt, hogy
engedélyezd a pm2fb eszközt. A leggyorsabb, és legyegyszerűbb módja, ha felhasználod
a következő példát:

<verb>
# LILO konfigurációs állomány
boot = /dev/hda3
delay = 30 
prompt
vga = 792    # Erre azért van szükség, hogy használható állapotban induljon
# A Linux bootolható partíció beállítása következik
image = /vmlinuz
  append = "video=pm2fb:mode:1024x768-75,font:SUN12x22,ypan" # akkor váltsunk át pm2fb
  root = /dev/hda3
  label = Linux
  read-only # A nem-UMSDOS állományrendszert célszerű csak olvashatónak beilleszteni az ellenőrzéshez
</verb>

A "pm2fb:mode:1024x768-75,font:SUN12x22,ypan" sor jelzi, hogy 1024x768-as felbontást
választottál 75Hz-en, SUN12x22 karakterkészlettel (ha nem választottad ki), és 
ypan scrollback támogatással. Kívánságod szerint választhatsz más üzemmódot is.

Végül kell készítened a framebuffer eszközöket a /dev alkönyvárban. Framebuffer
eszközönként egyre lesz szükséged, így mindössze annyi a teendőd, hogy kiadod
az első alkalommal a mknod /dev/fb0 c 29 0 parancsot. A következők 32 többszörösei
lesznek, például a /dev/fb1 elkészítéséhez mknod /dev/fb1 c 29 32 parancsot kell
kiadnod, és így tovább, egészen a nyolcadik framebuffer eszközig 
(mknod /dev/fb7 c 29 224).

További információkat a Permedia framebuffer meghajtóról a 
http://www.cs.unibo.it/~nardinoc/pm2fb/index.html honlapon találsz.

video=pm2fb:[opció[,opció[,opció...]]]

ahol az opciók a következők lehetnek:

<itemize>
<item>off a meghajtó letiltásához
<item>mode:resolution a konzol felbontásának beállításához. Az üzemmódot
az fb.modes.ATI állomány tartalmazza Geert fbset csomagjában. Minden
üzemmód színméjsége 8bpp. A lehetséges üzemmódok listája a következő:
<itemize>
<item>640x480-(60,72,75,90,100)
<item>800x600-(56,60,70,72,75,90,100) 
<item>1024x768-(60,70,72,75,90,100,illo) illo=80KHz 100Hz 
<item>1152x864-(60,70,75,80) 
<item>1280x1024-(60,70,74,75)
<item>1600x1200-(60,66,76)
</itemize>
<item>Az alapértelmezett felbontás 640x480-60. 
<item>font:font name a konzol karakterkészletének beállításához. Például: font:SUN12x22
<item> ypan beállítja az aktuális virtuális magasságot akkorára, amekkorát a video
memória mérete megenged.
<item>oldmem opció csak a CybervisionPPC felhasználók számára él. Ezzel a 
kapcsolóval megmondhatod a rendszernek, hogy a kártyádon Fujitsu SGRAM-ok vannak
(minden 30-Dec-1998 előtti CVisionPPC-k esetén). 
<item>virtual (ideiglenesen) add meg, hogy a kernel áthelyezi a platformodon 
a PCI régiókat.
</itemize>

<sect1>ATI kártyád van?
<p>

[MEGJEGYZÉS: Ez az információ a legjobb formájában látható, csak másod vagy harmadkézből
van, mivel nincs ATI kártyám, hogy tesztelhessem. Kérlek javíts ki, ha tévednék, vagy
égess meg!] 8)

Az ATI kártyák használhatóak a vesafb meghajtóval, de lehetnek problémáid a
használatával, attól függően, hogy milyen súlyosan károsodott a kártyád. 
Szerencsére az atyfb framebuffer meghajtó rendelkezésedre áll. Feltéve, hogy
menuconfig-ot használsz, a következőket kell tenned:

Menj a Code Maturity Level menübe és engedélyezd a fejlesztés alatt álló 
és/<em/vagy nem teljes meghajtóprogramok kiválasztási lehetőségét. Erre a 
2.2.x kernelverziók esetében már nincs szükség./

Menj a Console Drivers menübe és engedélyezd a következőket:

<itemize>
<item>VGA Text Console
<item>Video Selection Support
<item>Support for frame buffer devices (experimental)
<item>ATI Mach64 display support      
<item>Advanced Low Level Drivers
<item>Válaszd ki a Mono, 2bpp, 4bpp, 8bpp, 16bpp, 24bpp és 32bpp tömörített pixel meghajtókat
<item>Ha szeretnél kernelbefordított karaktereket, válaszd ki a következőket:
<itemize>
<item>Select compiled-in fonts
<item>Select Sparc console 12x22 font
</itemize>
</itemize>

Fordítsd újra a kerneled. Ezután módosítanod kell a lilo.conf állományt, hogy
engedélyezd a atyfb eszközt. A leggyorsabb, és legyegyszerűbb módja, ha felhasználod
a következő példát:

<verb>
# LILO konfigurációs állomány
boot = /dev/hda3
delay = 30
prompt
vga = 792    # Erre azért van szükség, hogy használható állapotban induljon
# A Linux bootolható partíció beállítása következik
image = /vmlinuz
  append = "video=atyfb:1024x768,font:SUN12x22"
  root = /dev/hda3
  label = Linux
  read-only # A nem-UMSDOS állományrendszert célszerű csak olvashatónak beilleszteni az ellenőrzéshez
</verb>

Az "atyfb:mode:1024x768,font:SUN12x22" jelzi, hogy egy 1024x768 üzemmódot választottál.

Végül kell készítened a framebuffer eszközöket a /dev alkönyvárban. Framebuffer
eszközönként egyre lesz szükséged, így mindössze annyi a teendőd, hogy kiadod
az első alkalommal a mknod /dev/fb0 c 29 0 parancsot. A következők 32 többszörösei
lesznek, például a /dev/fb1 elkészítéséhez mknod /dev/fb1 c 29 32 parancsot kell
kiadnod, és így tovább, egészen a nyolcadik framebuffer eszközig 
(mknod /dev/fb7 c 29 224).

video=atyfb:[opció[,opció[,opció...]]]

ahol opció a következő lehet:

<itemize>
<item>font:SZTRING Kiválaszja a beépített karakterkészletet (amit a kernelbe fordítottál)
<item>noblink Kikapcsolja a villogást
<item>noaccel Letiltja a gyorsítást
<item>vram:ULONG Megmondja az atyfb meghajtónak, hogy mennyi memóriád van
<item>pll:ULONG Ismeretlen
<item>mclk:ULONG Ismeretlen
<item>vmode:ULONG Ismeretlen
<item>cmode:ULONG - beállítja a színmélységet - 0, 8, 15, 16, 24 és 32
</itemize>

<sect1>Mely grafikus kártyák VESA 2.0 kompatibilisek?
<p>
A következő felsorolás tartalmazza az összes olyan grafikus kártyát,
melyekről ismert, hogy működnek a vesafb eszközzel:

<itemize>
<item>ATI PCI VideoExpression 2MB (max. 1280x1024 @ 8bit)
<item>ATI PCI All-in-Wonder
<item>Matrox Millennium PCI - BIOS v3.0
<item>Matrox Millennium II PCI - BIOS v1.5
<item>Matrox Millennium II AGP - BIOS v1.4
<item>Matrox Millennium G200 AGP - BIOS v1.3
<item>Matrox Mystique & Mystique 220 PCI - BIOS v1.8
<item>Matrox Mystique G200 AGP - BIOS v1.3
<item>Matrox Productiva G100 AGP - BIOS v1.4
<item>Minden Riva 128 alapú kártya
<item>Diamond Viper V330 PCI 4MB
<item>Genoa Phantom 3D/S3 ViRGE/DX
<item>Hercules Stingray 128/3D TV kimenettel
<item>Hercules Stingray 128/3D TV kimenet nélkül - BIOS frissítés szükséges
(ingyenesen beszerezhető a support@hercules.com)
<item>SiS 6326 PCI/AGP 4MB 
<item>STB Lightspeed 128 (Nvida Riva 128 alapú) PCI 
<item>STB Velocity 128 (Nvida Riva 128 alapú) PCI
<item>Jaton Video-58P ET6000 PCI 2MB-4MB (max. 1600x1200 @ 8bit)
</itemize>

A következő felsorolás alaplapon elhelyezkedő chip készleteket tartalmaz:

<itemize>
<item>Trident Cyber9397
<item>SiS 5598
</itemize>

Az alábbi feketelista olyan grafikus kártyákat tartalmaz, melyek nem 
működnek együtt a vesafb eszközzel:

<itemize>
<item>TBA
</itemize>

<sect1> Lefordíthatom a vesafb-t modulként?  
<p> 

Tudomásom szerint a vesafb nem modularizálható, hacsak valamikor a 
vesafb fejlesztői úgy nem döntenek, hogy módosítják a forrást, és 
modularizálhatóvá teszik. Jegyezzük meg, hogy ha még lehetségessé
is válik a modularizálhatóság, indulásidőben akkor sem fogsz semmi
kimenetet látni a megjelenítőn, amíg a vesafb nincs <em/modulpróbálva/.
Talán sokkal ésszerűbb lenne a kernelben hagyni, azokra az esetekre, 
ha indításkor probléma lépne fel.

<sect1>Hogyan módosíthatom a kurzort?
<p>

[A VGA-softcursor.txt-ből vettem - köszönet Martin Mares-nek érte!]

A Linuxnak most már többféle képessége is lehetővé teszi a kurzor
megjelenésének módosítását. Általában átállíthatod a hardver kurzor
méretét (és körüljárhatsz néhány csúnya hibát azokon a csapnivaló
Trident kártyákon -- nézd meg a #define TRIDENT_GLITCH-et a drivers/char/vga.c
állományban). Ebben az esetben ha engedélyezed a "Software generated cursor"-t
a rendszer konfigurációdban, eljátszhatsz néhány új trükkel: átalakíthatod
a kurzorod nem villogó piros blokká, a karakter inverz hátterévé 
változtathatod, vagy kiemeltté teheted az adott karaktert, és még
mindig választhatsz, hogy az eredeti hardver kurzor látható maradjon, 
vagy sem. Lehet még néhány dolog, amire sose gondoltam még.

A kurzor megjelenítését a <verb><ESC>[?1;2;3c</verb> escape szekvencia
szabályozza, ahol 1, 2 és 3 lejjebb megmagyarázott paraméterek. Ha
kihagyod bármelyiket, az alapértelmezésre állnak, ami 0.

Az 1. paraméter a kurzor méretét határozza meg (0=alapértelmezett, 
1=láthatatlan, 2=aláhúzás,
..., 8=teljes blokk) + 16 ha a szoftver kurzort szeretnéd alkalmazni, 
+ 32 ha mindig szeretnél a háttérszínen változtatni + 64 ha nem szertnéd
ugyanazd a hátteret, mint ami az előtér. A kiemelést nem veszi figyelembe
az utolsó két flag esetén. 

A második paraméter kiválasztja az általad megváltoztatandó karakter 
attribútum bitet (egyszerűen össze XOR-olva e paraméter értékével).
Hagyományos VGA-n a négy magas bit határozza meg a hátteret, az
alsó négy pedig az előteret. Mindkét csoportban, a három alacsony
bit állítja a színt (mint a konzol hagyományos színkódjai esetén),
s a legértékesebb bit állítja be a kiemelést (vagy néhány esetben
a villogást -- a VGA-d konfigurációjától függően).

A harmadik paraméter az általad beállítandó karakter attribútum 
bitekből áll. A bit beállítása a bit átállítása előtt lép érvénybe,
így egyszerűen törölhetsz egy bitet a beállító és az átállító
maszkba illesztve.

Hagyományos villogó aláhúzás beállításához: 	echo -e '\033[?2c'
Villogó blokk beállításához: 			echo -e '\033[?6c'
Nem villogó piros blokk beállításához:		echo -e '\033[?17;0;64c'


<sect>Framebuffer eszközök használata Atari m68k platformokon
<p>

Ez a fejezet bemutatja a framebuffer lehetőségeket Atari m68k platformokon.

<sect1>Milyen üzemmódok állnak rendelkezésre Atari m68k platformokon?
<p>

<verb>
Színek    320x200 320x480 640x200 640x400 640x480 896x608 1280x960
---------+---------------------------------------------------------
 1 bit   |                         sthigh   vga2    falh2   tthigh
 2 bites |                 stmid            vga4
 4 bites | stlow                         ttmid/vga16 falh16
 8 bites |         ttlow                   vga256
</verb>

<tt/ttlow, ttmid és tthigh/ módokat csak a TT használja, a <tt/vga2,
vga4, vga15, vga256, falh3 és falh16/ módokat csak a Falcon használja.

Ha a <tt/video=xxx/ kernel opcióval használod alopció nélkül, a kernel
a következő sorrendben fogja végigpróbálni az üzemmódokat, amíg a 
hardvernek megfelelő módot nem talál:

<itemize>
<item><tt/ttmid/
<item><tt/tthigh/
<item><tt/vga16/
<item><tt/sthigh/
<item><tt/stmid/
</itemize>

Megadhatsz egy általad használni kívánt üzemmódot is, ha nem szertnéd, 
hogy a rendszer automatikusan keresse meg az általad kívánt üzemmódot.
Például a <tt/video=vga16/ 4 bites 640x480 felbontású megjelenítőt ad.

<sect1>Egyéb alopciók az Atari m68k platformokra
<p>

Több alopció megadható a <tt/video=xxx/ paraméterrel:

<itemize>
<item><tt/inverse/ - invertálja a megjelenítőt, így az előtér- és a háttérszínek
megcserélődnek. Általában a háttér fekete, de ezzel az alopcióval fehér lesz.
<item><tt/font/ - beállítja a szöveges módban használandó karakterkészletet.
Jelenleg csak a <tt/VGA8x8/, <tt/VGA8x16/, <tt/PEARL8x8/ karakterkészleteket
választhatod ki. Az alapértelmezés szerint ha a képernyő függőleges mérete 
kisebb 400 képpontnál, a <tt/VGA8x8/ karakterkészletet, egyébként a <tt/VGA8x16/
karakterkészletet használja. 
<item><tt/internal/ - egy nagyon érdekes opció. Részletesebb információkért 
nézd meg a következő fejezetet.
<item><tt/external/ - mint fenn.
<item><tt/monitorcap/ - megadja a multisync-ek képességeit. NE használd fix
szinkronizációval rendelkező monitor esetén!
</itemize>

<sect1>A belső alopciók használata Atari m68k platformokon
<p>

Szintakszis: <tt/internal:(xres);(yres)[;(xres_max);(yres_max);(offset)]/

Ez a paraméter néhány kiegészítő belső video hardver képességét határozza
meg, mint például az OverScan módokat. A <tt/(xres)/ és a <tt/(yres)/ 
megadja a képernyő kiterjesztett dimenzióit.

Ha az OverScan üzemmódod számára fekete keretre van szükség, az <tt/internal:/
alopció utolsó három argumentumába kell írnod. Az <tt/(xres_max)/ a hardver
által engedélyezett legnagyobb vonalhosszúság, az <tt/(yres_max)/ a
sorok számának maximuma és az <tt/(offset)/ a képernyő memória látható részének
a fizikai kezdetéhez viszonyított eltolás bájtokban.

Gyakran a kiterjesztett belső video hardvert külön aktiválni kell,
ehhez kell a <tt/"switches=*"/ opciót használnod. [Megjegyzés: 
A szerző szerene némi extra információhoz jutni. Az m68k dokumentációja
a kernelben nem teljesen világos ennél a pontnál, és neki nincs Atarija!
Példák is hasznosak lennének]

<sect1>Az Atari m68k platformok külső alopcióinak használata
<p>

Szintaxis:
<tt/external:(xres);(yres);(depth);(org);(scrmem)[;(scrlen)[;(vgabase)[;(colw)[;(coltype)[;(xres_virtual)]]]]]/

Ez eléggé összetett, így ez a dokumentáció megpróbálja amennyire csak lehet 
érthetően elmagyarázni, de a Szerző nagyra értékelné, ha valaki átnézné,
hogy nem kutyult-e össze valamit! :o)

Ez az alopció meghatározza, hogy külső video hardvered van (leginkább
egy grafikus kárty), és hogyan használhatod Linux-al. A kernel alapértelmezés
szerint a belső video hardver ismeretére korlátozott, így neked kell a szükséges
paraméterekkel ellátni, hogy használhasd a külső video hardvert. Két korlátozás
van: át kell váltanod az indítás előtt abba az üzemmódba és amikor boot-olsz, 
nem változtathatod meg az üzemmódokat.

Az első három paraméter magától érthetődik: megadja a képernyő dimenzióit
képpontokban: magasság (height), szélesség (width) és mélység (depth). A
megadott mélységnek 2^n szín esetén a használandó síkok számának kell 
lennie. Például ha a 256 színű megjelenítőt szeretnél használni, a 
mélységnek 8-at kell megadnod. Ez a külső grafikus hardvertől függ, bár 
így a hardver képességeire leszel lekorlátozva.

Ezután meg kell adnod a kernelnek, hogy szerveződik a memória - add meg
betűvel az <tt/(org)/ paramétert:

<itemize>
<item><tt/n/ - hagyományos síkokat használjon, tehát egyik teljes sík a 
másik után
<item><tt/i/ - átlapolt síkokat használjon, azaz 16 bit az első síkból,
majd 16 a következőből, és így tovább. Csak a beépített Atari video
módok használják ezt - és nem is létezik ezt a módot támogató grafikus
kártya.
<item><tt/p/ - tömörített képpontokat használ, azaz az egymást követő
bitek egy képpont összes síkját tartalmazzák. Ez a leggyakoribb megoldás
a 256 színű képernyő megjelenítésére a grafikus kártyákon.
<item><tt/t/ - valódi színt használ, azaz ez valójában tömörített képpontokat
használ, de nincs szüksége szín feloldó táblára, mint az egyéb tömörített
képpont üzemmódok esetében. Ezek az üzemmódok általában a 24 bites 
megjelenítők - melyek 16.8 millió színt bocsátanak rendelkezésedre.
</itemize>

<em/Habár/, monokróm üzemmódok esetében az <tt/(org)/ paraméternek más jelentése van:

<itemize>
<item><tt/n/ - hagyományos színeket használ, azaz 0=fehér, 1=fekete
<item><tt/i/ - invertált színeket használ, azaz 0=fekete, 1=fehér
</itemize>

A következő fontos video hardver elem a videomemória báziscíme. Ezt
a <tt/(scrmem)/ paraméter adja meg, hexadecimális, <tt/0x/ prefix-el 
rendelkező formában. Ezt a külső video hardvereddel kapott dokumentációból
kell megkeresned.

A következő paraméter, az <tt/(scrlen)/ megadja a kernel számára a 
videómemória méretét. Ha ez hiányzik, az <tt/(xres)/, <tt/(yres)/ és
a <tt/(depth)/ paraméterekből számolódik. Manapság nem érdemes ide
értéket írni. Hagyd üresen, és tégy két kettőspontot egymás mellé, ha
meg kell adnod a <tt/(vgabase)/ paramétert, különben hagyd az egészet.

A <tt/(vgabase)/ paraméter opcionális. Ha nincs megadva, a kernel nem
tudja írni és olvasni a video hardver szín regisztereit, ezért neked
kell beállítani a megfelelő színeket a Linux indítása előtt. Azonban
ha a kártyád VGA kompatibilis, megadhatod a VGA regiszterek címét, így
már meg tudja változtatni a szín feloldó táblákat. Az ehhez szükséges
információt a külső video hardver dokumentációjában találod meg. Hogy
<em/tisztázzuk/, a <tt/(vgabase)/ a <em/bázis/ cím, azaz a 4k-hoz 
igazított cím. A színregiszterek írásához, olvasásához a kernel a 
<tt/(vgabase) + 0x3c7/ és a <tt/(vgabase) + 0x3c9/ közötti címtartományt
használja. Ezt a paramétert hexadecimálisan kell megadni, és elé kell
írni a <tt/0x/ prefixet, ugyanúgy, mint a <tt/(scrmem)/ esetében.

A <tt/(colw)/ csak akkor bír jelentéssel, ha a <tt/(vgabase)/ paraméter
is adott. Ez mondja meg a kernelnek, hogy mekkorák a szín regiszterek,
azaz mennyi az egy színre jutó bitek száma (piros/zöld/kék). Az 
alapértelmezett érték általában 6 bit, de gyakori a 8 bit használata is.

A <tt/(coltype)/ a <tt/(vgabase)/ paraméterrel együtt használatos, 
megadja a grafikus kártyád szín regiszter modeljét a kernelnek. 
Jelenleg a <tt/vga/ és a <tt/mv300/ típusok támogatottak. A <tt/vga/
az alapértelmezett. 

A <tt/(xres_virtual)/ csak a ProMST/ET4000 kártyák esetén szükséges, 
ahol a fizikai vonalhosszúság különbözik a láthatótól. A ProMST esetén
2048-at kell megadnod, szemben az ET4000-el, ahol a video kártya 
inicializálásától függ. 

<sect>Framebuffer eszközök használata Amiga m68k platformokon
<p> 

Ez a fejezet bemutatja az Amigák opcióit, melyek nagyon hasonlítanak
az Atari m68k platformokra már bemutatottakhoz. 

<sect1>Mely üzemmódok használhatók Amiga m68k platformokon?
<p>

Ez az Amigában használt chipsettől függ. Három fő típusa van:
<tt/OCS, ECS és AGA/, melyek használják a színes framebuffer eszközt. 

<itemize>
<item>NTSC üzemmódok:
<itemize>
<item><tt/ntsc/ - 640x200
<item><tt/ntsc-lace/ - 640x400 
</itemize>
<item>PAL üzemmódok:
<itemize>
<item><tt/pal/ - 640x256 
<item><tt/pal-lace/ - 640x512
</itemize>
<item>ECS üzemmódok: - 2 bites színek ECS-n, 8 bites színek csak az AGA chipseteken.
<itemize>
<item><tt/multiscan/ - 640x480
<item><tt/multiscan-lace/ - 640x960
<item><tt/euro36/ - 640x200
<item><tt/euro36-lace/ - 640x400
<item><tt/euro72/ - 640x400
<item><tt/euro72-lace/ - 640x800
<item><tt/super72/ - 800x300
<item><tt/super72-lace/ - 800x600
<item><tt/dblntsc/ - 640x200
<item><tt/dblpal/ - 640x256
<item><tt/dblntsc-ff/ - 640x400
<item><tt/dblntsc-lace/ - 640x800
<item><tt/dblpal-ff/ - 640x512
<item><tt/dblpal-lace/ - 640x1024
</itemize>
<item>VGA üzemmódok: - 2 bites színek ECS-n, 8 bites színek csak az AGA chipseteken.
<itemize>
<item><tt/vga/ - 640x480
<item><tt/vga70/ - 640x400
</itemize>
</itemize>

<sect1>Az Amiga m68k platformok alopciói
<p>

Ezek az Atari m68k alopciókhoz hasonlóak. Úgy mint:

<itemize>
<item><tt/depth/ - megadja a képpont bitmélységét.
<item><tt/inverse/ - ugyanazt teszi, mint az Atari-n.
<item><tt/font/ - ugyanazt teszi, mint az Atari-n, bár a <tt/VGA8x8/ karakterkészlet helyett
a <tt/PEARL8x8/ karakterkészletet használja, ha a képernyő mérete 400 képpontnál keskenyebb.
<item><tt/monitorcap/ - meghatározza a multisync monitorok képességeit. Ne használd állandó
szinkronizációs idővel rendelkező monitorok esetében!
</itemize>

<sect1>A támogatott Amiga grafikus kiegészítő kártyák
<p>

<itemize>
<item><tt/Phase5 CyberVision 64/ (S3 Trio64 chipkészlet)
<item><tt/Phase5 CyverVision 64-3D/ (S3 ViRGE chipkészlet)
<item><tt/MacroSystems RetinaZ3/ (NCR 77C32BLT chipkészlet)
<item><tt/Helfrich Piccolo, SD64, GVP ECS Spectrum, Village Tronic Picasso
II/II+ és IV/ (Cirrus Logic GD542x/543x)
</itemize>

<sect>Framebuffer eszközök használata Macintosh m68k platformokon
<p>

Jelenleg az implementált framebuffer eszköz csak a Linux előtt a MacOS alatt 
kiválasztott üzemmódot támogatja, valamint az 1, 2, 4 és 8 bites színes 
üzemmódokat.

A framebuffer alopciókat a következő szintaxis szerint választhatod ki:

<verb>
video=macfb:<font>:<inverse>
</verb>

Válaszhatsz VGA8x8, VGA8x16 és 6x11, stb. karakterkészleteket. Az inverse
opció segítségével invertálhatod a video jelet.

<sect>Framebuffer eszközök használata PowerPC platformokon
<p>

A szerző szeretne bővebb információt kapni a framebuffer eszközök ezen a 
platformon történő használatáról.


<sect>Framebuffer eszközök használata Alpha platformokon

<sect1>Milyen üzemmódokat használhatok?  
<p> 

Egyenlőre kizárólag a TGA PCI kártya áll rendelkezésre - ami csak
80x30-at tud 640x480-as felbontásban, 8, vagy 24/32 biten.

<sect1>Mely grafikus kártyák működnek a framebuffer eszközzel?
<p>

A következő felsorolás tartalmazza az összes olyan grafikus kártyát,
melyekről ismert, hogy működnek Alpha platformon:

<itemize>
<item><tt/DEC TGA PCI (DEC21030)/ - 640x480 @ 8 bites vagy 24/32 bites változatok 
</itemize>

<sect>Framebuffer eszközök használata SPARC platformokon

<sect1>Mely grafikus kártyák működnek a framebuffer eszközzel?
<p>

A következő felsorolás tartalmazza az összes olyan grafikus kártyát,
melyekről ismert, hogy működnek SPARC platformon:

<itemize>
<item>MG1/MG2 - SBus vagy Sun3-ba intergrálva - max. 1600x1280 @ mono (BWtwo)
<item>CGthree - hasonló az MG1/MG2-höz, de támogat színeket is - maximális felbontás?
<item>GX - SBus - max. 1152x900 @ 8bit (CGsix)
<item>TurboGX - SBus - max. 1152x900 @ 8 bit (CGsix)
<item>SX - kizárólag SS10/SS20 - max. 1280x1024 @ 24 bit - (CGfourteen)
<item>ZX(TZX) - SBus - 24bites 3D gyorsító kártya - maximális felbontás?
(Leo)
<item>TCX - AFX - kizárólag Sparc 4-hez - max. 1280x1024 @ 8bit
<item>TCX(S24) - AFX - kizárólag Sparc 5-höz- max. 1152x900 @ 24bit
<item>Creator - SBus - max. 1280x1024 @ 24bit (FFB)
<item>Creator3D - SBus - max. 1920x1200 @ 24bit (FFB)
<item>ATI Mach64 - gyorsított 8/24bites kizárólag Sparc64 PCI-hoz
</itemize>

Használhatsz PROM-ot a kimenő karakterek megjelenítésére a képernyőn,
vagy a soros konzolon.

Nézd meg a Sparc Frame Buffer GYIK-et a 
<verb>http://c3-a.snvl1.sfba.home.com/Framebuffer.html</verb> címen.

<sect1>A framebuffer eszközök beállítása
<p> 

A make config alatt választanod kell, hogy a <tt/promcon/-t és/vagy 
az <tt/fbcon/-t fordítod bele. Választhatod mindkettőt, de ekkor
kernel flag-ekkel kell kiválasztanod az eszközt. Mindig az <tt/fbcon/
az elsődleges, ha nem állítod be az elsődlegest. Ha a <tt/promcon/
nincs kiválasztva, az indításkor a <tt/dummycon/-ra mutat alapértelmezés
szerint. Ha a <tt/promcon/ ki van választva, ezt az eszközt használja. 
Amint a buszok elindultak, ha az <tt/fbcon/ bele van fordítva, a
kernel megkeresi a fenti framebuffereket és az <tt/fbcon/ segítségével
használja azokat. Ha nincs framebuffer eszköz, a <tt/promcon/ aktíválódik.

Íme a kernel opciók:
<verb>
video=sbus:opciók
	ahol az "opciók" vesszővel elválaszott lista:
		nomargins	a margót 0,0-ra állítja
		margins=12x24	a margót 12,24-re állítja (az alapértelmezettet a 
felbontásból számolja ki)
		off		ne használja az SBus/UPA framebuffer eszközöket
		font=SUN12x22	egy meghatározott karakterkészletet használjon
</verb>

Így például, ha <verb> video=sbus:nomargins,font=SUN12x22 </verb> opciókkal
indítod a géped, csinos, gyors konzolt kapsz 96x40-es szöveges felbontással,
ami hasonlít a Solaris konzolhoz, de szinekkel és olyan virtuális terminálokkal, 
mint az Intel platformokon. 

Ha a <tt/SUN12x22/ karakterkészletet szeretnéd használni, engedélyezned
kell a make config alatt (tiltsd le a <tt/fontwidth != 8/ opciót). A
gyorsított framebufferek bármely 1 és 16 képpont közötti szélességgel
rendelkező karakterkészletet meg tudnak jeleníteni, míg a buta framebuffer-ek
csak a 4, 8, 12 és 16 képpont szélességű karaktereket támogatja.

Ajánlatos friss consoletools csomagot beszerezned.

<sect>Framebuffer eszközök használata MIPS platformokon
<p> 

Ezen a platformon nincs szükség beavatkozásra, minden automatikusan
működik. Az Indy-k bedrótozva 160x64-es konzolt használnak. Habár
lépéseket tettek, hogy átírják ezen Indy-k számára a konzol kódját, 
így tartsd rajta a szemed ezen a fejezeten.

<sect>Framebuffer eszközök használata ARM platformokon
<p>

<sect1>Netwinders
<p>
A Netwinder-ek számára (melyek a ARM SA110 RISC chipet használják - a szeretnivaló
British processzort), kétféle Cyber2000 framebuffer meghajtó áll rendelkezésre -
egy a 2.0.x-es kernelhez, a másik a 2.2.x-es kernelek számára. Nagyon nyilvánvaló
mindkét kernel számára e meghajtó használatának engedélyezése, bár a régebbi 
verzióba a színmélység és a felbontás bele van drótozva, ám jó hír, hogy az
újabb verzió a 2.2.x-es kernelek esetében sokkal rugalmasabb, de jelenleg                                                   
még képlékeny állapotban van és még fejlesztés alatt áll. Ahhoz, hogy fusson,
legalább a kernel forrásod ARM port-jával jövő dokumentációt is el kell olvasnod.

A Netwinder-ek VGA kompatibilis chipkészletet használnak, de sajnos senki nem 
portolta még a vgafb-t. Ez talán megtörténi valamikor, ha valaki egy ideig
a kezében tarthatná. [Én megtenném, ha valaki adna egy NetWindert, hogy 
eljátszhassak vele]

<sect1>Acorn Archimedes
<p>
Az Acorn-oknak az 1.9.x-es Linux napok óta mindig van framebuffer támogatása. Habár
az Acornfb meghajtó a 2.2.x-ben teljesen új, mivel az általános framebuffer interfész
megváltozott a 2.1.x-es kernelek fejlesztése során (ami természetesen a 2.2.x lett).
Mint korábban, egyszerű ügy a meghajtó aktiválása, a színmélység és a felbontás 
beállítása.

<sect1>Egyéb ARM portok (SA 7110s et. al)
<p>
Meglepő módon, még a Psion 5 és a Geofox is rendelkezik framebuffer meghajtóval!
Mesélték, hogy még a pingvin is szépen megjelenik [Valaki megdobhatna egy
Psion 5-el!]

<sect>Több fejes framebufferek használata
<p>
A dokumentáció ezen része Frederick A. Niles-nek köszönhető, aki
fenntartja az itt megjelenő információk jogát. 

<sect1>Bevezetés
<p>
  E dokumentáció fő célja, hogy bevezessen a kétfejes Linux konfiguráció
  futtatás rejtelmeibe. Bár ez a folyamat nagyon egyszerű, több probléma
  felléphet, amik aztán balul üthetnek ki.
  
  A példa, amire koncentrálok, egy X szerver futtatása lesz a második 
  monitoron. Ezt szépnek találom, mivel sokan találhatnak régi, nagy
  19-21 inches fix frekvenciájú monitorokat, amiket kidobnak az emberek,
  mert nem tudják használni. Így elindíthatod a rendszered egy kis
  multisync monitorral, és használhatod X alatt a szép nagy monitort.

  Kérlek értsd meg, hogy a két fejes támogatás jelenleg fejlesztés alatt 
  áll, így gyorsan változik ez az információ. Ebben a dokumentációban 
  bármi lehet már most elavult, vagy egyszerűen helytelen már most,
  amikor ezt olvasod.

  ** FIGYELEM ** Ez a dokumentáció az XFree86 4.0 kiadása előtt készült.
  Ha az XFree86 4.0 megjelenése után olvasod ezt, már sokminden megváltozott.
  Próbáld meg beszerezni e dokumentáció újabb változatát.
  
<sect1>Visszajelzés
<p>
  A dokumentációval kapcsolatos visszajelzéseket természetesen örömmel
  fogadjuk. A vissyajelzéseitek nélkül nem is létezhetne ez a dokumentáció.
  Így kérlek, minden hozzáfűznivalót, megjegyzést, kritikát küldj a következő
  címre:
  Frederick.A.Niles@gsfc.nasa.gov.

<sect1>Közreműködők
<p>
  A következő emberek működtek közre e mini-HOGYAN elkészítésében.

  *  Petr Vandrovec <tt/vandrove@vc.cvut.cz/

  *  Andreas Ehliar <tt/ehliar@lysator.liu.se/ (x2x)

  *  Marco Bizzarri <tt/m.bizzarri@icube.it/ (több X szerver)

<sect1>Lemondás a szabványokról
<p>
  Semmi kötelezettséget nem fogadunk el e dokumentáció tartalmával kapcsolatban.
  Az elképzeléseket, példákat és egyéb részeit saját felelősségedre
  használhatod. Mivel ez egy újdonsült dokumentáció, tartalmazhat hibákat
  és elírásokat, amik tönkretehetik a rendszered. Használd ezért különleges
  körültekintéssel és bár ez elég szokatlan, nem vállalok semmi felelősséget,
  mely e dokumentáció használatának következményeiből eredne. 

<sect1>Copyright Információk
<p>
  A dokumentáció ezen részét (c)1999 Frederick Niles másolásjog védi, és
  a következő feltételek mellett terjeszthető:

  *  A Linux HOWTO dokumentációk egészben, vagy részeiben reprodukálhatók
     terjeszthetők, akármilyen fizikai vagy elektronikus médián, amíg ez
     a copyright figyelmeztetés változatlanul szerepel az összes másolaton.
     Kereskedelmi terjesztés engedélyezett és bátorított, bár a szerző
     szeretne értesülni az ily módon terjesztett példányokról.

  *  Minden fordítás, leszármazott munkák, vagy összegyűjtött munkák bármely
     Linux HOWTO dokumentáció esetén e copyright figyelmeztetéssel együtt
     kell, hogy terjesztődjenek. Így, nem készíthetsz egy Linux HOWTO-ból
     leszármaztatott munkát, és nem vethetsz ki rá terjesztés beli korlátozást.
     Kivételt lehet kérni bizonyos körülmények között e szabályok alól,
     vedd fel a kapcsolatot a Linux HOWTO koordinátorral a lent szereplő
     címen.

  *  Ha kérdésed van, vedd fel a kapcsolatot a Linux HOWTO koodinátorral,
     a linux-howto@sunsite.unc.edu címen

<sect1>Milyen hardver támogatott?
<p>
  A legtöbb videokártya feltételezi, hogy ő az egyetlen a rendszerben és
  állandó címmel elsődleges megjelenítő kártyának van beállítva. Van 
  azonban néhány kivétel:

  *  Matrox kártyák: Ez magába foglalja a Matrox Millennium, Matrox Millennium II,
     Matrox Mystique, Matrox Mystique 220, Matrox Productiva G100, Matrox
     Mystique G200, Matrox Millennium G200 és Matrox Marvel G200 video kártyákat.
     

  *  MDA: Ide soroljuk a monokróm Hercules grafikus adaptereket több mással egyetemben.
          Ez csak szöveges második fej támogatást nyújt.

  Megjegyzés: csak a második kártyának kell a fentiek valamelyikének lennie.

<sect1>Kereskedelmi támogatás
<p>
  Ez a mini-HOGYAN elsősorban szabad szoftverhez készült. Azonban 
  létezik néhány kereskedelmi X szerver, ami rendelkezik több-fejes
  támogatással. Ezek közé tartozik a Metro Link (www.metrolink.com) 
  Metro-X szervere és az Xi Graphics (www.xig.com) Accelerated-X
  szervere.

<sect1>Az összes cucc beszerzése.
<p>
      A következő patch-ekre és programokra lesz szükséged:

      * "fbset" program
         próbáld itt: http://www.cs.kuleuven.ac.be/~geert/bin/
	 (megjegyzés: ez a program a RedHat 6.0-al jön) 

      * "fbaddon" Matrox dual head patch-ek Linux kernelhez
         próbáld itt: ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/

      * "con2fb" program
         próbáld itt: ftp://platan.vc.cvut.cz/pub/linux/matrox-latest/

      * X11 frame buffer szerver, XF86_FBDev. Ez az XFree86 3.3.1 szabványos
        része

<sect1>Kezdjünk bele
<p>
   Az első dolog, amit tenned kell, hogy alkalmazod a Linux forrás
   másolatára az "fbaddon" patch-et. Ezután be kell konfigurálnod a 
   kernelt, majd bekapcsolni a frame buffer támogatást. Ha Matrox
   kártyád van, kapcsold be a Matrox általánosított gyorsított meghajtó
   támogatását és a kártyádnak megfelelő típust is add meg. Ne kapcsold
   be a VESA framebuffer támogatást. Csak ütközést okoz. Kapcsold be
   (természetesen) a többfejes támogatást. Készítsd el a kernelt és
   indítsd újra a rendszert.

   Most fel kell telepítened az "fbset" programot és gondosan át kell
   olvasnod az összes vele kapcsolatos dokumentációt, hogy hogyan
   adhatod meg a beállításokat. Erősen javasolt az "/etc/fb.modes"
   állomány használata, ha már eldöntötted, milyen beállításokat
   használsz. Az fbset program tartalmaz egy Perl szkriptet, amivel
   átalakíthatod az XF86Config állományodat fb.modes beállításokká. 
   Az A és B függelékben csatoltam a saját octave/Bourne parancsértelmező 
   szkriptemet, hogy átalakíthasd az XF86Config állományodat.

   Hozzá kell szoknod a framebuffer eszköz használatához a monitorodon, 
   meg kell értened minden olyan dolgot, amire a ugyan első pillantásra
   nincs szükséged a többfejes támogatáshoz, de később rengeteg fejfájást 
   takaríthat meg neked.
   
   Arra fogok öszpontosítano a magyarázatomban, hogy a második monitoron
   elinduljon egy X, utána bármi más konfiguráció beállítása nyilvánvaló
   részhalmaza lesz a már elvégzett eljárásoknak.

<sect2>Mozduljunk egy konzollal odébb...
<p>
  Fordítsd le a "con2fb" programot. Ha argumentum nélkül futtatod, 
  a következő használati utasítást kapod:

  "usage: con2fb fbdev console".

  Így a példa utasítás "con2fb /dev/fb1 /dev/tty6" lesz, hogy áthelyezd
  a hatodik virtuális konzolt a második monitorra. Használd a CTRL-ALT-F6
  billentyűzet kombinációt a konzolra váltáshoz, és lám, tényleg a
  második monitoron tűnik fel.

<sect2>Az "fbset" program használata a második monitor beállításához
<p>
  Csak annak a monitornak a beállításait változtatja meg az "fbset"
  program, amelyik képernyőn futtatod. Ezért óvatosan kell bánnod az
  "-fb" kapcsolóval a második monitoron. Bizonyos esetekben ha nem 
  teszel semmi mást, legalább a virtuális függőleges felbontást szeretnéd
  az aktuális függőleges felbontássá tenni.

     pl. "fbset -fb /dev/fb1 -vyres 600"

  Ez rettenetesen lelassítaná a szöveges üzemmódot, de az X visszataszító
  lenne e nélkül.

<sect2>Az X beállítása framebuffer támogatására.
<p>
  A framebuffer.txt állomány ezt nálam sokkal jobban elmagyarázza, de 
  azért álljon itt két nagyon fontos pont.

  Győződj meg róla, hogy átállítottad az "X" láncot, hogy az "XF86_FBDev"-re
  mutasson.

  Ezután hozzá kell adnod egy monitor szekciót az XF86Config állományodban
  a framebuffer eszköz számára. Íme egy példa:

<verb>
# A framebuffer szerver

Section "Screen"
    Driver      "fbdev"
    Device      "Millennium"
    Monitor     "NEC MultiSync 5FGp"
    Subsection "Display"
        Depth       8
        Modes       "default"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       16
        Modes       "default"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       24
        Modes       "default"
        ViewPort    0 0
    EndSubsection
    Subsection "Display"
        Depth       32
        Modes       "default"
        ViewPort    0 0
    EndSubsection
EndSection
</verb>

  A "default" üzemmódokat használom, mivel nem hiszem, hogy bármely más
  érték működne a Matrox framebuffer esetében.

<sect2>Próbáld meg elindítani az X szervert a második monitoron.
<p>
  Állítsd a FRAMEBUFFER változót a második framebufferre.

      "export FRAMEBUFFER=/dev/fb1"

              vagy

      "setenv FRAMEBUFFER /dev/fb1"

  Úgy kell elindítanod az X szervert, hogy egyaránt egyezzen a kiválasztott
  színmélység és ugyanazon a monitoron jelenjen meg, ahonnan az X szervert
  indítottad.

     pl. "startx -- :0 -bpp 16 vt06"

  Ez a példa elindítja a "nulladik" X szervert a hatos virtuális konzolon
  16 bites színnel. Használd az ":1"-et a másik X szerver indításához
  másik framebufferen, így egyszerre két X szervered futhat. 

<sect1>Összefoglalás
<p>
  A második monitoron való X szerver futtatásának fontosabb lépései a
  következő pontokban foglalható össze:

  * Szerezz kernel patch-et, fbset, és con2fb programokat.

  * Patch-eld meg a kernelt, konfiguráld, építsd újra és indítsd újra a gépet.

  * Add hozzá az XF86_FBDev szekciót az XF86Config állományhoz és állítsd be az X láncot.

  Minden esetben, amikor újraindítod a géped:

  * Helyezz át egy konzolt.            pl. "con2fb /dev/fb1 /dev/tty6"

  * Állítsd be a paramétereket         pl. "fbset -fb /dev/fb1 1280x1024"

  * Állítsd be a FRAMEBUFFER változót. pl. "export FRAMEBUFFER=/dev/fb1"

  * Indítsd el az X szervert.          pl. "startx -- -bpp 16 vt06"

  Automatizálhatod ezt minden egyes újraindítás alkalmával parancsértelmező
  alias használatával. Alias-nak kell lennie és nem parancsértelmező
  szkriptnek, mivel fel kell insmernie az aktuális konzol számát. Ez az
  én C-parancsértelmező alias-om, ami az X-et a második, rögzített 
  frekvenciájú monitoromon indítja:

<verb>
alias startxfb = "
setenv FRAMEBUFFER /dev/fb\!*;    # beállítja a környezeti változót a parancs argumentumára.
con2fb $FRAMEBUFFER /dev/$tty;    # Elmozdítja az fb-t az aktuális tty-re.
fbset -fb $FRAMEBUFFER 1280x1024@62;  # Kedvenc az /etc/fb.modes-ból.
startx -- :\!* -bpp 16 vt0`echo $tty | cut -dy f 2`' # X ezen a tty-n.
"
</verb>

  A .cshrc állományomban ez mind ugyanabban a sorban található együtt, 
  a megjegyzések nélkül, de a könnyebb olvashatóság érdekében sortörést
  tettem bele, valamint megjegyzéseket szúrtam be magyarázat gyanánt. 
  A framebuffer sorszámát argumentumként átadom neki és már indul is
  az X.

  Nem vagyok biztos benne, hogy hogyan kell ugyanezt az alias-t bash
  alatt elkészíteni. Nem tudom, hogyan kell meghatározni az aktuális
  tty-t, vagy hogyan kell az argumentumokat átadni a bash-nek. Ha valaki
  elmondaná, beszúrnám ide. Habár használhatod a "tty" utasítást, hogy
  megtudd az aktuális VT nevét és egyszerűen két külön alias-t adsz
  mindkét X szervernek.

<sect1>Egyéb megjegyzések és problémák
<p>
  * Az "fbset" és a "startx" egyaránt ugyanarról a framebuffer-ről kell, 
    hogy fussanak. Ez a súlyos korlátozás gátat szab a szkriptekből
    történő automatizálásnak.
    
  * Az XFree86 4.0-ben "megfelelő" több-fejes támogatás lesz, de a 3.3.1
    nem rendelkezik ezzel. Futtathatsz két külön szervert 3.3.1-el, és 
    használhatod az x2x-et, hogy kapcsolgass közöttük, habár... (lásd
    a következő pontot)

  * Az inaktív framebuffer a használata utolsó képkockáját tartalmazza, 
    nem fog frissülni.

  * A monitor, ami nincs kiválasztva, nem őrzi meg az állapotát, ha nem
    aktív (De azért általában megteszi.).

  * Geert Uytterhoeven (a framebuffer karbantartója) és Linus Torvalds 
    nem értenek egyet a jelenlegi "framebuffer per VT" többfejes konzol
    támogatás változtatásban (pl. fbaddon), így lehet, hogy soha nem
    lesz a kernel fa fő csapása ez a téma. (Ezt harmadkézből hallottam,
    és elképzelhető, hogy semmi sem igaz belőle.)

  * Ha "megszeged a szabályokat" és az X szervert másik monitorról indítod
    ("startx" futtatása), a gép csúnyán össze fog omlani a billentyűzet és 
    az egér bemenetének összekeveredésével.

  * A framebuffer.txt dokumentáció a kernel forrásban elmagyarázza,
    hogy az XF86Config állomány Modeline beállítását közvetlenül is
    használhatod az X szerver futtatásához. A Matrox framebuffer
    használata úgy látszik arra kényszeríti az X szervert, hogy szabaduljon
    meg mindezektől. így egy időben csak egy ("default") beállításod 
    lehet (ugyanaz, mint szöveges üzemmódban).
  
  * Az XF86_FBDev nem gyorsított. Habár létezik patch a gyorsított Matrox
    támogatásra a http://www.in-berlin.de/User/kraxel/xfree86/ címen.

<sect2>Az "ötös init szint" (azaz az xdm/gdm) működésre bírása
<p>
  Még nem találtam rá megoldást, hogy hogyan lehetne ötös init szintben
  elindítani a gépet két monitoros konfigurációval (és tulajdonképpen
  a szerver megvan a második monitoron vagy mindkettőn). Míg elég 
  egyszerűnek tűnik egy új sor hozzáadása a gdm/xdm Xservers állományához,
  az a megkötés, hogy ugyanarról a framebuffer-ről kell indítanod az
  X szervert, megakadályozza a nyilvánvaló megoldást a működésben. Ha
  valaki talál rá megoldást, kérem, küldje el E-mail-ben nekem és
  beillesztem ide.

<sect2>Az x2x program használata.
<p>
  Létezik egy aranyos kis program, az x2x, ami X szerverek között
  kapcsolgat neked, ha a képernyő széléhez érsz. A program legutóbbi 
  ismert honlapja a http://ftp.digital.com/pub/DEC/SRC/x2x/ címen volt.
  Ez egy opcionális Debian csomag is egyúttal. Még nem próbáltam, de
  több felhasználó sikeres használatot jelzett. 

<sect2>Egyéb hasznos utasítások
<p>
  Ezek létező Linux utasítások, amik megérdemlik, hogy az ember
  emlékezzen rájuk, amikor többfejes konfigurációval küzd (különösen,
  ha szkripteket ír).

  * A "chvt" lehetővé teszi a virtuális terminálok közötti váltást. 

  * Az "openvt" új virtuális terminálon (VT)indít programot.

  * A "tty" visszaadja az aktuális terminál nevét. 

<sect2>A. Függelék - Octave cvtmode.m szkript 
<p>
(jegyezzük meg a bpp beállítást)
<verb>
#!/usr/bin/octave -q
bpp = 16;
DCF = sscanf(argv(1,:), "%f");
HR  = sscanf(argv(2,:), "%f");
SH1 = sscanf(argv(3,:), "%f");
SH2 = sscanf(argv(4,:), "%f");
HFL = sscanf(argv(5,:), "%f");
VR  = sscanf(argv(6,:), "%f");
SV1 = sscanf(argv(7,:), "%f");
SV2 = sscanf(argv(8,:), "%f"); 
VFL = sscanf(argv(9,:), "%f");
pixclock = 1000000 / DCF;
left_margin = HFL - SH2;
right_margin = SH1 - HR;
hsync_len = SH2 - SH1;

# 3) függőleges idők:
upper_margin = VFL - SV2;
lower_margin = SV1 - VR;
vsync_len = SV2 - SV1;

RR = DCF / (HFL * VFL) *1e6;
HSF = DCF / HFL * 1e3;

printf("mode \"%dx%d\"\n",HR,VR);
printf("   # D: %3.2f MHz, H: %3.2f kHz, V: %2.2f Hz\n", DCF, HSF, RR);
printf("   geometria %d %d %d %d %d\n", HR, VR, HR, VR, bpp);
printf("   idők %d %d %d %d %d %d %d\n", ...
                                 pixclock, left_margin, right_margin, ...
                                 upper_margin, lower_margin, ...
                                 hsync_len, vsync_len);
printf("endmode\n");
</verb>

<sect2>B. Függelék - Borne Shell szkript "cvtfile" 
<p>
(Ez hívja meg az octave szkriptet, a "cvtmode"-t)
<verb>
#!/bin/sh

# Shell szkript, mely átalakítja az XF86Config állományt fb.modes állománnyá.
# A cvtmode.m octave szkriptet használja

if [ -z $1 ]; then
  FILE=/etc/X11/XF86Config
else
  FILE=$1
fi

i=1
LEN=`grep Modeline $FILE | wc -l`
while expr $i \< $LEN > /dev/null ;
do
  CURLINE=`grep Modeline $FILE | cut -d'"' -f 3-20 | head -$i | tail -1 `
  ./cvtmode.m $CURLINE
  echo " "
  i=`expr $i + 1`
done
</verb>

<sect>Karakterkészletek használata és váltása
<p>

A kbd-0.99 csomagra van szükséged ahhoz, hogy váltani tudj a karakterkészletek 
között. A ftp://ftp.win.tue.nl/pub/linux/utils/kbd címről szerezheted ezt be.

A kbd-0.99 csomag letöltésének és telepítésének nagy előnye, hogy be tudsz
tölteni nemzetközi karaktereket is (pl. az Euro szimbólumot) a konzol 
eszközödre (Az a minimum, hogy a három legfontosabb szimbólumot tartalmazza
a billentyűzetem, a dollár jelet, az Angol font szimbólumot és az Euro jelet!).

<sect>Konzol módok váltása
<p>

Ahhoz, hogy üzemmódot tudj váltani (azaz 640x480, 800x600, stb), az
fbset programra van szükséged (jelenleg az fbset-19990118.tar.gz) - 
ftp-vel megleled az alább található címen:

<verb>
http://www.cs.kuleuven.ac.be/~geert/bin/fbset-19990118.tar.gz
</verb>

Teljes utasításkészlettel érkezik a használatát illetően.

<sect>Az X11 FBdev meghajtó üzembe helyezése
<p>

Ha nem 3.3.3.1-es vagy későbbi XFree86-ot használsz, sürgősen frissítsd
legalább 3.3.3.1-es XFree86-ra, ez tartalmazza a framebuffer eszközök
számára az FBdev X meghajtót. Egyébként kövesd az alább található 
lépéseket a letöltéshez, vagy készítsd el a saját FBdev meghajtódat a régebbi
XFree86 verziókhoz, mint a 3.3.2, vagy a 3.3.3, stb.

Menj a http://www.xfree86.org címre, és töltsd le a legfrisebb XServers
forrás arhívumot, tömörítsd ki és konfiguráld be a meghajtókat a következő
lépéseket követve:

<itemize>
<item>Szerkeszd az xc/config/cf/xf86site.def állományt, töröld a "#define for XF68FBDevServer"
megjegyzést
<item>Kommentezz ki <em/minden/ FB_VISUAL_STATIC_DIRECTCOLOR referenciát, mivel
ezek valótlanok, és többé nem használatosak. Ha XFree86 3.3.3.1-et használsz,
mincs szükség erre a lépésre - mivel már eltávolították őket. 
<item>Szerkeszd az xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_io.c állományt,
és írd át a K_RAW-t K_MEDIUMRAW-ra.
</itemize>

majd készítsd el a meghajtót. Ne aggódj az m68k referenciák miatt, ez
Intel platformot támogat. Ezután készítsd el az egész dolgot - jó időbe
beletelik, míg végigmegy a hatalmas forrásfán.

Választhatod azonban, ha időt szeretnél megspórolni, hogy az alábbi szerverek
valamelyikéről beszerzed a megfelelő binárist. Vedd figyelembe, hogy ezek
'nem hivatalos' készítmények, és csak a saját felelősségedre használhatod.

A libc5 esetén a következőt használd:

<verb>
http://user.cs.tu-berlin.de/~kraxel/linux/XF68_FBDev.gz
</verb>
glibc2 esetén pedig a következő címekről tölts le:

<verb>
http://user.cs.tu-berlin.de/~kraxel/linux/XF68_FBDev.libc6.gz
http://pobox.com/~brion/linux/fbxserver.html
</verb>

Jelentették, hogy az X11 nem működik néhány grafikus kártyával, ha a 
vesafb lehetőség engedélyezett. Ha ez történik, próbáld ki az X11 új
XF86_FBdev meghajtóját.

Ez a meghajtó, a vesafb-vel egyetemben egyaránt segíthet az X11 magasabb
grafikus felbontásában való futtatásában néhány olyan chipkészlet esetén,
amit nem támogatnak a jelenlegi X11 meghajtók. A példák az MGA G200-ra 
vonatkoznak.

Ahhoz, hogy bekonfigurálhasd az XF86_FBdev meghajtót az X11 rendszeredhez,
a következőképpen kell átszerkesztened az XF86Config állományt:

<verb>
Section "Screen"
	Driver		"FBDev"
	Device		"Primary Card"
	Monitor		"Primary Monitor"
	SubSection	"Display"
		Modes		"default"
	EndSubSection
EndSection
</verb>

Ezen kívül az XkbDisable paramétert is be kell állítanod a billentyűzet
szekcióban, vagy az XF86_FBDev szervert a '-kb' opcióval hívd, hogy úgy
állíthasd be a billentyűzeted, hogy helyesen működjön. Ha elfeletkezel az
XkbDisable beállításáról, a következő sort kell az .Xmodmap állományodba
tenni, hogy kijavíthasd a billentyűzet hozzárendeléseket. Másik lehetséges
megoldásként átszerkesztheted az xkb állományod, hogy a lejjebb található
listát tükrözze.

<em/Ezt javították az XFree86 3.3.3.1-ben, és mindenképpen jó ötlet frissíteni
erre a verzióra, mert van néhány hibajavítás és nem utolsósorban tartalmazza
az FBDev-et, az egyik már korábban említett meghajtót./

<verb>
! Keycode settings required
keycode 104 = KP_Enter
keycode 105 = Control_R
keycode 106 = KP_Divide
keycode 108 = Alt_R Meta_R
keycode 110 = Home
keycode 111 = Up
keycode 112 = Prior
keycode 113 = Left
keycode 114 = Right
keycode 115 = End
keycode 116 = Down
keycode 117 = Next
keycode 118 = Insert
keycode 119 = Delete
</verb>

Lehet, hogy némi machinálást ígényel (próbáld meg átmásolni az eredeti
definíciót az eredeti X11 meghajtóból, amit használtál és írd át a 
meghajtó nevet FBDev-re), de tulajdonképpen ez az, amire a vesafb X11
meghajtó használatához szükséged van.

Remélhetőleg a grafikus kártyák támogatásának problémáját kijavítják az
X11 későbbi kiadásaiban.

<sect>Hogyan alakíthatom át az XFree86 modeline sorokat framebuffer eszköz időkre?
<p>

Ha feltelepítetted az XFree86-t (X11) a gépedre, és eredményesen használod, 
egyszerű dolog átalakítani a modeline sorokat az XF86Config-ból a framebuffer
eszköz számára szükséges időkre.

A framebuffer eszközhöz a következő mezőkre van szükség:
<itemize>
<item>pixclock - pixel óra picoszerkundumban
<item>left_margin - time fron sync to picture
<item>right_margin - time from picture to sync
<item>upper_margin - time from sync to picture
<item>lower_margin - time from picture to sync
<item>hsync_len - length of horizontal sync
<item>vsync_len - length of vertical sync
</itemize>

<p>
Egy XFree86 mode sor a következő mezőket tartalmazza:

<verb>
Modeline  "1280x1024" DCF HR SH1 SH2 HFL VR SV1 SV2 VFL
</verb>

<p>
Néhány egyszerű számítás elvégzésére van szükség az XF86 mode-sorok framebuffer
eszköz időzítésbe való átszámításához. Például meg kell vizsgálnunk, hogy hogyan
alakíthatjuk át az XF86Config állományból vett modeline sor értékeit.

<verb>
Modeline  "1280x1024" 110.00 1280 1328 1512 1712 1024 1025 1028 1054
</verb>

<p>

Először számoljuk ki a szükséges pixclock értéket. Az XFree86 megahertzet használ, míg
a framebuffer eszközök picoszekundumot használnak (Hogy miért? Nem tudom. ) Ossz el
egymilliót a DFC-vel. Például: 1,000,000 / 110.0 = 9090.9091 

<p>Most ki kell számolnunk a vízszintes időket.
<itemize>
<item>left_margin = HFL - SH2 
<item>right_margin = SH1 - HR
<item>hsync_len = SH2 - SH1
</itemize>

<p>A példánkban ez a következő lenne:
<itemize>
<item>left_margin = 1712 - 1512 = 200
<item>right_margin = 1328 - 1280 = 48
<item>hsync_len = 1512 - 1328 = 184
</itemize>

<p>És most ki kell számolnunk a függőleges időket.
<itemize>
<item>upper_margin = VFL - SV2
<item>lower_margin = SV1 - VR
<item>vsync_len = SV2 - SV1
</itemize>

<p>Például ez a következő lenne:
<itemize>
<item>upper_margin = 1054 - 1028 = 26
<item>lower_margin = 1025 - 1024 = 1
<item>vsync_len = 1028 - 1025 = 3
</itemize>

<p>
Most felhasználhatjuk ezt az információt a framebuffer kívánt üzemmódjába állításához.
Például a matroxfb framebufferhez a következőre van szükség:

<verb>
video=matrox:xres:<>,yres:<>,depth:<>,left:<>,right:<>,hslen:<>,upper:<>,lower:<>,vslen:<>
</verb>

A következő sort tettem be a /etc/lilo.conf állományomba:
<verb>
append = "video=matrox:xres:1280,yres:1024,depth:32,left:200,right:48,hslen:184,upper:26,lower:0,vslen:3"
</verb>

<p>
Jegyezzük meg, hogy ebben az esetben a pixclock nem használatos. Csak akkor szökséges, ha
nem szereted az alapértelmezett órajeleket. Átadhatod ezt paraméterként is. A pixclock 
beállítása e HOGYAN más részeiben megtalálod.

<sect>További információkat keresel?
<p>

Azoknak akik érdeklődnek a framebuffer meghajtók iránt, nézzék meg a <verb>http://www.csoft.net/~systems/jim/fb.html</verb>
honlapot a programozási információkért.

A franciául beszélők számára megtalálható egy fordítás a <verb>http://www.freenix.org/unix/linux/HOWTO/mini/Vesafb.html</verb>
</article>
