Gerenciando módulos no Linux

Aprenda como configurar alguns dispositivos (placa de som e rede) em modo texto e como bônus vários comandos importantes nesse gerenciamento.

[ Hits: 121.562 ]

Por: Leonardo Afonso Amorim em 28/10/2008


Definição de módulo



Quando instalamos uma distribuição Linux como Debian, Red Hat, SuSE, Slackware, dentre outras, estamos utilizando um kernel que foi compilado pelos desenvolvedores da distribuição. Como esse kernel deve ser capaz de rodar em praticamente qualquer PC e dar suporte a quaisquer tipos de recursos que o usuário pretenda utilizar, o desenvolvedor compila um kernel que fornece todas as funcionalidades básicas e, em separado, compila pedaços de código que dão suporte a funcionalidades mais específicas.

Esses pedaços de código são os chamados módulos. Dessa forma, quando o sistema é carregado um kernel básico se coloca na memória e passa a controlar a máquina.

Neste ponto são verificadas outras funcionalidades que se espera que o kernel dê suporte, como, por exemplo, utilizar uma partição XFS; neste momento se o kernel não possuir suporte nativo a esse sistema de arquivos ele verificará se o módulo que dá suporte a ele foi compilado. Se esse módulo for encontrado, ele será carregado expandindo as funcionalidades do kernel.

Para você saber qual a versão do kernel que está usando:

# uname -r

Antes de começar a configurar qualquer dispositivo, vamos as explicações de alguns comandos para a manipulação de módulos.

Quando falo que um módulo é built-in significa que o mesmo já está incorporado no kernel do sistema, ou seja, assim que o kernel for iniciado, o dispositivo também será, caso a máquina o tenha.

Agora os módulos que não são built-in, ou seja, que não são carregados quando o sistema inicia, significa que o kernel pode suportar, mas o mesmo precisa ser levantado manualmente.

Então, o módulo é como uma quebra-cabeça, estando com a peça em mãos para funcionar, você precisará montar, ou melhor carregar!

E é justamente aí que entra a nossa função!!! Já os built-in são transparentes para nós, não precisamos nos preocupar com eles pois já estão no kernel.

Resumindo: se o módulo é built-in não preciso ter trabalho nenhum. Agora se não for built-in, teremos que levantar o módulo com os comandos que eu mostrarei a seguir.

Página anterior     Próxima página

Páginas do artigo
   1. Reconhecendo o hardware
   2. Definição de módulo
   3. Comandos para gerenciamento de módulos
   4. Exemplo prático: Placa de som
   5. Exemplo prático: Placa de rede
   6. Dicas finais
Outros artigos deste autor

O mundo a um clique e um "Eu" fora de nós

O que é $PATH, como funciona e como trabalhar com ele

Técnicas de memorização para facilitar o uso VI (Comandos básicos)

Cego guiando cego

Configurando JAVA no Firefox para acessar página de bancos

Leitura recomendada

Instalação da placa PXE Intelbras

Arduino - Visão Geral

Utilize seu iPad/iPhone/IPod Touch na plataforma GNU/Linux

Instalando placa wireless no OpenSUSE 11.0 (método genérico para qualquer placa)

Fingerprint-GUI (solução para leitores biométricos) no Ubuntu

  
Comentários
[1] Comentário enviado por corbe em 28/10/2008 - 10:01h

Estou tendo dificuldades em subir o modulo usbhid, uso o slackware, baixei o kernel-modules, da mesma versão do meu kernel, descompactei o pacote, copiei o usbhid
do pacote para meu diretorio de driver, e quando dou modprobe usbhid me aparece module invalid format,
o que isso quer dizer?

[2] Comentário enviado por corbe em 28/10/2008 - 10:13h

acho que a pergunta certa é , como instalo um modulo que não existe na minha pasta de modulos. ( /lib/modules/2.6.24.2/kernel/drivers.. )

[3] Comentário enviado por leonardoamorim em 28/10/2008 - 10:20h

Quando não encontrar um módulo no diretório correspondente é necessário recompilar o kernel ativando novos módulos.
Se o módulo for proprietário você deve procurar no site do fabricante verificando se tem versão para Linux. A nvidia por exemplo dispõe em seu site drivers de vídeo para Linux.

[4] Comentário enviado por corbe em 28/10/2008 - 10:31h


E no caso da nvidia, devo baixar o modulo do site e ainda sim recompilar o kernel? ou simplismente copialos ao diretorio de driver do sistema?

[5] Comentário enviado por leonardoamorim em 28/10/2008 - 10:33h

Corbe,

Segue um link de como instalar o módulo nvidia no Debian Etch:
http://leonardoafonso.blogspot.com/2007/08/configurando-placa-nvidia-no-debian.html

[6] Comentário enviado por walber em 28/10/2008 - 23:06h

Leonardo, mandou muito nesse artigo, parabéns.

[7] Comentário enviado por corbe em 29/10/2008 - 10:08h

Olá,
quando tento dar modprobe usbhid aparece a seguinte msg

