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

10

Je me demande depuis quelques jours comment ça marche exactement. Nous pouvons définir des paramètres d'exécution du noyau en utilisant sysctl ou echo boolen 1> /proc/sys/module/exactParametermais /sys/modules/module/parameters/parameternous pouvons également définir des valeurs.

Les paramètres des modules sont-ils /proc/sys/liés uniquement au disque dur dans le noyau? ou il pourrait également y avoir des paramètres pour les modules du noyau chargeables?

LKM après avoir été chargé dans le noyau en cours d'exécution révèle leurs paramètres dans /sys/modules/module/paraeter/params. Est-ce à dire qu'il n'y a pas de paramètres pour les modules compilés dans le noyau?

Quelle est la différence entre les deux répertoires.

ast
la source

Réponses:

5

Il y a peu de relation entre /proc/syset /sysautre que le fait que les deux sont des interfaces noyau et une coïncidence de noms.

/proc/sysest une interface vers sysctl , qui sont des paramètres de configuration du noyau. La lecture ou la modification /proc/sys/foo/baréquivaut à obtenir ou à définir le foo.barsysctl. Les valeurs Sysctl sont organisées par catégories sémantiques, elles ne sont pas intrinsèquement liées à la structure du noyau. De nombreuses valeurs sysctl sont des paramètres présents sur chaque système Linux, quels que soient les pilotes ou les fonctionnalités compilés; certains sont liés à des fonctionnalités optionnelles (par exemple certains protocoles réseau) mais jamais à des périphériques matériels spécifiques.

/sys/moduleest, comme son nom l'indique, une interface avec les modules du noyau. Chaque répertoire correspond à un module du noyau. Vous pouvez lire et parfois modifier les paramètres du module fooen écrivant dans /sys/module/foo/parameters/*.

Les composants chargés dans le noyau lisent leurs paramètres depuis la ligne de commande du noyau. Ces paramètres ne peuvent pas être définis lors de l'exécution (du moins pas via une interface générée automatiquement comme /sys/module: le composant peut exposer une interface personnalisée pour cela).

Gilles 'SO- arrête d'être méchant'
la source
Donc, pour les modules compilés dans le noyau, je ne peux ajouter des paramètres que via la ligne de commande du noyau (comme: / proc / cmdline). Il n'y a pas d'autre moyen de les changer au moment de l'exécution? Ai-je bien compris? Alors, quels sont exactement ces paramètres du noyau (configuration)? Je pensais que ce sont des paramètres modifiables de certains modules compilés dans le noyau
ast
@ast Les paramètres sysctl sont documentés dans la documentation Documentation/sysctl/*.txtdu noyau Linux. Il s'agit d'un ensemble de paramètres qui s'appliquent principalement quelles que soient les fonctionnalités et les pilotes compilés dans un noyau particulier.
Gilles 'SO- arrête d'être méchant'
merci beaucoup, j'essayais de comprendre pleinement cette relation et j'ai passé 3 jours à lire beaucoup de choses pour trouver une réponse.
ast
3

Le document " Le système de fichiers sysfs " de Patrick Mochel vous donnera un bien meilleur aperçu de l'objectif et de l'histoire de /sysce qui se trouvera dans cette boîte. Citant le résumé:

sysfs est une fonctionnalité du noyau Linux 2.6 qui permet au code du noyau d'exporter des informations vers les processus utilisateur via un système de fichiers en mémoire. L'organisation de la hiérarchie des répertoires du système de fichiers est stricte et repose sur l'organisation interne des structures de données du noyau. Les fichiers créés dans le système de fichiers sont (principalement) des fichiers ASCII avec (généralement) une valeur par fichier. Ces fonctionnalités garantissent que les informations exportées sont précises et facilement accessibles, faisant de sysfs l'une des fonctionnalités les plus intuitives et utiles du noyau 2.6.

En réponse à votre question spécifique "Le module noyau chargeable obtient-il une représentation /sys?" la réponse est "oui, si l'auteur du module fournit une interface". Cela peut être facilement démontré en montrant combien de modules chargés ont des entrées correspondantes dans/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
…

qui sur mon système montre que 73 des 73 modules chargeables ont une entrée correspondante dans /sys/module.

msw
la source
J'ai trouvé des informations en particulier sur / sys / modules /, qu'il y a toujours chaque LKM et module_param (nom, type, perm) impacte l'apparence des paramètres de répertoire. Mais j'ai encore des questions sur sysctl et / proc / sys, où nous pouvons définir les paramètres d'exécution du noyau. Pourquoi n'est-il pas possible d'employer / sys / modules? Et où définissons-nous les paramètres des modules compilés par le noyau (/ sys / modules / ou dans / proc / sys / aussi)? Peut - être que je mélange les options du noyau avec des paramètres du module (je pensais que ce sont les mêmes) si l' aide du paramètre Module sysctl je définir ou certaines fonctionnalités du noyau
ast