Módulos

Módulos carregáveis do kernel podem economizar memória e facilitar a configuração. O escopo dos modulos cresceu para incluir sistemas de arquivos, drivers de placas ethernet, drivers para fita, drivers para impressora e muito mais.

Instalação do module utilities

Os utilitários para módulos (module utilities) estão disponíveis a partir do local onde são encontrados os fontes do kernel, como modutils-x.y.z.tar.gz; escolha o nível mais alto do patch x.y.z é igual ou menor do que o kernel atual. Descompacte com `tar zxvf modutils-x.y.x.tar.gz', cd para o diretório criado (modutils-x.y.z), leia o README e siga as instruções de instalação (geralmente simples, tal como make install. Será necessário ter os programas insmod, rmmod, ksyms, lsmod, genksyms, modprobe e depmod em /sbin. Caso deseje, teste os utilitários com o driver exemplo ``hw'' com insmod; leia o arquivo INSTALL do subdiretório para mais detalhes.

insmod carrega um módulo no kernel que está sendo executado. Módulos geralmente possuem a extensão .o; o exemplo de driver mencionado anteriormente é chamado drv_hello.o, para carregá-lo, use insmod drv_hello.o. Para ver os módulos que o kernel está usando atualmente, use lsmod. Sua saída é semelhante a:


    blah# lsmod
    Module:        #pages:  Used by:
    drv_hello          1
`drv_hello' é o nome do módulo, ele usa uma página (4k) de memória, e nenhum outro módulo do kernel depende dele no momento. Para remover este módulo, use `rmmod drv_hello'. Perceba que o rmmod precisa do nome do módulo, e não do nome do arquivo. Para listar o nome dos módulos, use o lsmod. Os propósitos dos outros utilitários para módulos são documentados em suas páginas de manual (man pages).

Módulos distribuídos com o kernel

A partir da versão 2.0.30, quase tudo ficou disponível como um módulo carregável. Para usá-los, primeiramente certifique-se de que eles não foram configurados no kernel comum; isto é, não responda y durante o `make config'. Compile um novo kernel e reinicialize a máquina com este novo kernel. Então, cd para /usr/src/linux novamente, e execute o `make modules. Isto vai compilar todos os módulos que não foram incluídos no kernel e colocá-los em /usr/src/linux/modules. Os módulos podem ser utilizados a partir deste diretório ou execute `make modules_install', para instalar os módulos em /lib/modules/x.y.z, onde x.y.z é a versão do kernel.

Isso pode ser especialmente útil com sistemas de arquivos. Você pode não usar o sistemas de arquivos minix ou msdos frequentemente. Por exemplo, se eu encontro um disquete msdos, eu posso insmod /usr/src/linux/modules/msdos.o, e depois rmmod msdos quando terminar. Este procedimento economiza em torno de 50k de RAM dentro do kernel durante a operação normal. Uma pequena nota sobre o sistema de arquivos minix: você deve sempre configurá-lo diretamente dentro do kernel, para usá-lo em discos de emergência (rescue disk).