>_Módulos do kernel

Gerenciar / Consultar o Kernel e Módulos de Kernel

No linux, o código para dispositivos do sistema pode ser ser compilado dentro do kernel. Devido ao fato de o Kernel já ter suporte interno para a maioria dos dispositivos, diz-se que ele é monolítico, uma vez que o Kernel gerecencia todo o hardware do sistema sozinho. Os Kernels monolíticos não são muito flexíveis, porque torna-se necessário uma nova construção do Kernel para que novos dispositivos periféricos sejam adicionados ao sistema.

Kernels monolíticos também têm o potencial de se tornarem “sobrecarregados” de drives para hardwares que não estejam fisicamente instaldos.

Kernel modulares

Kernel modulares, são os mais usados  na maioria dos usuário, nos quais os drives dos dispositivos são inseridos no kernel em execução, conforme se fação necessários. As configurações modulares podem se adaptar a modificações no hardware e fornecem uma maneira conveniente de se fazer upgrade do software do driver, enquanto o sistema está rodando.

Arquivos de Módulos

Os módulos do Kernel do Linux são arquivos de objetos .o produzido pelo compilador C, mas não vinculados a um executável completo (neste caso, o arquivo executável do Kernel). A maioria dos módulos é distribuída com o Kernel e compilado junto com ele.

Os módulos são armazenados em /lib/modules/kernel-version, onde kernel-version é a string relatada por uname -r.

Os diretórios dos módulos estão disponíveis mútiplas hierarquias de módulos em /lib/modules. Dentro de cada hierarquia do Kernel-version há um subdiretório Kernel que contém os módulos, classificados por categoria em subdiretórios adicionais.

Manipulando Módulos

Os módulos são dinamicamente vinculados ao Kernel em execução quando são carregados. A maior parte do trabalho com os módulos, no Linux, é feita automaticamente pelo Kernel. Entretanto, poderá haver situações em que será necessário que manipule os módulos você mesmo, e você poderá se deparar com comandos de manipulação em scripts.

Comandos necessários

lsmod – Para cada módulo do Kernel carregado, exibe o seu nome, tamanho, contagem de uso e uma lista de outros módulos que se referem a ele. Este comando gera as mesmas informações que se encontram disponíveis em /proc/modules.

lsmod

insmod – Insere módulos no Kernel em execução. O módulo é localizado e inserido automaticamente.

opções:

-s Direciona a saída para o syslog, em vez de para stdout

-v Ativa o modo verbose

rmmod – O comando rmmod é usando para remover módulos do Kernel em execução. Caso o módulo esteja sendo usado ou referenciado por outro módulo, o comando falhará.

opções:

-a Remove tods os módulos não-utilizados

-s Direciona a saída para o syslog, em vez de para stdout

O comando modprobe -r pode ser usando para se determinar automaticamente essas dependências e remover módulos e os seus pré-requisitos.

rmmod

modinfo – Exibe informações sobre um módulo a partir do seu arquivo_de_obejto. Alguns módulos não contém nenhuma informação, alguns têm uma pequena descrição de uma linha e outros possuem uma mensagem razoavelmente descirta.

opções:

-a Exibe o autor do módulo

-d Exibe a descrição do módulo

-p Exibe os parâmetros com tipo definido que o módulo suporta

modinfo

modprobe – Assim como insmod, modprobe é usando para se inserir módulos. Na verdade, modprobe é um wrapper para insmod, propiciando-lhe funcionalidades adicionais. Além de carregar módulos individuais, modprobe é capaz de carregar módulos junto com os seus pré-requisitos, ou então todos os módulos armazenados em um diretório específico. O comando modprobe também é capaz de remover módulos com a opção -r.

O comando modprobe determina as relações de pré-requistos entre os módulos lendo o arquivo modules.dep do nível mais alto da hierarquia do diretório dos módulos.

opções:

-a Carrega todos os módulos. Quando usado com -t modulestype, retringe-se aos módulos do diretório modulestype.

