/ proc / sys vs / sys / modules / mod / parâmetro

10

Estive pensando nos últimos dias como exatamente isso funciona. Podemos definir parâmetros de tempo de execução do kernel usando sysctl ou echo boolen 1> /proc/sys/module/exactParametermas /sys/modules/module/parameters/parametertambém podemos definir valores.

Os parâmetros dos módulos estão /proc/sys/relacionados apenas ao hard-compliance no kernel? ou pode haver parâmetros para módulos carregáveis ​​do kernel também?

O LKM após ser carregado no Kernel em execução revela seus parâmetros no /sys/modules/module/paraeter/params. Significa que não existem parâmetros para os módulos compilados no Kernel?

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

ast
fonte

Respostas:

5

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

/proc/sysé uma interface para o sysctl , que são parâmetros de configuração do kernel. Ler ou modificar /proc/sys/foo/baré equivalente a obter ou configurar o foo.barsysctl. Os valores do sysctl são organizados por categorias semânticas, não estão intrinsecamente relacionados à estrutura do kernel. Muitos valores sysctl são configurações presentes em todos os sistemas Linux, independentemente dos drivers ou recursos compilados; alguns estão relacionados a recursos opcionais (por exemplo, certos 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, algumas vezes, modificar os parâmetros do módulo foo, escrevendo para /sys/module/foo/parameters/*.

Os componentes carregados no kernel leem seus parâmetros na linha de comando do kernel. Esses parâmetros não podem ser configurados em 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).

Gilles 'SO- parar de ser mau'
fonte
Portanto, para os módulos compilados no Kernel, só posso adicionar parâmetros através da linha de comando do kernel (como: / proc / cmdline). Não há outra maneira de alterá-los em tempo de execução? Eu entendi certo? Então, o que exatamente são esses parâmetros do kernel (configuração)? Eu pensei que eles são parâmetros changable de alguns módulos compilados em Kernel
ast
@ast Os parâmetros sysctl estão documentados na documentação Documentation/sysctl/*.txtdo kernel do Linux. É um conjunto de parâmetros que se aplicam principalmente, independentemente de quais recursos e drivers são compilados em um kernel específico.
Gilles 'SO- stop be evil' em
muito obrigado, eu estava tentando entender completamente esse relacionamento e passei três dias lendo muitas coisas para encontrar resposta.
AST
3

O artigo " O sistema de arquivos sysfs ", de Patrick Mochel, fornecerá uma visão geral muito melhor do objetivo e do histórico do /sysque caberá nesta caixa. Citando o resumo:

O sysfs é um recurso do kernel Linux 2.6 que permite que o código do kernel exporte informações para os processos do usuário por meio de um sistema de arquivos na memória. A organização da hierarquia de diretórios do sistema de arquivos é rigorosa e baseia a organização interna das estruturas de dados do kernel. Os arquivos criados no sistema de arquivos são (principalmente) arquivos ASCII com (geralmente) um valor por arquivo. Esses recursos garantem que as informações exportadas sejam precisas e facilmente acessíveis, tornando o sysfs um dos recursos mais intuitivos e úteis do kernel 2.6.

Em resposta à sua pergunta específica "O módulo do kernel carregável obtém uma representação /sys?" a resposta é "sim, se o autor do módulo fornecer uma interface". Isso pode ser facilmente demonstrado, mostrando quantos módulos carregados têm entradas correspondentes no/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 /sys/module.

msw
fonte
Encontrei informações especialmente sobre / sys / modules /, de que sempre há cada LKM e module_param (nome, tipo, perm) afeta a aparência dos parâmetros do diretório. Mas ainda tenho dúvidas sobre sysctl e / proc / sys, onde podemos definir os parâmetros de tempo de execução do Kernel. Por que não é possível empregar / sys / modules? E onde definimos parâmetros para os módulos compilados do Kernel (/ sys / modules / ou em / proc / sys / too)? Talvez eu misturar opções de kernel com parâmetros do módulo (eu pensei que eles são os mesmos), de modo usando sysctl I deve definir parâmetro módulo ou algumas funcionalidades do kernel
ast