Módulo do núcleo (Linux)
Origem: Wikipédia, a enciclopédia livre.
Um Módulo do núcleo do Linux, é um arquivo de código objeto que contém instruções para estender o núcleo base do Linux. Eles são utilizado tipicamente para adicionar suporte a hardware, sistemas de arquivo ou para adicionar funções do núcleo. Quando a funcionalidade provida por um destes módulos não é mais necessária, ele pode ser descarregado do núcleo, liberando memória para o sistema.
Índice |
[editar] Descrição
Sem os módulos carregáveis do núcleo, as distribuições Linux teriam que incluir nos núcleos todos as funcionalidades possíveis, adicionando este código antecipadamente na imagem do kernel distribuído. Esta abordagem, além de gerar grandes imagens do núcleo, faria com que o usuário tivesse que recompilar o núcleo toda vez que uma nova funcionalidade fosse necessária.
[editar] Localização
Não há restrição técnica sobre em que local da hierarquia de arquivos os módulos devem ser colocados, porém, por convenção, eles são usualmente instalados no diretório /lib/modules/
, que é dividido em subdiretórios de versões do kernel e categorias de módulos.
[editar] Licença
Na opinião dos mantenedores do núcleo do Linux, os módulos são trabalho derivado deste núcleo. Os mantenedores toleram a distribuição de módulos proprietários mas fazem com que os símbolos sejam disponíveis apenas para os módulos que adotem a licença GPL.
Carregar um módulo proprietário irá "contaminar" o núcleo sendo executado, levando a que quaisquer problemas ou bugs encontrados não serão investigados pelos mantenedores. Como o módulo é parte do núcleo sendo executado, eles podem corromper estruturas de dados ou introduzir erros que não podem ser investigados devido a natureza proprietária do módulo em questão.
[editar] Versão dos símbolos
Devido ao íntimo relacionamento entre os módulos carregáveis e o núcleo base, diferenças relativamente pequenas nas estruturas internas ou métodos podem resultar em problemas. Para mitigar este problema, inclui-se versões dos símbolos na seção .modinfo do ELF dos módulos.
A versão pode ser comparada com o núcleo sendo executado e, se incompatível, o módulo não será carregado.
[editar] Penalidade devido a fragmentação
Uma crítica em relação a utilização dos módulos, reside no fato que a memória de um núcleo que suporta módulos carregáveis é fragmentada, ao contrário da abordagem estática (todas as funcionalidades compiladas no núcleo) em que a memória é contígua. Esta fragmentação levaria a uma pequena diminuição no desempenho do núcleo.
[editar] Segurança
Módulos carregáveis são um modo conveniente de modificar o núcleo, o problema é que, em tese pelo menos, isto poderia ser utilizado por um usuário mal intencionado, que poderia fazer o sistema ignorar os seus processos e arquivos, permitindo que ele tomasse o controle total do sistema.