|
|
Guia: Configurando modems e placas wireless no LinuxCarlos E. Morimoto 08/01/2006 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 vêm 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á descompacta-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 - Outros compiladores: Além do gcc, alguns drivers podem precisar de outros compiladores ou bibliotecas, como o g++ e o libc6-dev. Por isso é sempre interessante marcar a categoria "compiladores" durante a instalação da distribuição. Isso assegura que você possui o conjunto completo. No Kurumin você pode usar o ícone mágico "instalar-compiladores".
|