Configurando o X para Framebuffer
Piter PUNK
Existem v�rias placas de v�deo no mercado e � bem complicado
para o X ter um bom suporte para todas elas. Algumas at�
possuem bons drivers, mas s�o propriet�rios ou precisam
de alguns "truques" extras para
funcionar. Uma solu��o boa para isto � utilizar o X sobre
o framebuffer, o que veremos nesse artigo.
1. Introdu��o
Uma das novidades do kernel 2.2 foi o uso do framebuffer.
Gra�as a ele podemos ter um bonito ping�im durante o boot
do sistema e muito mais letras no console. Talvez por isso
o framebuffer seja t�o popular entre os defensores do modo
texto, fica bem mais f�cil programar ou dividir a tela em
duas (ou mais) quando se tem mais que 25 linhas por 80 colunas.
Mas o framebuffer possui outras vantagens, com ele, � poss�vel
gerar gr�ficos no console, sem a necessidade do X. Isso
(obviamente) depende do programa haver sido escrito para
usar o framebuffer. Mas voc� tamb�m pode rodar o X sobre
o framebuffer!!! Com isso, se o seu kernel estiver com o
suporte a framebuffer habilitado e funcionando, voc� ter�
o X rodando na sua m�quina! -:) Fica mais lento que usar
o driver correto para a sua placa de v�deo, mas � um bom
quebra-galho enquanto voc� n�o descobre qual � o driver
(ou enquanto ele n�o existe).
Durante todo o artigo irei presumir que o seu kernel j� possui
suporte ao framebuffer compilado nele. A maior parte das
distribui��es atuais faz isso com o kernel padr�o, espero
que seja o caso da sua. O Slackware j� vem com este suporte
e um XF86Config j� preparado.
2. Editando o lilo.conf
Presumindo que o seu kernel j� esteja com o framebuffer
habilitado,
voc� dever� selecionar qual ser� a resolu��o e qual a quantidade
de cores que voc� ter� no seu console. Atrav�s de alguns
c�lculos enigm�ticos, voc� ir� chegar em uma s�rie de n�meros
cabal�sticos. Para facilitar a sua vida, a� vai uma tabelinha:
| 640x480 | 800x600 | 1024x768 | 1280x1024 |
8bpp | 769 | 771 | 773 | 775 |
16bpp | 785 | 788 | 791 | 794 |
24bpp | 786 | 789 | 792 | 795 |
Esta tabela foi retirada do arquivo /etc/X11/XF86Config-fbdev
do Slackware 8.1 e levemente adaptada (n�o precisa nem dizer
que o Slackware j� vem com tudo prontinho para usar o X
no framebuffer). Como cortesia da casa, outra tabelinha
com o tanto de mem�ria que voc� precisa para cada uma dessas
resolu��es:
| 640x480 | 800x600 | 1024x768 | 1280x1024 |
8bpp | 300KB | 500KB | 800KB | 1,5MB |
16bpp | 600KB | 1MB | 1,5MB | 2,5MB |
24bpp | 900KB | 1,5MB | 2,3MB | 4MB |
Bom... hoje em dia � raro achar uma placa com menos de 16MB
de RAM, mas se voc� estiver instalando em um computador
com um pouco mais de idade, � importante saber qual a resolu��o
m�xima que a mem�ria da placa de v�deo suporta.
Sabendo agora qual a resolu��o que voc� deseja (e que a sua
placa suporta) e qual o n�mero cabal�stico utilizar, chegou
a hora de editar o /etc/lilo.conf. � muito simples, abra
o arquivo no seu editor de textos preferidos e inclua na
se��o global uma linha com:
vga=nnn
Onde nnn � o n�mero cabal�stico. MUITA ATEN��O!!! S� PODE
HAVER UMA LINHA COM vga=nnn!!!! Depos de editado o lilo.conf,
volte ao prompt e digite o comando:
# lilo
Added Linux *
Pronto! Na pr�xima vez que voc� rebootar a sua m�quina, j�
estar� na resolu��o correta. Se ocorrer algum problema,
digite no prompt do LILO a op��o vga=normal. E verifique
novamente a resolu��o, a mem�ria e se a sua placa suporta
ou n�o o framebuffer.
3. Editando o /etc/X11/XF86Config
S�o necess�rias poucas modifica��es no /etc/X11/XF86Config
(embora sejam mais que no lilo.conf, onde foi uma linha
s�). Na se��o Device, voc� deve trocar o Driver de (seja
l� o que esteja l�), para fbdev. Ficando mais ou menos assim:
Section "Device"
Identifier "VESA Framebuffer"
Driver "fbdev"
EndSection
E, na se��o Screen, deve haver uma linha com:
DefaultDepth n
Onde o n corresponde a quantidade de pixels por ponto (os
tais 8, 16 e 24bpp l� em cima). Ap�s essa linha, � conveniente
possuir uma SubSection para cada depth, como estas:
Subsection "Display"
Depth 8
EndSubsection
Subsection "Display"
Depth 16
EndSubsection
Subsection "Display"
Depth 24
EndSubsection
Subsection "Display"
Depth 32
EndSubsection
Quando voc� est� usando 24bpp no framebuffer, pode usar tanto
o 24 quanto o 32 no X. E, com isso, terminamos as configura��es
a fazer no X. A �nica coisa que falta � usar -;). Se tiver
alguma d�vida, no Ap�ndice est� o XF86Config que uso em
um de meus computadores, que na realidade � o XF86Config-fbdev
do Slackware levemente adaptado.
Ali�s, se voc� usa Slackware, o mais f�cil � copiar o XF86Config-fbdev
e alterar os detalhes na m�o. Se o seu mouse � PS/2, a �nica
coisa que vai precisar alterar � a configura��o do teclado,
para a acentua��o. A maneira mais f�cil de fazer isso (se
os acentos estiverem funcionando no console) � simplesmente
apagar as linhas com:
Option "XkbRules" "xfree86"
Option "XkbModel" "pc101"
Option "XkbLayout" "us"
E colocar no lugar uma linha contendo:
Option "XkbDisable"
Assim o X ir� ler o mapa de teclado que voc� estiver usando
no console.
4. Conclus�o
Vimos como configurar rapidamente o X para rodar em qualquer
placa que possua suporte a framebuffer pelo kernel. Apesar
de n�o ser o modo gr�fico com o melhor desempenho, compensa
pela simplicidade e pelo suporte a v�rias placas.
Algumas problem�ticas com o X tais como: Trident 3DIm�ge975,
SiS530, SiS620, algumas GeForce, etc... podem ser utilizadas
sem maiores problemas. E, depois do X rodando, voc� pode
navegar na internet em busca de drivers melhores ou mais
r�pidos (o que � o caso das GeForce com o driver da pr�ipria
nVidia).
Qualquer d�vida, cr�tica ou sugest�o a respeito deste artigo
mande e-mail para:
[email protected]
Ap�ndice
/etc/X11/XF86Config
Section "Module"
Load "dbe" # Double buffer extension
SubSection "extmod"
Option "omit xfree86-dga" # don't initialise the DGA extension
EndSubSection
Load "type1"
Load "freetype"
Load "speedo"
Load "glx"
EndSection
Section "Files"
RgbPath "/usr/X11R6/lib/X11/rgb"
FontPath "/usr/X11R6/lib/X11/fonts/local/"
FontPath "/usr/X11R6/lib/X11/fonts/misc/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/:unscaled"
FontPath "/usr/X11R6/lib/X11/fonts/Type1/"
FontPath "/usr/X11R6/lib/X11/fonts/Speedo/"
FontPath "/usr/X11R6/lib/X11/fonts/100dpi/"
FontPath "/usr/X11R6/lib/X11/fonts/75dpi/"
EndSection
Section "InputDevice"
Identifier "Keyboard1"
Driver "Keyboard"
Option "AutoRepeat" "500 30"
Option "XkbRules" "xfree86"
Option "XkbModel" "pc102"
Option "XkbLayout" "us_intl"
EndSection
Section "InputDevice"
Identifier "Mouse1"
Driver "mouse"
Option "Protocol" "IMPS/2"
Option "Device" "/dev/mouse"
Option "Buttons" "5"
Option "ZAxisMapping" "4 5"
EndSection
Section "Monitor"
Identifier "My Monitor"
HorizSync 31.5 - 50.0
VertRefresh 40-90
EndSection
Section "Device"
Identifier "VESA Framebuffer"
Driver "fbdev"
EndSection
Section "Screen"
Identifier "Screen 1"
Device "VESA Framebuffer"
Monitor "My Monitor"
DefaultDepth 16
Subsection "Display"
Depth 8
EndSubsection
Subsection "Display"
Depth 16
EndSubsection
Subsection "Display"
Depth 24
EndSubsection
Subsection "Display"
Depth 32
EndSubsection
EndSection
Section "ServerLayout"
Identifier "Simple Layout"
Screen "Screen 1"
InputDevice "Mouse1" "CorePointer"
InputDevice "Keyboard1" "CoreKeyboard"
EndSection
|