Slackware: configurando o X

Ao contrário de praticamente todas as outras distribuições atuais, o Slackware não configura automaticamente o vídeo durante a instalação, mantendo a cultura de deixar que você quebre a cabeça e aprenda a fazer as coisas sozinho.

Você pode estar se perguntando como é que foi então possível usar o X no post anterior chamando o “startx”, sem que fosse necessário fazer alguma configuração prévia. A resposta é simples: embora não faça nada para detectar a placa de vídeo ou o monitor, o Slackware utiliza um arquivo de configuração um genérico, que utiliza o driver vesa, um mínimo múltiplo comum, que utiliza apenas funções básicas que são (com poucas exceções) suportadas por qualquer placa de vídeo.

Isso faz com que a configuração padrão funcione em quase todos os micros, embora com um desempenho ruim e nem sempre na resolução de tela ideal, já que o driver vesa suporta apenas 800×600, 1024×768 e (em algumas placas) 1280×1024. Além disso, o driver não oferece recursos de aceleração, o que faz com que o uso do processador ao assistir vídeos ou rodar programas que fazem uso intenso do vídeo seja bem maior que o normal, sem falar na ausência de qualquer suporte a 3D. Com isso, o próximo passo é configurar o vídeo corretamente.

O primeiro passo é executar o “xorgsetup”, um pequeno script de configuração, incluído a partir do Slackware 12, que se encarrega de detectar a configuração, evitando que você precise fazer toda a configuração manualmente, como nas versões antigas.

Na verdade, a detecção é feita pelo próprio X.org (através do comando “X -configure” que é usado durante a configuração), o script apenas faz algumas verificações adicionais e pergunta sobre as opções relacionadas ao layout do teclado, que não é detectado automaticamente. Basta chamá-lo como root:

# xorgsetup

Para um teclado ABNT2, use as seguintes configurações:

Keyboard model: abnt2
Keybaord layout: br
Layout variant: none
Second layout: none
Additional keyboard options: none

Ele não pergunta nada sobre o mouse, o modelo da placa de vídeo e nem mesmo sobre o monitor, pois essas configurações são detectadas automaticamente pelo X, apenas confirma a profundidade de cor que quer usar. No final, ele salva a configuração no arquivo “/etc/X11/xorg.conf”, salvando um backup do arquivo original.

Na maioria dos casos, a configuração gerada por ele funciona bem, mas não custa entender melhor como funciona a configuração e aprender assim como solucionar problemas.

Em primeiro lugar, o arquivo é dividido em seções. Basicamente, temos (não necessariamente nesta ordem) uma seção “Server“, com parâmetros gerais, a seção “Files” (que é opcional nas versões atuais) com a localização das fontes de tela e bibliotecas, duas seções “InputDevice“, uma com a configuração do teclado e outra com a do mouse, uma seção “Monitor” e outra “Device“, com a configuração do monitor e placa de vídeo e por último a seção “Screen” onde é dito qual resolução e profundidade de cor usar.

A ordem com que estas configurações aparecem no arquivo pode mudar de distribuição para distribuição, mas a ordem não importa muito, desde que estejam todas lá. Como em outros arquivos de configuração, você pode incluir comentários, usando um “#” no início das linhas. Linhas em branco, espaços e tabs também são ignorados e podem ser usadas para melhorar a formatação do arquivo e melhorar a organização das informações.

A configuração do teclado que indicamos ao rodar o xorgsetup, por exemplo, é salva como:

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "abnt2"
Option "XkbLayout" "br"
EndSection

Uma curiosidade é que a configuração de teclado especificada no arquivo na verdade não é usada nem no KDE nem no Gnome, que utilizam módulos próprios para a configuração, independentes da configuração do X. No KDE, a configuração do teclado é definida quando você indica a linguagem/localização na tela de boas. Ele utiliza o Kxkb, que possui uma configuração de teclado independente da do X, que você ajusta através do painel de controle do KDE. É por isso que o teclado fica corretamente configurado dentro do KDE mesmo antes de configurar o vídeo usando o xorgconfig. Na verdade, a configuração especificada no xorg.conf é usada apenas dentro do fluxbox, icewm e outras interfaces.

Continuando, temos em seguida temos a configuração do mouse, que é detectada automaticamente. Na maioria dos casos é usada uma configuração como essa:

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection

