EM CONSTRUÇÃO
Como funciona o suporte a hardware no Linux?
As distribuições Linux sempre vêm de fábrica com suporte a muitos dispositivos, em geral quase tudo é detectado automaticamente. Os maiores problemas em geral são os softmodems que precisam ser instalados manualmente depois da instalação. O mesmo se aplica se você tiver uma placa de vídeo da nVidia ou da ATI ou outros dispositivos cujos fabricantes disponibilizam drivers proprietários.
Mas, afinal, como é a instalação destes drivers no Linux? Cadê o assistente para a instalação de novo hardware? Onde que eu aponto a pasta onde estão os arquivos? Calma, vamos chegar lá 🙂
O suporte a dispositivos no Linux é feito através de módulos incluídos no Kernel, arquivos que ficam dentro da pasta /lib/modules/. Estes módulos são a coisas mais parecida com um “driver” dentro da concepção que temos no Windows. Para ativar 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 “net” contém drivers para placas de rede, a pasta “ieee1394” agrupa os que dão suporte a controladoras e dispositivos firewire e assim por diante.
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. 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 Kernels bem completos 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.
Você pode incluir módulos para todo tipo de dispositivos, de marcas e modelos diferentes, eles não atrapalham em nada, pois apenas alguns deles (os que você estiver usando no momento) ficarão carregados. Estes módulos geralmente são pequenos, um conjunto completo com os módulos para todo tipo de dispositivos geralmente ocupa de 30 a 50 MB no HD.
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. Desenvolver drivers usando engenharia reversa sem ajuda dos fabricantes parece ser um passatempo bastante popular 🙂
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. Sua placa funciona e todo mundo fica feliz.
A segunda categoria é a dos drivers proprietários, que são desenvolvidos pelos próprios fabricantes. Em alguns casos os drivers são de livre distribuição e também podem ser incluídos diretamente nas distribuições. Em outros você mesmo precisará baixar e instalar o driver. É aqui que entram os drivers para softmodems, para muitas placas wireless e também os drivers para placas 3D da nVidia e da ATI.
A psicologia para lidar com eles é a seguinte: Instalar um destes drivers envolve duas tarefas, criar e instalar o módulo propriamente dito e criar um “dispositivo” (device), um atalho que aponta para o endereço de hardware usado por ele.
Ao instalar um modem Lucent por exemplo é criado um dispositivo “/dev/ttyLT0” por onde o modem é acessado. Para facilitar esta tarefa geralmente os drivers vêm com algum tipo de instalador, geralmente um script simples de modo texto que cuida disso pra você.
Os módulos são parte integrante do Kernel, por isso os módulos para uma determinada distribuição não funcionam em outra, a menos que por uma grande coincidência as duas utilizem exatamente a mesma versão do Kernel, o que é bastante improvável já que o Kernel do Linux é atualizado quase que diariamente.
Se você usar uma distribuição popular, Mandrake, Red Hat, SuSe, etc. é provável que você já encontre um driver pré-compilado. Neste casos você só vai precisar instalar um pacote RPM ou executar um arquivo de instalação. Em outros casos você encontrará apenas um arquivo genérico ainda não compilado.
Nestes casos o instalador se encarregará de compilar um módulo sob medida para o Kernel que estiver em uso. Como ele não tem como adivinhar qual distribuição ou Kernel você está utilizando você precisará ter instalados dois pacotes que acompanham qualquer distribuição: kernel-source e kernel-headers. No Mandrake por exemplo você pode instalá-los usando os comandos “urpmi kernel-source” e “urpmi kernel-headers“.
Naturalmente, para que ele possa compilar qualquer coisa você precisará também de um compilador, o gcc, que também acompanha as distribuições. Se você tiver estas três coisas, vai conseguir instalar qualquer driver sem maiores problemas, basta seguir as instruções na página de download ou no arquivo INSTALL ou README dentro do pacote.
Deixe seu comentário