twitter


A principal diferença entre Windows e Linux com relação a drivers e suporte a dispositivos é que no Windows os drivers são desenvolvidos pelos fabricantes e precisam ser instalados manualmente, após a instalação do sistema, enquanto no Linux os drivers são incorporados diretamente ao Kernel e por isso vêm pré-instalados no sistema.

Naturalmente, o Windows também inclui uma biblioteca de drivers, com suporte a um grande número de dispositivos, mas a biblioteca fica rapidamente desatualizada, já que a vida útil do sistema é muito grande. Ao instalar o Vista em um PC montado com componentes disponíveis na mesma época do lançamento (do sistema), praticamente todo o hardware será ativado durante a instalação, mas ao fazer o mesmo com o XP, que foi lançado em 2001, você precisará instalar praticamente tudo posteriormente.
Podemos dividir os drivers de dispositivo para o Linux em dois grupos. O primeiro é o dos drivers de código aberto, que podem tanto ser desenvolvidos pelos próprios fabricantes quanto por voluntários em cantos remotos do mundo. Estes drivers open-source são incluídos diretamente no Kernel, o que faz com que sejam incluídos diretamente nas distribuições e você não precise se preocupar muito com eles. O segundo grupo é o dos drivers proprietários (como os drivers para placas de vídeo da nVidia e da ATI), que na maioria dos casos precisam ser instalados manualmente.
Os componentes suportados são detectados durante a instalação do sistema e os módulos necessários são carregados, fazendo com que o dispositivo funcione sem precisar de configuração adicional. Muitas distribuições incluem inclusive scripts ou utilitários que se oferecem para fazer a instalação de drivers proprietários.
O maior problema é justamente quando o sistema de detecção não funciona tão bem quanto deveria, ou quando o sistema não possui os drivers para o dispositivo em questão e você precisa baixar e instalar os drivers manualmente. Nesse ponto, a maioria das pessoas simplesmente desiste ou passa a testar outras distribuições até encontrar alguma que consiga detectar os componentes que precisa, ao invés de tentar resolver o problema inicial. Embora solucionar problemas no Linux possa ser um processo complexo, neste tópico vou tentar dar algumas dicas gerais de por onde começar.
Em primeiro lugar, o suporte a dispositivos no Linux é feito através de "módulos" incluídos no Kernel, arquivos que ficam dentro da pasta "/lib/modules/versão_do_kernel_usada/":

Estes módulos são a coisa mais parecida com um "driver" dentro da concepção que temos no Windows. Para ativar o suporte a um certo dispositivo, você precisa apenas carregar o módulo referente a ele. Veja que os módulos ficam organizados em pastas: a pasta "kernel/drivers/net/" contém drivers para placas de rede, a pasta "kernel/drivers/usb/" agrupa os que dão suporte dispositivos USB e assim por diante.
Até o Kernel 2.4, os módulos de Kernel utilizavam a extensão ".o", que é uma extensão genérica para objetos em C. A partir do Kernel 2.6, passou a ser usada a extensão ".ko" (kernel object), que é mais específica.
Quase sempre, os módulos possuem nomes que dão uma idéia do dispositivo a que oferecem suporte. O "8139too.ko" dá suporte às placas de rede com o chipset Realtek 8139, o "sis900.ko" dá suporte às placas com chipset SiS 900, enquanto o "e100.ko" ativa as placas de rede com chipset Intel E100, por exemplo.
Os módulos podem ser carregados e descarregados a qualquer momento usando os comandos "modprobe" e "modprobe -r"; não apenas na inicialização do sistema.
Algumas distribuições oferecem a opção de carregar módulos adicionais durante a instalação, justamente pensando nos raros casos onde você precisa de um determinado módulo para ativar a placa SCSI onde está instalado o HD para poder prosseguir com a instalação, por exemplo.
Os módulos são gerados durante a compilação do Kernel. Você não precisa se preocupar com isso se não quiser, pois as distribuições quase sempre incluem versões bem completas do Kernel por padrão. Mas, de qualquer forma, existe sempre a possibilidade de recompilar o Kernel, mexendo nas opções e ativando ou desativando os módulos que quiser.
As distribuições atuais são bem competentes com relação à detecção do hardware da máquina, mas sempre existem casos onde a detecção de hardware falha. Se existe um driver disponível e o problema foi apenas na detecção do dispositivo, o suporte a ele pode ser ativado carregando o módulo referente a ele, como em:
# modprobe ipw2200
(como root)
Aqui carregamos o módulo que dá suporte a placa IPW2200, usadas em notebooks Intel Centrino. Os módulos são inteligentes, eles detectam se o dispositivo a que dão suporte está realmente presente, caso contrário incluem uma mensagem de erro no log do sistema e não fazem nada. Com poucas exceções, você pode testar o carregamento de quantos módulos quiser, sem causar problemas ao funcionamento do sistema.
Em alguns casos, pode ser necessário especificar opções diversas ao carregar o módulo, como no caso das placas de captura de vídeo que são ativadas através do módulo "bttv". Se você tem uma PixelView PlayTV Pro, por exemplo, precisa carregar o módulo incluindo os parâmetros "card=37 tuner=2". Na maioria dos casos, o módulo já vai estar carregado (devido ao sistema de detecção de hardware da distribuição), mas com os parâmetros incorretos. Nesse caso, você precisaria primeiro descarregar o módulo (usando o comando "modprobe -r"), para depois carregá-lo novamente usando o modprobe, como em:
# /sbin/modprobe -r bttv
# /sbin/modprobe -r tuner
# /sbin/modprobe bttv card=37 tuner=2

Originalmente, a modificação seria perdida ao reiniciar a máquina. Para não precisar ficar executando os comandos novamente a cada boot, você adicionaria os comandos (apenas os comandos, sem o "#", que indica que eles devem ser executados como root) em um dos arquivos de inicialização do sistema.
Os mais próprios para isso são os arquivos "/etc/rc.local" ou "/etc/rc.d/rc.local". Verifique qual dos dois está disponível, abra-o em um editor de texto puro, como o kedit, kwrite, gedit ou mcedit e adicione os comandos no final do arquivo, antes da linha "exit 0" (caso presente).
Naturalmente, pouca gente sabe os nomes e parâmetros dos módulos de cor. Ao se deparar com problemas de detecção, o caminho é sempre pesquisar pelo modelo da placa ou pelo chipset usado. Quase sempre você vai encontrar dicas de como ativá-la em algum wiki ou fórum. Em muitos casos é só questão de ativar o módulo apropriado, mas em outros você precisa instalar algum driver proprietário ou experimental manualmente.

0 comentários:

Postar um comentário