diferença entre / lib / module / $ (uname -r) e / sys / module

1

Peço desculpas se a consulta for muito simples. Mas eu quero perguntar se há uma diferença entre os módulos do sistema Linux e os módulos do kernel Linux. Se houver uma diferença, então onde ambos estão localizados. É que / lib / module / $ (uname -r) mostra módulos do kernel e / sys / module / shows módulos do sistema

    
por Raghav Chadha 23.09.2015 / 09:58

2 respostas

1

O diretório /sys/module/ mostra todos os módulos no sistema pelo nome como pastas com diversas informações necessárias ao sistema. O diretório /lib/module/$(uname -r) contém os arquivos do módulo do kernel, armazenados em uma hierarquia de pastas de acordo com suas funções.

Por exemplo, o arquivo do módulo de kernel do Watchdog de Software estaria em /lib/module/$(uname -r)/kernel/drivers/watchdog/softdog.ko . Por outro lado, este módulo tem seu próprio diretório "softdog" (o nome do módulo) em /sys/module/ com as informações usadas pelo sistema ao operar / inserir este módulo, mas não o arquivo do próprio módulo.

Você pode operar os módulos pelo nome com modprobe [args] <module-name> [module-params]

Você pode operar módulos por caminho para o arquivo .ko com insmod [args] <path> [module-params] .

Lembre-se de que os módulos do kernel operacionais exigem privilégios de root.

    
por 23.09.2015 / 10:18
2

/lib/module/$(uname -r) é um diretório no seu disco¹. Ele contém arquivos, a maioria dos quais ( *.ko ) são arquivos de módulo: arquivos que contêm o código de um módulo do kernel. Os arquivos neste diretório (e seus subdiretórios) contêm, em princípio, módulos que você pode carregar em seu kernel em execução.

/sys/module é um diretório em um sistema de arquivos virtual que expõe os internos do kernel. Acessar um arquivo nesse diretório invoca uma função no kernel que apenas observa algumas estruturas de dados internas do kernel, não vai mais longe em uma camada de disco. Cada entrada em /sys/module corresponde a um componente do kernel em execução, com o código carregado na memória e ativo. Isso inclui todos os módulos carregados, mas também os componentes que podem ser carregados como um módulo, mas foram construídos diretamente no kernel quando o kernel foi compilado.

Ter arquivos em /lib/module/$(uname -r) que não correspondem a uma entrada em /sys/module é muito comum: eles são drivers para alguma peça de hardware (ou outra coisa gerenciada pelo kernel) que você não tem em seu computador. Entradas em /sys/module com nenhum arquivo correspondente em /lib/module/$(uname -r) acontecem quando o componente foi construído no kernel ( aqui está como saber), ou se o módulo foi carregado manualmente a partir de um arquivo que está localizado em outro lugar (ou agora está excluído).

¹ Ou raramente em algo diferente de um disco, se o seu sistema mantém seu sistema de arquivos raiz em outro lugar, por exemplo, através da rede ou em um disco RAM.

    
por 24.09.2015 / 02:20