Por que “lsmod | wc -l ”não é igual a“ ls / sys / module | wc -l ”

10

Por que esses dois comandos retornam resultados diferentes?

lsmod | wc -l
100

ls /sys/module | wc -l
138
    
por andy 19.09.2013 / 12:19

2 respostas

13

lsmod lista todos os seus módulos dinâmicos que são carregados.

As entradas em /sys/module correspondem aos módulos dinâmicos e módulos que são construídos no kernel (e possuem parâmetros que precisam ser acessíveis) em vez de serem carregados dinamicamente. Por exemplo:

[michael@brazzers:~]$ ls -d /sys/module/ip_tables/
/sys/module/ip_tables/
[michael@brazzers:~]$ lsmod |grep ^ip_tables
ip_tables              26995  3 iptable_filter,iptable_mangle,iptable_nat
[michael@brazzers:~]$ grep CONFIG_NF_NAT_IPV4 /boot/config-3.8.0-30-generic
CONFIG_NF_NAT_IPV4=m

Você pode ver aqui que o módulo iptables está configurado como um módulo dinâmico. Contraste para:

[michael@brazzers:~]$ ls -d /sys/module/apparmor/
/sys/module/apparmor/
[michael@brazzers:~]$ lsmod |grep ^apparmor
[michael@brazzers:~]$ grep APPARMOR /boot/config-3.8.0-30-generic 
CONFIG_SECURITY_APPARMOR=y

enquanto o apparmor está embutido.

    
por 19.09.2013 / 15:50
5
  • /sys/module/MODULENAME

MODULENAME é o nome do módulo que está no kernel. Este nome de módulo sempre aparecerá se o módulo for carregado como um módulo dinâmico. Isto é exatamente o que você pode ver quando você emite o comando lsmod ou quando você verifica o arquivo /proc/modules .

Se for construído diretamente no kernel, ele só aparecerá se tiver uma versão ou pelo menos um parâmetro. Os parâmetros disponíveis estão disponíveis no diretório:

  • /sys/module/MODULENAME/parameters
por 19.09.2013 / 12:33