-c Exibe uma configuração completa do módulo, incluindo padróes e diretivas encontrados em /etc/modules.conf ou /etc/conf.modules, em sistema mais antigos.

-l Lista os módulos. Quando usado com -t moduletype, lista apenas os módulos do diretório moduletype.

-r Remove o módulo, semelhante a rmmod. Podem ser especificado múltiplos módulos.

-s Direciona a saída para syslog, em vez de para stdout.

-t modulestype Tenta carregar múltiplos módulos, encontrados no diretório moduletype, até que um módulo tenha sucesso ou que todos tenham sido tentados. Esta ação consulta o hardware, como por exemplo, um adaptador de rede ( em cujo caso o moduletype seria net, representado /lib/modules/kernel-version/kernel/net.

-v Ativa o modo verbose

modprobe

Configurando Módulos

Em alguns casos, você poderá precisar controlar elementos de um módulo, tais como atribuições de interrupcões de hardware ou seleções de canais DMA. Outras situações poderão exigir procedimentos especiais para se preparar para, ou normalizar o sistema após, uma inserção ou remoção de módulo. Esse controle especial dos módulos é implementado no arquivo de configuração /etc/modules.conf, o qual controla o comportanto de modprobe. O arquivo /etc/modules.conf pode conter as seguintes informações:

comentários – Linhas em branco e linhas começando com # são ignoradas

keep – O parâmetro keep, quando colocado antes de quiasquer diretivas path, faz com que os paths-padrão sejam mantidos e adicionados aos novos paths especificados.

depfile=caminho_completo – Esta diretiva substitui a localização padrão do arquivo de dependência dos módulos, modules.dep.

path=caminho_diretório – Está diretiva especifica um diretório onde os módulos dever ser procurados.

options módulo opt=val1 opt=val2 … – As opções para módulos podem ser especificados usando-se a linha de configuração de opções em modules.conf ou na linha de comando de modprobe. A linha de comando substitui as configurações do arquivo. módulo é o nome de um módulo individual, sem a extensão .so As opções são especificadas como pares de nome=valor, onde o nome é entendido pelo módulo e relatado usando-se modinfo -p.

alias – Aliases podem ser usado para associar um nome genérico a um módulo específico.

pre-install módulo comando – Esta diretiva faz com que algum comando do shell seja executado antes da inserção de módulo. Por exemplo os serviços PCMCIA precisam ser iniciados antes de se instalar o módulo pcmcia_core.

install módulo comando – Esta diretiva permite que um comando específico do shell substitua o comando padrão de inserção de módulos.

post-install módulo – Esta diretiva faz com que algum comando do shell seja executado após inserção de módulo.

pre-remove módulo – Esta diretiva faz com que algum comando do shell seja executado antes da remoção do módulo.

remove módulo – Esta diretiva permite que um comando específico do shell substitua o comando padrão de remoção do módulo.

post-remove módulo – Esta diretiva faz com que algum comando do shell seja executado após a remoção do módulo.

Arquivo de Dependência dos Módulos

modprobe é capaz de determinar dependência de módulos e de instalar módulos pré-requisitados automaticamente. Para isso, modprobe vasculha a primeira coluna do /lib/modules/kernel-version/modules.dep em busca do módulo que precisa instalar.

Todos os módulos disponíveis no sistema se encontram listados no arquivo modules.dep e são referidos pelos seus paths e nomes de arquivos completos, incluindo a extensão .o Aqueles que não são dependentes de outros módulos são listados também, mas sem dependências. As dependências são primeiramente inseridas no kernel por modprobe e, após todas terem sido inseridas com sucesso, o módulo em questão pode ser carregado.

O arquivo modules.dep deve ser mantido atualizado para garantir a operação correta de modprobe.

O comando depmod -a recria e sobrescreve modules.dep cada vez que o sistema é inicializado. O comando depmod na verdade é um link para o mesmo executável que modprobe.

Fonte desse post – Certificação Linux LPI O’ REILLY.

>_Módulos do kernel
Tagged on:

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

%d blogueiros gostam disto: