/ proc / sys vs / sys / modules / mod / parametro


10

Mi chiedo da qualche giorno come funzioni esattamente. Possiamo impostare i parametri di runtime del kernel usando sysctl o echo boolen 1> /proc/sys/module/exactParameterma /sys/modules/module/parameters/parameterpossiamo anche impostare dei valori.

I parametri per i moduli sono /proc/sys/correlati solo al rispetto rigoroso nel kernel? o potrebbero esserci anche parametri per i moduli caricabili del kernel?

LKM dopo essere stato caricato nell'esecuzione del kernel rivela i loro parametri in /sys/modules/module/paraeter/params. Significa che non ci sono parametri per i moduli compilati in Kernel?

Qual è la differenza tra entrambe le directory.

Risposte:


5

C'è poca relazione tra /proc/syse /sysoltre al fatto che entrambe sono interfacce del kernel e una coincidenza di nomi.

/proc/sysè un'interfaccia per sysctl , che sono parametri di configurazione del kernel. Leggere o modificare /proc/sys/foo/barequivale a ottenere o impostare il foo.barsysctl. I valori di Sysctl sono organizzati per categorie semantiche, non sono intrinsecamente correlati alla struttura del kernel. Molti valori di sysctl sono impostazioni presenti su ogni sistema Linux indipendentemente da quali driver o funzionalità sono compilati; alcuni sono correlati a funzionalità opzionali (ad esempio determinati protocolli di rete) ma mai a dispositivi hardware specifici.

/sys/moduleè, come indica il nome, un'interfaccia per i moduli del kernel. Ogni directory corrisponde a un modulo del kernel. Puoi leggere, e talvolta modificare, i parametri del modulo fooscrivendo a /sys/module/foo/parameters/*.

I componenti caricati nel kernel leggono i loro parametri dalla riga di comando del kernel. Questi parametri non possono essere impostati in fase di esecuzione (almeno non attraverso un'interfaccia generata automaticamente come /sys/module: il componente può esporre un'interfaccia personalizzata per questo).


Quindi per i moduli compilati in Kernel, posso solo aggiungere parametri attraverso la riga di comando del kernel (come: / proc / cmdline). Non c'è altro modo per cambiarli in fase di esecuzione? Ho capito bene? Quindi quali sono esattamente questi parametri del kernel (configurazione)? Ho pensato che sono i parametri modificabile di alcuni moduli compilati nel kernel
AST

@ast I parametri sysctl sono documentati nella documentazione Documentation/sysctl/*.txtdel kernel Linux. È un insieme di parametri che si applicano principalmente a prescindere da quali caratteristiche e driver sono compilati in un particolare kernel.
Gilles 'SO- smetti di essere malvagio'

grazie mille, stavo cercando di comprendere appieno questa relazione e ho trascorso 3 giorni a leggere molte cose per trovare una risposta.
AST

3

L'articolo " The sysfs Filesystem " di Patrick Mochel ti fornirà una visione molto migliore dello scopo e della storia di quella /sysche si adatterà in questo riquadro. Citando l'abstract:

sysfs è una funzione del kernel Linux 2.6 che consente al codice del kernel di esportare informazioni nei processi utente tramite un file system in memoria. L'organizzazione della gerarchia di directory del file system è rigorosa e basata sull'organizzazione interna delle strutture di dati del kernel. I file creati nel file system sono (principalmente) file ASCII con (di solito) un valore per file. Queste caratteristiche assicurano che le informazioni esportate siano accurate e facilmente accessibili, rendendo sysfs una delle funzionalità più intuitive e utili del kernel 2.6.

In risposta alla tua domanda specifica "Il modulo caricabile del kernel ottiene una rappresentazione /sys?" la risposta è "sì, se l'autore del modulo fornisce un'interfaccia". Questo può essere facilmente dimostrato mostrando quanti moduli caricati hanno voci corrispondenti in/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
…

che sul mio sistema mostra che 73 su 73 moduli caricabili hanno una voce corrispondente /sys/module.


Ho trovato informazioni soprattutto su / sys / modules /, che ci sono sempre ogni LKM e module_param (nome, tipo, perm) influiscono sull'aspetto dei parametri della directory. Ma ho ancora domande su sysctl e / proc / sys, dove possiamo impostare i parametri di runtime del kernel. Perché non è possibile utilizzare / sys / module? E dove impostiamo i parametri per i moduli compilati del kernel (/ sys / modules / o anche in / proc / sys /)? Forse mi mescolo opzioni del kernel con i parametri del modulo (ho pensato che sono la stessa cosa), in modo da utilizzare sysctl devo impostare il parametro modulo o alcune funzionalità del kernel
ast
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.