O “/dev/input/mice” é um device criado pelo próprio kernel, apontando para a porta do mouse (funciona tanto para mouses USB quanto PS/2). Esta é uma novidade das versões recentes, que permite também o uso de dois ou mais mouses simultaneamente (como ao usar um mouse USB em um notebook, junto com o touchpad). Em distribuições antigas, era necessário indicar a porta manualmente, como em “/dev/ttyS0” (COM0) ou “/dev/psaux” (porta PS/2).

A linha Option “ZAxisMapping” “4 5 6 7”, ou “ZAxisMapping” “4 5” ativa a rodinha do mouse, quando disponível. Do ponto de vista do sistema operacional, a rodinha é um conjunto de dois botões extras (botões 4 e 5) e os giros da roda correspondem a cliques nos botões extra. A diferença entre as duas é que a “ZAxisMapping” “4 5 6 7” oferece também suporte a mouses com duas rodas (os modelos com scroll vertical e horizontal).

Nem todos os mouses são iguais, por isso o X inclui um conjunto de drivers (ou protocolos), que são usados de acordo com o modelo. Entra em cena então a opção “Protocol” “auto”, que ativa a detecção automática do X.

Em casos específicos, onde o mouse não funcione corretamente, você pode substituir o “Protocol” “auto” por “Protocol” “IMPS/2”, que é o protocolo padrão para mouses de três botões, com roda, ou “Option “Protocol” “PS/2”, que é o protocolo para mouses PS/2 antigos, sem roda.

Um terceiro protocolo é o “ExplorerPS/2”, que é usado pelo IntelliMouse Explorer e outros modelos com 5 botões (incluindo os dois botões laterais para avançar e retroceder). Um exemplo de configuração, caso esteja tendo problemas com eles é:

Section "InputDevice"
Identifier "Mouse"
Driver "mouse"
Option "Protocol" "ExplorerPS/2"
Option "ZAxisMapping" "4 5"
Option "Buttons" "7"
Option "Device" "/dev/input/mice"
EndSection

Se a função dos dois botões extra e da roda ficarem trocadas, substitua a linha “Option “ZAxisMapping” “4 5” por “Option “ZAxisMapping” “6 7”.

Temos em seguida a configuração do monitor, que é especificada na seção “Monitor”. Você notará que a configuração gerada pelo xorgsetup (e por outras ferramentas atuais) não inclui as taxas de varredura do monitor, se limitando a gerar uma seção semi-vazia, como neste exemplo:

Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection

Isso acontece por que as configurações do monitor são detectadas via DDC (Display Data Channel), que permite ao próprio monitor fornecer as resoluções e taxas de varreduras suportadas. O DDC é um sistema bastante seguro de detecção, pois permite que o sistema utilize as próprias especificações do fabricante, sem o risco de deixar a imagem fora de sincronia, como acontecia em monitores antigos.

De qualquer forma, em caso de problemas é possível especificar as taxas de varredura horizontal e vertical usadas pelo monitor incluindo as opções HorizSync e VertRefresh, como em:

Section "Monitor"
Identifier "Monitor0"
VendorName "GSM"
ModelName "GSM3b60"
HorizSync 30 -- 63
VertRefresh 50 -- 75
EndSection

As opções VendorName e ModelName são apenas descritivas, podem conter qualquer texto. Se você não souber as taxas de varredura usadas pelo seu monitor e quiser alguma configuração genérica que funcione em qualquer monitor contemporâneo, experimente usar esta, que permite trabalhar a até 1024×768 com 60 Hz de atualização:

Section "Monitor"
Identifier "Monitor0"
HorizSync 31.5 -- 50.0
VertRefresh 40-90
EndSection

Muitos configuradores antigos incluem várias seções “Modeline” dentro da seção, incluindo diretamente as taxas suportadas. Estas informações são realmente necessárias apenas em versões antigas do X ou em casos específicos de monitores de CRT ou placas de vídeo muito antigas, que não suportam DDC.

Este é um exemplo de configuração para um monitor de 17″, incluindo os modelines para resoluções de 1280×1024, 1024×768 e 800×600:

Section "Monitor"
Identifier "Monitor0"
VendorNam "GSM"
ModelName "GSM3b60"
HorizSync 30 -- 63
VertRefresh 50 -- 75
ModeLine "1280×1024" 135.00 1280 1296 1440 1688 1024 1025 1028 1066 +hsync +vsync
ModeLine "1024×768" 78.75 1024 1040 1136 1312 768 769 772 800 +hsync +vsync
ModeLine "800×600" 49.50 800 816 896 1056 600 601 604 625 +hsync +vsync
EndSection

Em seguida vem a seção “Device” que indica a configuração da placa de vídeo, como em:

