Módulos no Linux

Módulos são peças que se encaixam para formar algo maior, e no Linux o conceito é o mesmo. Módulos são drivers, programas que adicionam funções e suportes ao Kernel para que ele realize algo que antes não sabia, módulos de rede são para suportar protocolos de rede ou placas, módulos de controladoras nos dão acesso à hardware, etc.

Diferente do Windows, onde geralmente hardwares ou funções específicas precisam que seja instalado um software de driver no sistema, no Linux o módulo (driver), geralmente é parte integrante do Kernel. Temos duas opções quando compilamos um kernel, em relação a ter um determinado suporte à hardware, protocolo ou função, ser embutido no kernel(built-in) ou módulo. Se o suporte for embutido no kernel, aquele suporte estará sempre ativado e disponível pois como é parte integrante do kernel ele estará carregado em memória sempre que o kernel for carregado. Se for como módulo, podemos carregá-lo somente quando formos usar e descarregar quando não quisermos mais, podemos bloquear um módulo a fim de que um serviço não entre no ar, por exemplo.

Lidar com esses módulos é cada vez mais fácil, já que desde o Kernel 2.4 e estamos no 3.3, existe até carregamento automático de módulos, sendo assim ao plugar um hardware, como um modem 3g, ou requisitar um serviço, como iniciar uma VPN, o módulo é carregado automaticamente pelo sistema.

Usando o post publicado no site de nossa colaboradora Caroline Souza (www.carolinux.com.br) sobre como desabilitar módulos, vou mostrar algumas situações em que usar módulos é melhor que built-in e que podemos ter alguns controles de uso de serviços. Segue o post:

Imagine a situação, tenho uma placa de vídeo NVIDIA e quero usar o driver proprietário do site nvidia.com mas o módulo nouveau é carregado automaticamente no boot da máquina.

O que fazer?

Bem, uma solução seria desinstalar o driver nouveau do sistema, mas como gosto de testar de vez em quando as mudanças das novas versões, porque não, apenas desabilitar o módulo.

#echo 'blacklist nouveau' >> /etc/modprobe.d/blacklist

Outro exemplo muito comum da aplicação das blacklist é durante a inicialização do módulo pcspkr. Jã configurei sistemas Debian onde no boot o sistema apresentava o seguinte erro:

Error: Driver ‘pcspkr’ is already registered, aborting…

Para solucioná-lo bastou colocar o módulo na blacklist e voilá, beep funcionando e sem mensagens de erro.

#echo 'blacklist pcspkr' >> /etc/modprobe.d/blacklist

E por fim, não usa IPv6 e gostaria de desabilitar o módulo?

No OpenSuse me bastou apenas executar:

#echo 'blacklist ipv6' >> /etc/modprobe.d/blacklist

Já no Debian “squeeze” tive que fazer diferente, conforme a documentação do http://wiki.debian.org/DebianIPv6 desabilitei o IPv6 assim:

#echo net.ipv6.conf.all.disable_ipv6=1 > /etc/sysctl.d/disableipv6.conf

Outra opção seria desabilitar em uma máquina o uso de dispositivos de armazenamento USB, sem que você precise bloquear a porta USB:

#echo 'blacklist usb-storage' >> /etc/modprobe.d/blacklist

Impedir o uso de modem 3G em uma máquina, modem 3g é um dispositivo de comunicação serial que geralmente é ligado à porta USB:

# echo 'blacklist usbserial' >> /etc/modprobe.d/blacklist

Observe que o caractere de > (maior que, pra quem não lembra da matemática 😉 ) é usado DUAS vezes, isso porque em Linux representa o redirecionamento para adicionar algo ao fim de um arquivo mantendo todo o conteúdo anterior. O uso de apenas um caractere de > (maior que) é para sobrescrever o conteúdo de arquivo, veja se não esquece.

