Portál AbcLinuxu, 30. dubna 2025 14:02
Nebojte se nastavit framebuffer - není to složité. A my vám poradíme, jak na to.
Framebuffer - snad každý uživatel Linuxu toto slovo už slyšel, menší část však ví, o co se jedná a ještě menší část z nich tuto skvělou věc používá. Dnes se pokusíme tento stav změnit a měl by k tomu snad přispět i tento článek. Nastavení framebufferu opravdu není obtížná věc. Jeho konfiguraci vám předvedu na mojí prehistorické herní kartě - 3Dfx Voodoo 3 3000. Pro ty s větším množstvím peněz nebo silnějším hardware bude jediný rozdíl v tom, že v kernelu zvolí podporu pro framebuffer svojí karty. Takže se do toho pusťme, ať už si konečně neničíme oči díváním se na monitor s nízkou obnovovací frekvencí.
Doporučuji využít kernel z poslední stabilní řady 2.4, i když framebuffer funguje i na řadách 2.2. Já použil jádro ze stabilní řady 2.4, konkrétně 2.4.19-pre10.
Vstoupíme do adresáře, kde máme jádro rozbalené a příkazem make
menuconfig
vyvoláme nabídku. Dále zvolíme:
Console drivers
Frame-buffer support --->
[*] Support for frame buffer devices (EXPERIMENTAL)
<*> 3Dfx Banshee/Voodoo3 display support (EXPERIMENTAL)
[*] Advanced low level driver options
<*> 8 bpp packed pixels support
<*> 16 bpp packed pixels support
<*> 24 bpp packed pixels support
<*> 32 bpp packed pixels support
[*] Select compiled-in fonts
[*] VGA 8x8 font
[*] VGA 8x16 font
Fonty a pixely jsou zakompilovány proto, aby po přechodu z XFree86 do konzole se "nerozsypalo" písmo v konzoli. Bez toho tato volba po spuštění XFree86 nefunguje. Pro ostatní karty je dobré je mít přeložené, ale pravděpodobně to nebude nutné pro správnou funkci vaší karty.
Po přeložení jádra, zapsání nového lila a rebootu bude konzole přepnuta
automaticky do rozlišení 80x30, ale bohužel zase jen v rozlišení 60 Hz. To
napravíme velice jednoduše po nahlédnutí do dokumentace jádra. Dle ní je
nutné kernel instruovat už při startu jádra o přepnutí na vysoké rozlišení
vložením příkazu přes parametr append v /etc/lilo.conf
:
image=/boot/vmlinuz
label=linux
read-only
root=/dev/hda3
append="video=tdfx:1024x768-24@75"
Tím jsme docílili přepnutí konzole do rozlišení 1024x768 ve 24 bitové barevné hloubce a obnovovací frekvenci 75 Hz. Tato karta umí i mnohem vyšší obnovovací frekvence, bohužel ne můj monitor. Konfiguraci pro váš monitor upravte dle jeho schopností.
Aby bylo možno tuto obnovovací frekvenci používat, je nutné upravit zdrojové
soubory jádra. Jádro totiž standardně tuto obnovovací frekvenci neumí.
Podporuje 76 Hz, se kterými můj monitor vždy po chvilce problikl. Úpravu jsem
provedl v souboru linux/drivers/video/modedb.c
. Můžete použít tento
patch:
--- linux/drivers/video/modedb.c Fri Dec 21 18:41:55 2001
+++ linux/drivers/video/modedb.c Sun Jun 30 12:55:59 2002
@@ -107,6 +107,10 @@
NULL, 70, 1024, 768, 13333, 144, 24, 29, 3, 136, 6,
0, FB_VMODE_NONINTERLACED
}, {
+ /* 1024x768 @ 75 Hz, 60.020 kHz hsync */
+ NULL, 75, 1024, 768, 12699, 176, 16, 28, 1, 96, 3,
+ 0, FB_VMODE_NONINTERLACED
+ }, {
/* 1280x1024 @ 87 Hz interlaced, 51 kHz hsync */
NULL, 87, 1280, 1024, 12500, 56, 16, 128, 1, 216, 12,
0, FB_VMODE_INTERLACED
Tento triviální patch jsem už zaslal Rusty Russellovi. Doufám, že se objeví už ve verzi 2.4.19-rc2 a vy jej nebudete muset provádět.
Po startu jádra instruovaného o přepnutí na požadované rozlišení uvidíme tyto zprávy:
fb: Voodoo3 memory = 16384K
fb: MTRR's turned on
tdfxfb: reserving 1024 bytes for the hwcursor at d1818000
Console: switching to colour frame buffer device 128x48
fb0: 3Dfx Voodoo3 frame buffer device
Jak vidíte, obrazovka se přepnula do rozlišení 128x48. Na takovou
obrazovku se nám velice pohodlně vejde celé základní menu menuconfig
jádra bez nutnosti jeho skrolování, o možnosti sledovat filmy za pomoci
mplayeru nebo televize skrze xawtv v konzoli ani nemluvě.
Proberme si nyní, jakým způsobem je možné operovat s framebufferovou konzolí po nabootování systému. K tomu slouží program fbset. S jeho pomocí můžeme měnit rozlišení, obnovovací frekvenci i barevnou hloubku monitoru a umožňuje i další finesy. Pro bližší seznámení s tímto programem bych vás odeslal na manuálové stránky tohoto programu. My si zde probereme úplné základy.
Definice našich rozlišení jsou napsány v souboru /etc/fb.modes
,
ale jen pro 8bitové barvy. Proto jej musíme upravit tak, abychom dosáhli
barevné hloubky, která nám bude vyhovovat. To provedeme tak, že pro rozlišení,
co nás zajímá, upravíme vždy poslední číslo v druhém řádku na hloubku, jakou
chceme dosáhnout.
Tento příklad by měl doufám stačit. Takto vypadá originální definice módu monitoru:
mode "1024x768-75"
# D: 78.75 MHz, H: 60.023 kHz, V: 75.03 Hz
geometry 1024 768 1024 768 8
timings 12699 176 16 28 1 96 3
hsync high
vsync high
endmode
My jej upravíme takto:
mode "1024x768-75"
# D: 78.75 MHz, H: 60.023 kHz, V: 75.03 Hz
geometry 1024 768 1024 768 24
timings 12699 176 16 28 1 96 3
hsync high
vsync high
endmode
Potom už jen nastavujeme konzoli tímto parametrem:
fbset -a 1024x768@75
To způsobí, že se naše konzole pro všechny textové konzole nastaví na
1024x768 při 75 Hz. Barevnou hloubku bude mít konzole takovou, jakou jsme
doplnili do /etc/fb.modes
- v mém případě 24bitů. Informace
o rozlišení, jaké vaše konzole přávě používá, získáte příkazem fbset
-i
. Lahůdkou na dortu je možnost mít každou konzoli v jiné barevné
hloubce a jiném rozlišení jen vynecháním parametru -a při volání fbset.
A to je vše. Užijte si vaší framebufferovou konzoli a už nikdy si neničte oči. :)
CIJOML
Nevite, kde je problem????
mam nastaveny rozliseni 600x800 na 15 minitoru a nevypada to zle.
Dekuji za radu
J.D.
nemel bych nic proti, kdyby jste napsal, "ja bych si nikdy nekoupil" a pod., ale nevidel bych nvidia karty tak jednoznacne cerne, aby si zaslouzily tyto vety.
Sam mam 3 ks ruznych doma, a od dob TNT 1 chipu mi proslo rukama cca. 20 kusu. Nebudu je nikomu nutit, ale nesouhlasim absolutne s vasim hodnocenim. Vyzkousel jsem i dost jinych karet a presto jsem s nvidii pri posouzeni cena/vykon/kvalita maximalne spokojen. Maji sve mouchy (jako vse!), ale rozhodne ne jen mouchy. Krom toho co jste napsal, a nepopiram, ze je to minimalne z vetsi casti pravda, jde o skvele karty. (nazor muj - nazor dlouholeteho uzivatele Linux 99% / Windows 1%). Jedine s cim v tomto souhlasim - take se mi nelibi uzavrenost kodu. Na druhou stranu chapu, ze jde o know-how, zvlaste u GLX casti driveru.
ada
P.S. jsem silenec? Hmm, taky vas nemam rad!
BTW jestli me nemate rad je mi naprosto jedno - to je vase vec
Tak jeste jednou, znovu a lepe: Asi zname kazdy jinou firmu nvidia. Opakuji, ze mam od te sve nekolik karet a mel jsem jich desitky. Co jsem naopak nikdy nemel a ani nemam, jsou zde popisovane problemy. Drivery upgraduji pokazde, takze jsem zazil "vsechny" jejich verze. Zadne slibovane pady se nekonaly. Na zaver opet podotykam, ze mam v provozu nekolik ruznych karet na nekolika ruznych strojich. Neprezentujte vasi subjektivni zkusenost a zaujaty nazor jako obecna fakta pane CIJOMLe.
ada
+OFFTOPPIC: Dale by mozna nebylo na skodu nacrtnout srovnani novejsich graf. karet a jejich pouzitelnost pod Linuxem. Pomer cena/vykon a stabilita na Win nemusi byt zachovana i na Linuxu kvuli nekvalitnim ovladacum od vyrobce... Co vy na to? B-)
http://www.linuxhq.com/kernel/v2.4/doc/fb/index.html - doporucuji, je tam info o fb i na jinych kartach, nejen 3dfx ale i ATI, matrox...
pokud nemate pristup k netu tak to same je primo v dokumentaci k jadru (u me /usr/src/linux-2.4.18-3/Documentation/fb/ )
1280x1024 67Hz, 1024x768 85Hz, 800x600 90Hz
Doma mam ATI 98XL ci cos takoveho - 8MB PCI, vsechno OK, ale framebuffer detekuje "neznamou" ATI kartu a tim konci.
Mam jeste kartu s ATI chipem oznacenou jako a kompatibilni s rageIIc ale od nejakeho cinskeho vyrobce s winbond svabem. Xfree beha se stejnym konfigurakem (ale navic se stopami po pohybu), framebuffer vubec ne.
Co se tyka kvality ATI karet, s Nvidii si mohou podat ruce, az na to, ze drivery nekterych ATI pro Windows jsou horsi, nez Nvidia drivery pro Linux. Pod linuxem je na tom ATI lepe jen proto, ze zverejnuje dokumentace a zdrojove kody.
No a k tomu ATI a zverejnovani - take na tom nejsou nejlip...ale podstatne lip nez NVidia. Kdyby NVidia uvolnila jeji zdrojaky, tak potom budu prvni, kdo si tu excelentni kartu poridi - to pisu uz vyse, ale zatim bohuzel... :(
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.