Verificando links, arquivos e compiladores
Existem muitas coisas que podem dar errado na hora de compilar estes drivers. Vamos a um checklist dos problemas mais comuns:
Os headers, ou cabeçalhos, incluem um conjunto de endereços e comandos, necessários para que o instalador do driver conheça o Kernel em que está trabalhando e consiga gerar um módulo sob medida para ele, mesmo sem ter o código fonte completo. É como um marceneiro que constrói móveis sob medida apenas com as medidas dos cômodos da casa. Dentro da pasta devem existir pelo menos as pastas "arch/", "include/" e "scripts/":
Geralmente, o pacote "kernel-headers" incluído nas distribuições inclui apenas a pasta "include", que não é suficiente para instalar muitos drivers, incluindo o VMware, por exemplo. Nestes casos você precisará instalar também o pacote "kernel-source" que contém o código fonte completo do Kernel, copiando as outras duas pastas de que precisamos a partir da pasta "/usr/src/linux/2.6.x". Outra coisa importante a verificar o conteúdo da pasta "arch/". Ela deve conter a pasta "i386" e dentro desta, um conjunto com várias pastas e arquivos. Em muitas distribuições, a pasta arch vem vazia dentro do pacote kernel-headers e o conteúdo é movido para dentro do pacote kernel-source. Nestes casos você precisa mesmo ter instalados os dois pacotes.
Em muitos casos, como no Debian por exemplo, ao instalar o pacote kernel-source será apenas copiado um arquivo compactado em .tar.bz2 para a pasta "/usr/src/". Para concluir a instalação, você ainda precisará descompactá-lo com o comando "tar -jxvf kernel-source-2.6.x". Dentro da pasta "/usr/src/linux-2.x.x" devem existir as pastas "arch/", "include/" e "scripts/", juntamente com vários outras que contém o restante do código fonte. Em alguns casos, o source não contém a pasta include/. Neste caso, copie-a a partir da pasta com os headers. Desde que as três pastas estejam em ordem, o source completo substitui a pasta com os headers e pode ser usado no lugar deles na hora de compilar drivers.
Em alguns casos, ele é criado automaticamente a instalar os pacotes com os headers ou o fonte do Kernel, em outros você deverá criá-lo manualmente, apontando ou para a pasta com os headers, ou para a pasta com o fonte completo. Lembre-se de que os links simbólicos são criados com o comando "ln -s pasta_destino link", como em "ln -s /usr/src/linux-headers-2.6.14-kanotix-6 /usr/src/linux".
# ln -s /usr/src/kernel-headers-2.6.x /lib/modules/2.6.x/build Não se esqueça de substituir o "2.6.x" em todos os exemplos pela versão do Kernel instalada na sua máquina.
Infelizmente, o gcc possui um histórico de incompatibilidades entre suas diferentes versões, o que faz com que o mesmo código fonte compilado em versões diferentes gere binários diferentes e em muitos casos até mesmo incompatíveis entre si. Os desenvolvedores conhecem bem estes problemas, por isso sempre recomendam que você sempre use a mesma versão do gcc que foi usada para compilar o Kernel para compilar qualquer módulo ou driver que seja instalado posteriormente. Módulos compilados com versões diferentes do gcc muitas vezes não funcionam ou apresentam problemas diversos. Normalmente as distribuições incluem sempre a mesma versão do gcc que foi usada para compilar o Kernel. Mas, caso você tenha atualizado o gcc ou atualizado o Kernel, vai acabar com versões diferentes. A partir daí, muitos drivers não vão mais compilar, reclamando que a versão do gcc instalada é diferente da usada para compilar o Kernel. Nestes casos, a solução ideal é procurar a versão correta do gcc e instalá-la. Mas, se por qualquer motivo não for possível fazer isso, você pode forçar os instaladores a usarem a versão instalada configurando a variável CC do sistema para apontar para a versão atual do CC. Este comando deve ser dado no terminal, antes de chamar o instalador. Ele não é persistente, você deve usá-lo antes de cada instalação:
#
export CC=/usr/bin/gcc-4.0 Caso isso não seja suficiente, configure a variável IGNORE_CC_MISMATCH com o valor 1, o que faz com que a checagem da versão do GCC seja desativado completamente: # export IGNORE_CC_MISMATCH=1
» Próximo: Configurando softmodems no Linux Você está lendo o livro Linux, Ferramentas Técnicas (publicado em 2006) Se se está em busca de um livro atualizado sobre Linux, leia o Linux, Guia Prático, que oferece informações atualizadas:
Autor: Carlos E. Morimoto
Páginas: 736 Formato: 23 x 16 cm Editora: GDH Press e Sul Editores » Veja mais detalhes sobre o livro Descrição: Em 2001 publiquei a edição inicial do livro "Entendendo e Dominando o Linux", que foi sucedida por diversas atualizações, culminando no livro que está atualmente disponível para leitura online. O livro Linux, Guia Prático é um novo trabalho, onde pretendo transmitir a experiência e os conhecimentos acumulados ao longo de todos esses anos. Este é um livro de referência, destinado a mostrar detalhes sobre a configuração e uso do sistema, abordando diversas distribuições, incluindo o Ubuntu, Mandriva, Fedora, OpenSUSE e Slackware. Temas gerais, como os aplicativos disponíveis e o uso do terminal são explicados de forma independente, enquanto as configurações específicas para cada distribuição são agrupadas em capítulos específicos para cada uma. A idéia é oferecer os meios para que você se torne um usuário avançado, capaz de usar e solucionar problemas em qualquer distribuição. Veja também nossos livros Hardware, o Guia Definitivo, Redes, Guia Prático, Servidores Linux, Guia Prático e Smartphones, Guia Prático nossos outros lançamentos. |
|