XFree sem driver
Veja como é possível executar um servidor gráfico em sua máquina, mesmo que sua placa de vídeo não seja suportada
Existem várias placas de vídeo no mercado, e é complicado para a equipe de desenvolvimento do XFree oferecer suporte adequado a todas elas. Em algumas, os drivers são proprietários ou precisam de alguns “truques” extras para funcionar. Uma forma de contornar este problema é executar o XFree sobre o framebuffer oferecido pelo kernel, que é o que veremos neste artigo.
Uma das novidades do kernel 2.2 foi o uso do framebuffer. Graças a ele podemos ter um belo pingüim durante o boot do sistema e muito mais caracteres no console. Talvez por isso o framebuffer seja tão popular entre os defensores do modo texto, pois fica bem mais fácil programar ou dividir a tela em duas (ou mais) partes quando se tem mais que 25 linhas por 80 colunas.
Mas o framebuffer tem mais uma vantagem: com ele, é possível gerar gráficos no console, sem a necessidade do XFree. Isso (obviamente) depende de o programa ter suporte ao framebuffer. Mas o mais interessante é que você pode rodar o XFree sobre o framebuffer. Com isso, se seu kernel tiver suporte ao framebuffer habilitado, você terá o X rodando em sua máquina, sem a necessidade de um driver específico para a sua placa de vídeo. É mais lento do que usar um driver adequado, mas é um bom quebra-galho enquanto você não descobre qual driver usar, ou quando o driver ainda não existe.
Neste artigo, parto do pressuposto de que você já sabe recompilar um kernel e de que ele esteja com o suporte a framebuffer já ativado. A maioria das distribuições Linux faz isto em seus kernels por padrão e, portanto, é provável que você não tenha de fazer qualquer alteração nesta área. O Slackware, além do suporte no kernel, já vem com um arquivo de configuração do XFree86 (/etc/X11/XF86Config-fb) preparado.
Editando o lilo.conf
Presumindo que o seu kernel já esteja com o suporte ao framebuffer habilitado, você deverá selecionar qual será a resolução e número de cores que quer no console. Através de alguns cálculos enigmáticos, você chegará a uma série de números cabalísticos. Para facilitar a sua vida, aí vai uma tabelinha:
Códigos dos modos de vídeo
Resolução |
640x480 |
800x600 |
1024x768 |
1280x1024 |
8bpp |
769 |
771 |
773 |
775 |
16bpp |
785 |
788 |
791 |
794 |
24bpp |
786 |
789 |
792 |
795 |
Esta tabela foi extraída do arquivo /etc/X11/XF86Config-fbdev do Slackware 8.1 e levemente adaptada. Como cortesia da casa, segue outra tabelinha indicando a quantidade de memória de vídeo que você precisa para cada uma dessas resoluções:
Memória de vídeo
Resolução |
640x480 |
800x600 |
1024x768 |
1280x1024 |
8bpp |
300 KB |
500 KB |
800 MB |
1,5 MB |
16bpp |
600 KB |
1 MB |
1,5 MB |
2,5 MB |
24bpp |
900 KB |
1,5 MB |
2,3 MB |
4 MB |
É raro encontrar, hoje em dia, uma placa de vídeo com menos de 16MB de VRAM, mas se você estiver utilizando um computador com um pouco mais de idade, é importante saber qual a resolução máxima possível com a quantidade de memória de vídeo que você tem disponível.
Após determinar a resolução desejada e qual o número correspondente, chegou a hora de editar o arquivo /etc/lilo.conf. Abra o arquivo no seu editor de textos preferido e inclua na seção global uma linha com:
vga=nnn
Onde nnn é o número do modo de vídeo desejado. Depois de editado o lilo.conf, volte ao prompt e digite o comando:
# lilo
Atenção: Só pode haver uma linha com o parâmetro vga=nnn!
Pronto! Na próxima vez que reiniciar a sua máquina, ela já estará utilizando a resolução escolhida. Se ocorrer algum problema, digite no prompt do LILO a opção vga=normal. E verifique novamente a resolução, a quantidade de memória de vídeo e o arquivo lilo.conf. Se você usa o grub, edite o arquivo de configuração, geralmente /boot/grub/menu.lst, e adicione o parâmetro vga=nnn ao final da linha kernel=...
Editando o /etc/X11/XF86Config
Para executar o XFree no framebuffer, são necessárias poucas modificações no arquivo /etc/X11/XF86Config. Na seção Device, troque o Driver para fbdev. Fica 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 à quantidade de bits de cor - os tais 8 (256 cores), 16 (65.535 cores) e 24bpp (16 milhões de cores) da tabela - por ponto na tela. Após essa linha, é conveniente ter 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 24 quanto 32bpp no X. Agora é só iniciar o sistema gráfico e ver se está tudo OK.
Se você usa Slackware, um meio ainda mais fácil de executar o XFree em um framebuffer é copiar o arquivo /etc/X11/XF86Config-fbdev e alterar os detalhes na mão. Se o seu mouse é PS/2, a única coisa que vai ser preciso 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 seguintes linhas:
Option “XkbRules” “xfree86”
Option “XkbModel” “pc101”
Option “XkbLayout” “us”
E colocar no lugar uma linha contendo:
Option “XkbDisable”
Assim o X lerá o mapa de teclado que você estiver usando no console.
Vimos neste artigo como configurar rapidamente o XFree para rodar em qualquer placa de vídeo que possua suporte ao framebuffer. Com isto, placas problemáticas como as Trident 3DImage 975, SiS530, SiS620, algumas GeForce e outras podem ser utilizadas sem maiores problemas. E, com o XFree rodando, você pode navegar pela Internet em busca de drivers melhores ou mais rápidos (como é o caso das GeForce com o driver proprietário da nVidia) para resolver definitivamente o problema.
Piter Punk piterpk@terra.com.br
Como faço para...configurar um monitor novo
A maioria das distribuições Linux modernas contém um utilitário para detecção automática de hardware, que irá reconhecer um monitor novo quando o mesmo for instalado na máquina. Porém, em alguns casos a detecção pode falhar, ou não fornecer os melhores valores possíveis, o que pode resultar em um monitor que não funciona, ou que funciona com desempenho (resolução e frequência) abaixo do esperado. Nesse caso, veja como fazer você mesmo a configuração, usando o utilitário xf86cfg, parte do pacote do XFree86 4.x.
Em um terminal, execute o xf86cfg com o comando: xf86cfg -textmode. Seu arquivo de configuração do XFree será analisado, e a interface do programa surgirá na tela (navegue pelas opções com as setas do teclado e a tecla TAB, e selecione um itens com a tecla Enter). Selecione a opção Configure Monitor. Remova a configuração de seu monitor antigo, selecionado Remove Monitor0, selecione novamente Configure Monitor e, na tela seguinte, aceite o nome Monitor0.
A próxima tela lhe diz que será necessário informar as frequências horizontal e vertical de sincronia do monitor. Esta informação está documentada no manual ou no site do fabricante. Em último caso, procure pelos dados do seu monitor em sites como o www.monitorworld.com. Selecione Next e, na tela seguinte, a opção Enter your own horizontal sync range. No meu caso, o monitor é um Samsung Syncmaster 753DFX, com uma frequência horizontal de 30 a 70 Khz, portanto o valor a ser informado é 30-70. Na próxima tela selecione Enter your own vertical sync range. Meu monitor aceita frequências verticais de 50 a 160 Hz, portanto o valor a ser informado é 50-160. Pronto, a configuração do monitor está terminada. Se quiser, ajuste outros parâmetros, como resolução e número de cores, e quando tiver terminado selecione a opção Write XF86Config and quit. Reinicie o servidor X para que suas alterações possam fazer efeito.
Rafael Rigues - rigues@RevistaDoLinux.com.br