O módulo nouveau, para os que não sabem, é um módulo Open Source para prover acesso aos recursos de placas nvidia. Esse módulo, ainda em desenvolvimento, permite acesso às funções de mapeamento de tela, calculo de vídeo e com o suporte à gallium oferece recursos de renderização e até pra 3d. A premissa desse driver é que o driver da nvidia não se integra perfeitamente com o sistema, deixando a desejar em termos desempenho e recursos, por exemplo o driver da nvidia faz 50hz de atualização de tela quando em altas resoluções, e todo mundo sabe que quanto mais hz melhor pra vista. O nouveau ainda apresenta alguns problemas, mas como todo programa open source ele tem um desenvolvimento rápido e sua melhora é perceptível a cada versão.

Assim o uso de módulos é extremamente importante pois permite que tenhamos kernels menores, só carreguemos suportes quando realmente precisarmos dele e que possamos ter o controle sobre esses suportes a qualquer momento.

Espero que tenha ajudado a entende um pouco o porquê de quem usa Linux falar de módulos o tempo inteiro e ver que não é nada difícil. Continuem divulgando nosso Portal e de nossos amigos Colaboradores.

  • Wilson Junior

    Muito bom Vagner, vc além de sacar muito de Linux tem a preocupação de passar o conteúdo de uma forma fácil de se entender. Conheci o site a pouco tempo mas já entrou nos meus favoritos logo no primeiro acesso. Parabéns pelos posts e videocasts.

    • Wilson,

      Obrigado pelo elogio e a idéia é sempre dismistificar as informações para que as pessoas entendam de forma clara o que são as coisas e como podemos usá-la.

  • Vagner,

    Muito bom o post, parabenizo o trabalho da Caroline Souza (www.carolinux.com.br). É muito bom ver que a Comunidade de TI está trabalhando junto para o compartilhamento de conhecimento de forma fácil e prática. O Portal CooperaTI sempre nos leva a crescer em conhecimento a cada novo post.

    Grande Abraço.

    • Emerson,

      Compartilhar conhecimento só nos faz melhores e não o contrário, pena que ainda se vê muita gente por aí que guarda informação pra parecer que sabe mais que os outros.
      Mas iniciativas como a nossa, da Caroline e a sua estão aí pra mostrar que compartilhando somos maiores e mais fortes pra enfrentar qualquer adversidade.

    • Muito obrigada Emerson.

      Fico feliz em poder contribuir com o crescimento do SL e com essa galera fantástica do CooperaTI.

      Abraços.

  • Felipe

    Fantástico post Vagner. A explicação do que é um módulo foi a mais clara que já ouvi (vi) até hoje.
    Parabéns!

    • Felipe,

      Sempre procuro fazer as coisas da forma mais clara possível, assim sem querer valorizar demais o conhecimento.

      Obrigado.

  • Paulo

    Vagner,

    Como sempre ótimo post claro e objetivo marca registrada cooperaTI.

    Abraços

  • Bruno Cruz

    A galera do Linux do Cooperati está fazendo eu apaixonar pelo Pinguin!! frsrsrrsrrsrsr !!

    • Bruno,

      É assim mesmo, o Linux oferece muito conhecimento agregado ao sistema, e melhora até a forma que você usa e entende o Windows.

      • Concordo Plenamento Vagner.
        Quando iniciei minha caminhada na administração de servidores linux , meu aprendizado referente a tecnologias Microsoft aumentou bastante. O Linux foi um divisor de águas na minha carreira em TI.

        Grande Abraço.

  • anderson leocadio

    opa Vagner…
    estava lendo um material na internet e fiquei sabendo desse evento de software livre.
    acredito que o cooperati precisar divulgar (e estar presente), segue link.

    http://forumsoftwarelivre.com.br/2012/?q=apresenta%C3%A7%C3%A3o

    forte abraço.

    • Anderson,

      Não só vamos divulgar, em um post dessa semana, como pretendemos estar lá. Participar como palestrantes se possível.

      Abraços.