Módulo do núcleo (Linux)

Origem: Wikipédia, a enciclopédia livre.
Ir para: navegação, pesquisa
Question book.svg
Este artigo não cita fontes confiáveis e independentes. (desde dezembro de 2013). Por favor, adicione referências e insira-as corretamente no texto ou no rodapé. Conteúdo sem fontes poderá ser removido.
Encontre fontes: Google (notícias, livros e acadêmico)

Um Módulo do núcleo do Linux, é um arquivo de código objeto que contém instruções para estender o Linux. Eles são utilizados 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.

Descrição[editar | editar código-fonte]

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 núcleo 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.

Localização[editar | editar código-fonte]

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 núcleo e categorias de módulos.

Licença[editar | editar código-fonte]

Na opinião dos mantenedores 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 defeitos encontrados não sejam 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 à natureza proprietária do módulo em questão.

Versão dos símbolos[editar | editar código-fonte]

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.

Penalidade devido a fragmentação[editar | editar código-fonte]

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.

Segurança[editar | editar código-fonte]

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.

Ver também[editar | editar código-fonte]