Section "Device"
Identifier "card0"
VendorName "ATI Technologies, Inc."
BoardName "Radeon X800 (R430 UO)"
Driver "ati"
BusID "PCI:1:0:0"
EndSection

As opções Identifier, VendorName e BoardName são apenas descrições e a “BusID” (que é preenchida automaticamente) é necessária apenas em configurações para duas placas de vídeo e dois monitores. O que interessa mesmo é o driver usado.

A placa de vídeo é detectada pelo sistema através da identificação fornecida por ela (a mesma que é exibida ao executar o comando “lspci”). Diferente do que tínhamos na época do Xfree 3.3.6, onde cada chipset de vídeo utilizava um módulo diferente, nas versões atuais são usados um pequeno número de drivers (os arquivos são salvos na pasta “/usr/lib/xorg/modules/drivers/“), cada um dando suporte a todos os chipsets de um mesmo fabricante.

A detecção de hardware é um campo em que o Linux de uma forma geral evoluiu bastante de alguns anos para cá. Antigamente, toda a configuração precisava ser feita manualmente, ou através de utilitários que tentavam (nem sempre com sucesso) detectar os componentes da máquina. Hoje em dia, a maior parte da detecção é feita diretamente pelo Kernel, com a ajuda do udev. Este é um dos motivos das diferenças entre as distribuições terem diminuído.

No caso dos drivers de vídeo, além do vesa, que é o driver failsafe, outros drivers disponíveis são:

i810: Este é o driver usado por todas as placas de vídeo onboard com chipset Intel. A lista de compatibilidade inclui quase todos os chipsets para Pentium III, Pentium 4 e Pentium M, incluindo as placas com o chipset Intel 900 e Intel Extreme e todos os notebooks baseados em chipset Intel (com exceção dos poucos modelos que utilizam placas offboard da ATI ou da nVidia). Em versões recentes do X.org ele mudou de nome e passou a se chamar “intel”.

ati : Este é o driver open-source que dá suporte às placas da ATI. Existe uma certa confusão com relação à diferença entre o “ati” e o “radeon”, já que usando um ou outro na configuração, o vídeo funciona da mesma forma. A resposta é que o “ati” é um wrapper, ou seja, um pseudo-driver, que detecta a placa e carrega o driver correto. Ele é usado por que existem na verdade dois drivers diferentes para placas ATI: o radeon, que dá suporte às placas atuais e o r128, que dá suporte às antigas Riva 128.

O driver oferece aceleração 3D para a maioria dos modelos, que você pode testar abrir qualquer game 3D, como o Chromium ou o Tux Racer. Além do driver open-source, existe também a opção de usar o driver proprietário da ATI, que oferece um desempenho 3D superior (quando funciona), é problemático de instalar e possui muitos bugs, uma situação que só piorou depois da compra da ATI pela AMD.

nv: É o driver genérico para placas nVidia. Ele funciona bem e oferece os recursos básicos de aceleração de vídeo, mas possui a pesada limitação de ser apenas 2D. Para ativar os recursos 3D da placa, é preciso instalar o driver da nVidia, que, diferente dos drivers da ATI, realmente é bem desenvolvido e possui poucos problemas.