FATAL: Error inserting usbhid (/lib/modules/2.6.24.5/kernel/drivers/hid/usbhid/usbhid.ko): Invalid module format

algum saberia me dizer o motivo que não consigo carregar esse modulo

[8] Comentário enviado por mafioso em 29/10/2008 - 12:11h

São artigos como este que faz o uso do Linux ser cada vez mais fácil e agradável. Parabéns pelo artigo, kra. Eu já sabia bem estes conceitos de módulo, mas aprendi na marra... Seu artigo há uns anos atrás teria me poupado horas de pesquisa. Valeu.

A única coisa que eu adicionaria, é que para saber qual o módulo necessário para determinada placa, você também pode buscar no google. modinfo em cada módulo pode fazer alguém entrar em parafuso. Mesmo porque algumas placas funcionam com diferentes módulos, então é bom pesquisar para saber qual o melhor. Minha placa de rede wireless por exemplo, trabalha nativamente com o módulo bcm38xx. Porém, descobri que é muito melhor utilizar o módulo ndiswrapper pesquisando rapidamente no Google.

[9] Comentário enviado por rafranco em 29/10/2008 - 19:40h

leonardoamorim, estou há vários dias tentando fazer funcionar uma placa de som Creative CT4810 com chipset Ensoniq ES1371, espetada em um micro rodando Slackware 12.0 e DreamLinux 3.0. Ela até funcionou algumas vezes mas basta desligar o micro e tudo se perde. Segui seus ensinamentos e verifiquei no kernel 2.6.21.5 a existência de dois módulos de som snd-ens1370 e 1371. O comando modprobe levanta os módulos sem problemas. O Slack configura como ES1371, via alsaconf. Em rc.modules, descomentei as linhas correspondentes aos módulos. Passo pelo alsamixer, mas som que é bom, nada. Se puder ajudar, agradeço. P.S.: Na partição vizinha, o DreamLinux configurou tudo sozinho!

[10] Comentário enviado por Caaio Rooberto em 15/04/2009 - 11:10h

Meu amigo, eu estou aprendendo agora a mexer no linux. Pra variar, meu professor me passou um trabalho exatamente sobre modulos e processos correntes no linux.
Eis a duvida...
Aki estao as especificacoes do trabalho pa vc ter uma ideia:


Processo corrente e Procfs

Escrever um módulo que informe as seguintes dados do processo corrente em um
arquivo do /proc:

- PID do processo.
- Áreas de memória usada pelo processo.
- Arquivos abertos pelo processo. (Caso tenha algum arquivo aberto)


Para mais esclarecimento, o professor ainda falou q devemos usar uma estrutura chamada task_struct e q este processo corrente especificado acima eh do tipo task_struct. Logo, para conseguirmos o PID, a area de memoria usada e etc nós temos q usar esta task_struct. A questao eh essa, eu n sei usar isso.

Qlqr ajuda sera bem vinda.
Desde jah agradeco.

[11] Comentário enviado por (xinelo) em 27/08/2009 - 20:54h

como faço para deletar um módulo do sitema?

[12] Comentário enviado por roneibrasil em 05/01/2010 - 20:48h

tenho o ubuntu 9.10 karmic koala 64 bits e não estou conseguindo fazer funcionar o wireless, que é uma placa RTL8101E PCI Express Fast Ethernet controller (rev 02). sabe o que posso fazer? alguma dica? obrigado

[13] Comentário enviado por luizvieira em 06/04/2010 - 19:48h

Muito bom!
[ ]'s

[14] Comentário enviado por galdinocamargo em 20/05/2010 - 00:21h

Gostei também, muito bom!

abraço,
Rodrigo Galdino.

[15] Comentário enviado por tntsys em 25/05/2011 - 20:25h

legal cara vc é professor da 4linux.

[16] Comentário enviado por vbassis em 25/06/2011 - 13:25h

Parabéns!!!!!
excelente artigo.

Abraço,
Vinicius

[17] Comentário enviado por rodrigocontrib em 27/06/2013 - 06:39h

Fala ae,
Criei duas linhas de comando para auxiliar no modinfo, a primeira gera um arquivo teste-2706 a segunda pega este arquivo e da um cat grepando para um parametro qualquer da sua interface.
no meu caso a minha placa de som é : 00:05.0 Audio device: nVidia Corporation MCP61 High Definition Audio (rev a2)

lsmod |grep -i snd |awk '{print " find . -type f -iname " $1 "*" }'|sh + > /home/rodrigo/teste-2706
cat /home/rodrigo/teste-2706 | awk '{print " modinfo " $1}' |sh + |grep -i MCP*

Boa noite a todos, e fiquem com Jesus Cristo!

[18] Comentário enviado por sauloneiva em 09/07/2015 - 11:23h

Olá!!!
Estou tentando usar o modprobe -l, porém esta dando esta mensagem:
modprobe: unrecognized option '--l'.
Estou usando o Debian Weezy.


Contribuir com comentário