/ proc / sys vs / sys / modules / mod / parameter

10

Eu tenho pensado nos últimos dias como exatamente isso funciona. Podemos definir parâmetros de tempos de execução do kernel usando sysctl ou echo boolen 1> /proc/sys/module/exactParameter , mas em /sys/modules/module/parameters/parameter também podemos definir valores.

Os parâmetros dos módulos em /proc/sys/ estão relacionados apenas ao disco rígido? ou pode haver parâmetros para módulos de kernel carregáveis também?

O LKM depois de ser carregado para o Kernel em execução revela seus parâmetros em /sys/modules/module/paraeter/params . Isso significa que não há parâmetros para módulos compilados no Kernel?

Qual é a diferença entre os dois diretórios?

    
por ast 31.08.2013 / 19:05

2 respostas

4

Há pouca relação entre /proc/sys e /sys além do fato de que ambos são interfaces de kernel e uma coincidência de nomes.

/proc/sys é uma interface para sysctl , que são parâmetros de configuração do kernel. Ler ou modificar /proc/sys/foo/bar é equivalente a obter ou definir o foo.bar sysctl. Os valores de Sysctl são organizados por categorias semânticas, eles não estão intrinsecamente relacionados à estrutura do kernel. Muitos valores de sysctl são configurações presentes em todos os sistemas Linux, independentemente de quais drivers ou recursos são compilados; alguns estão relacionados a recursos opcionais (por exemplo, determinados protocolos de rede), mas nunca a dispositivos de hardware específicos.

/sys/module é, como o nome indica, uma interface para os módulos do kernel. Cada diretório corresponde a um módulo do kernel. Você pode ler e, às vezes, modificar os parâmetros do módulo foo escrevendo para /sys/module/foo/parameters/* .

Componentes que são carregados no kernel lêem seus parâmetros a partir da linha de comando do kernel. Esses parâmetros não podem ser definidos no tempo de execução (pelo menos não através de uma interface gerada automaticamente como /sys/module : o componente pode expor uma interface personalizada para isso).

    
por 01.09.2013 / 22:21
3

O artigo " O sistema de arquivos sysfs "por Patrick Mochel lhe dará uma visão muito melhor da finalidade e do histórico de /sys do que caberá nesta caixa. Citando o resumo:

sysfs is a feature of the Linux 2.6 kernel that allows kernel code to export information to user processes via an in-memory filesystem. The organization of the filesystem directory hierarchy is strict, and based the internal organization of kernel data structures. The files that are created in the filesystem are (mostly) ASCII files with (usually) one value per file. These features ensure that the information exported is accurate and easily accessible, making sysfs one of the most intuitive and useful features of the 2.6 kernel.

Em resposta à sua pergunta específica "O módulo do kernel carregável recebe uma representação em /sys ?" a resposta é "sim, se o autor do módulo fornece uma interface". Isso pode ser facilmente demonstrado mostrando quantos módulos carregados têm entradas correspondentes em /sys/module

$ lsmod | awk '{print $1}' | sort > /tmp/lsmod
$ cd /sys/module ; ls > /tmp/sysmodule
$ comm -12 /tmp/lsmod /tmp/sysmodule
ahci
arc4
ath
ath9k
ath9k_common
ath9k_hw
bluetooth
bnep
cfg80211
…

que no meu sistema mostra que 73 dos 73 módulos carregáveis têm uma entrada correspondente em /sys/module .

    
por 01.09.2013 / 00:46