sis: Este é o driver genérico para placas da SiS, que é mantido pelo Thomas Winischhofer (http://www.winischhofer.at/linuxsisvga.shtml), sem qualquer tipo de apoio por parte da SiS. O driver não suporta muitas das placas atuais (com destaque para as baseadas no chipset Mirage 3) e não possui suporte 3D.

tdfx: Driver para as placas da 3Dfx, as famosas Voodoo. Se você tiver alguma Voodoo 2 ou 3 perdida por aí, pode usá-la no Linux, com direito a suporte 3D.

trident: Driver para as antigas placas da Trident.

via: Este é o driver que dá suporte ao chipset Via Unicrome, usado como vídeo onboard na maior parte das placas-mãe com chipset VIA e também em alguns notebooks. Originalmente, este driver era apenas 2D, como o nv e o sis, mas a partir de abril de 2005 a Via passou a publicar um driver 3D open-source, que pode ser encontrado nas versões recentes do X.org. Para que a aceleração 3D oferecida por ele funcione, é necessário que os módulos “via-agp” e “via” estejam carregados. Caso necessário, você pode carregá-los manualmente usando o comando modprobe.

vmware: Este é o driver otimizado para uso no VMware, quando você instala o sistema dentro de uma máquina virtual.

No final do arquivo vai a seção “Screen“, que indica a resolução e a profundidade de cores que será usada. Tudo começa com a opção “DefaultDepth”, que indica a configuração de cor. Ao usar 24 bits, por exemplo, ela será:

DefaultDepth 24

Em seguida temos várias seções que especificam as resoluções disponíveis para cada modo (1, 4, 8, 16, etc.), como em:

SubSection "Display"
Viewport 0 0
Depth 4
EndSubSection

SubSection "Display"
Viewport 0 0
Depth 8
EndSubSection

SubSection "Display"
Viewport 0 0
Depth 16
EndSubSection

SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection

Ter tantas seções repetidas gera dúvidas, mas na verdade a única que interessa é a seção referente à profundidade de cor escolhida (24 no exemplo). Todas as demais são irrelevantes e podem até mesmo ser removidas do arquivo se preferir. No arquivo gerado pelo xorgsetup, não é especificada a resolução, pois o X tenta sempre detectar a resolução do monitor via DDC. Em casos em que a detecção falhar, ou em que você queira usar uma resolução diferente da padrão, adicione uma linha “Modes”, especificando a resolução que quer usar, como em:

SubSection "Display"
Viewport 0 0
Depth 24
Modes "1280×800" "1024×768" "800×600" "640×480"
EndSubSection

Nesse exemplo, estou especificando todas as resoluções suportadas pelo monitor. A que vale mesmo é a primeira (1280×800) que é sempre usada por padrão. As demais são usadas apenas em casos de problemas (imagine que em um belo dia você troque o monitor por outro que suporte apenas 1024×768, por exemplo) ou no caso de aplicativos que precisem alterar a resolução do vídeo (como no caso dos jogos).

Sempre que você fizer alterações no arquivo e quiser testar a configuração, pode reiniciar o X rapidamente pressionando “Ctrl+Alt+Backspace”. Via de regra, a única situação em que é realmente necessário reiniciar o sistema no Linux é em caso de uma atualização do kernel, em outros casos, basta reiniciar o serviço ou o aplicativo que foi alterado ou atualizado, como no caso do X.

Além do xorgsetup, outros utilitários de configuração que você pode testar são o kxconfig (que é um configurador gráfico, incluído no KDE) e o xorgcfg, outro configurador gráfico, um pouco mais simples que o kxconfig que também pode ser chamado a partir do modo texto, útil nos famosos casos em que o X não sobe devido a alguma configuração incorreta.

Uma última opção é o xorgconfig, uma ferramenta de configuração rudimentar, em modo texto que está disponível desde as primeiras distribuições. O xorgconfig é na verdade um wizard, que faz uma série de perguntas, incluindo o tipo de mouse e porta onde ele está instalado, layout e linguagem do teclado, resolução e taxa de atualização do monitor, chipset da placa de vídeo, além da resolução e profundidade de cores desejadas e utiliza as respostas para gerar o arquivo de configuração.

A principal dica é sempre salvar cópias dos arquivos anteriores antes de fazer alterações, assim você pode sempre restaurar a configuração antiga e começar de novo em casos de erros.

Concluindo, você vai perceber que em muitas distribuições atuais, com destaque para o Ubuntu e o Fedora, o arquivo xorg.conf praticamente não contém opções, incluindo apenas as seções vazias. Isso acontece por que nelas a placa de vídeo e a resolução do monitor são detectados automaticamente a cada boot. O arquivo xorg.conf passa então a servir apenas como uma forma de forçar o uso de determinadas opções, para ser usado em casos em que a configuração automática não funciona.

Se tudo mais falhar, você pode usar este exemplo de arquivo de configuração como um failsafe. Ele inclui uma configuração o mais simples possível, que faz com que o sistema não tente detectar a placa de vídeo, utilizando diretamente o driver “vesa” com resolução de 1024×768, 800×600 ou 640×480, de acordo com o suportado pela placa. Ele é um arquivo similar ao usado por padrão no Slackware, mas simplificado de forma a funcionar em qualquer distribuição.

Salve-o em um pendrive junto com outros drivers e arquivos de manutenção e use-o em situações onde o sistema não consiga detectar a placa e o carregamento do modo gráfico seja abortado:

Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "abnt2"
Option "XkbLayout" "br"
EndSection

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/input/mice"
Option "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
Identifier "Monitor0"
EndSection

Section "Device"
Identifier "Card0"
Driver "vesa"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
DefaultDepth 16
SubSection "Display"
Depth 16
Modes "1024×768" "800×600" "640×480"
EndSubSection
EndSection

Sobre o Autor

Redes Sociais:

Deixe seu comentário

X