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.
[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?
[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.
[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.
[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
[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)