ct

    Recompilar o Kernel? Isso ainda existe??

    F.A.Q Linux e Software Livre



    "Eu sempre vejo muitos tutoriais sobre Linux na web dizendo que é necessário recompilar o Kernel para coisas mínimas, como habilitar o driver para uma placa de som ou instalar o firewall. Estava lendo o seu tutorial sobre como recompilar o Kernel e não pareceu ser muito difícil, mas é mesmo necessário ter que ficar recompilando o Kernel toda hora?"

    Nas primeiras versões do Kernel do Linux, o sistema era inteiramente monolítico. Você realmente tinha que recompilar o Kernel ao ativar ou desativar qualquer coisa. Você não podia simplesmente compilar o Kernel ativando tudo, pois ele ficaria muito grande e lento, então a solução era passar algumas horas pesquisando sobre os recursos disponíveis e então compilar um Kernel ativando só o necessário para a sua máquina.

    Isso é muito antigo, na primeira metade da última década do milênio passado. Naquela época o Slackware era considerado a distribuição mais amigável e o Linux só era usado por Geeks (muitas vezes nem por eles :)

    Depois dessa rápida idade das trevas o Kernel passou a ser semi-monolítico. Ele continua formando um único bloco de código, mas agora existem "ganchos" que permitem carregar e descarregar pedaços conforme necessário. Estes pedaços são chamados de módulos.

    Cada dispositivo de hardware, cada sistema de arquivos ou mesmo coisas como o iptables é representado por um módulo. Estes módulos podem ser carregados e descarregados conforme necessário. Quando estão descarregados eles não são nada mais do que inóculos arquivos dentro da pasta /lib/modules do HD. É pra isso que servem os comandos modprobe (carrega um módulo) e modprobe -r (descarrega um módulo).

    As distribuições incluem quase todos os componentes na forma de módulos. Apenas alguns destes módulos são necessários na sua máquina (o Kernel 2.4 inclui uns 100 módulos diferentes para placas de som, mas você só vai usar um deles). Como disse, os módulos que não estão sendo usados ficam repousando na forma de inocentes arquivos no HD, apenas ocupando espaço. Se eles são arquivo, significa que você pode deixar pra instalar alguns deles só quando precisar, assim nem espaço eles vão ocupar.

    Se você precisar usar o iptables, que é o firewall titular do Linux, você precisaria apenas instalar o pacote com o módulo correspondente. Se você estiver no Mandrake usaria o comando "urpmi iptables", se estivesse no Debian ou Kurumin daria um "apt-get install iptables" e assim por diante. Não é preciso recompilar o Kernel, você só precisa instalar o arquivo. Rápido e limpo.

    O mesmo acontece se você precisar instalar um softmodem ou os drivers da nVidia por exemplo. Você poderia ou pegar um pacote com um módulo já compilado para a sua distribuição ou baixar aquele pacote genérico e deixar que o instalador gere um módulo adequado para o seu Kernel. De qualquer forma ele irá gerar apenas o módulo e não sair recompilando o Kernel inteiro.

    A exigência neste caso é que você precisará ter instalados no seu micro os pacotes kernel-source e kernel-headers, que incluem o código fonte do Kernel da sua máquina, que o instalador usará para se orientar na hora de gerar o módulo.

    A única grande limitação que ainda existe neste sentido é que, salvo coincidências, um módulo gerado para uma certa versão do Kernel não vai funcionar em outra. É por isso que aquele pacote com o driver do modem Lucent feito para o Red Hat 8.0 não vai funcionar no Mandrake 9.1. É preciso que o pacote seja específico para a distribuição que você estiver usando.

    Hoje em dia você só vai precisar se aventurar a compilar um Kernel se quiser testar as versões de desenvolvimento, que não são muito recomendáveis de qualquer forma por incluírem novos recursos que não foram bem testados.

    Existe um mito de que recompilar o Kernel deixa o sistema mais rápido, que é falso hoje em dia. Basta pensar um pouco: se já ficam carregados na memória apenas os módulos que estão sendo usados, que diferença faz recompilar o Kernel retirando um monte de módulos que não serão usados de qualquer forma? Se o objetivo é economizar espaço no HD seria muito mais prático simplesmente entrar na pasta /lib/modules e sair apagando os arquivos dos módulos que não estão sendo usados.

    Os Kernels das distribuições geralmente incluem vários patches para adicionar recursos e melhorar o desempenho. Ou seja, se você não souber o que está fazendo, vai acabar com um Kernel mais lento e mais limitado do que o original.

    Encontre o que procura usando a busca:

cb
Livros de Carlos E. Morimoto Contato HOME