Este é o segundo post de uma série de quatro posts onde estou falando especificamente sobre o kernel, você pode dar uma olhada no post anterior clicando aqui: Entendendo o Kernel – parte 1

No Windows são conhecidos como drivers, já no linux estes são chamados de módulos, estes módulos ficam em um diretório com a mesma versão numérica do kernel situado em “/lib/modules“. Caso no seu pc tenha mais de um kernel, verifique qual esta sendo executado com o comando “uname -r“.

Estes módulos fornecem suporte ao hardware e a todos os demais dispositivos(ex: sistema de arquivos), que devem ser manipulados pelo sistema operacional, sendo construídos junto com o kernel. Assim, por exemplo caso existam as versões numéricas de kernel compiladas no seu sistema “2.6.25”, e “2.6.26” existirão dois diretórios dentro de /lib/modules.

Veja abaixo uma ilustração da comunicação:

mod-kernel

O diretório de módulos de cada versão numérica de kernel, contém várias pastas e arquivos, sendo os módulos de suporte a dispositivos existentes a partir do caminho “/lib/modules/versao_do_kernel/kernel/drivers“, conforme podemos observar logo abaixo:

Listagem do diretório de módulos do kernel

tfinardi@debian5:/lib/modules$ ls
2.6.26-1-686
tfinardi@debian5:/lib/modules$ cd 2.6.26-1-686
tfinardi@debian5:/lib/modules/2.6.26-1-686$ ls
kernel          modules.dep          modules.isapnpmap  modules.seriomap
modules.alias   modules.ieee1394map  modules.ofmap      modules.symbols
modules.ccwmap  modules.inputmap     modules.pcimap     modules.usbmap
tfinardi@debian5:/lib/modules/2.6.26-1-686$

Abaixo do diretório acima referido, os módulos são divididos e organizados em pastas, de acordo com o tipo de dispositivo a que se destinam. Por exemplo, abaixo listamos a localização e o conteúdo da pasta “net“, que contém os módulos que dão suporte as interfaces de rede suportadas nesta versão do kernel:

Diretório onde se encontram os módulos de placas de rede

tfinardi@debian5:/lib/modules/2.6.26-1-686$ pwd
/lib/modules/2.6.26-1-686
tfinardi@debian5:/lib/modules/2.6.26-1-686$ cd kernel/net
tfinardi@debian5:/lib/modules/2.6.26-1-686/kernel/net$ ls
802        ax25       dccp       ipv6  llc        rose    tipc
8021q      bluetooth  decnet     ipx   mac80211   rxrpc   wanrouter
9p         bridge     econet     irda  netfilter  sched   wireless
appletalk  can        ieee80211  key   netrom     sctp    x25
atm        core       ipv4       lapb  rfkill     sunrpc  xfrm
tfinardi@debian5:/lib/modules/2.6.26-1-686/kernel/net$

Quando compilamos um novo kernel, também precisamos compilar os seus módulos e, instala-los abaixo de “/lib/modules“. Uma versão de kernel, não pode utilizar os módulos de outra versão, ou vice versa, portanto, devem existir tantos diretórios de módulos, quantas forem as versões de kernel que forem compiladas.

Bom pessoal, aqui finalizamos a segunda parte, onde falamos sobre módulos do kernel, não deixem de ler a Parte 1 – Entendendo o Kernel, no próximo post veremos sobre o “Gerenciamento de módulos do kernel“.

Até a próxima!