127 votes

Comment lister les valeurs des paramètres des modules Linux chargés ?

Existe-t-il un moyen standard de lister les valeurs des paramètres d'un module Linux chargé ? Je cherche essentiellement une autre réponse à cette question Question sur les paramètres des modules du noyau Linux parce que le module qui m'intéresse n'a pas un /sys/modules/<module_name>/parameters interface.

81voto

RaSca Points 695

Vous pouvez le faire en utilisant cette simple commande à sens unique, qui utilise les systèmes de fichiers virtuels /proc/modules et /sys :

cat /proc/modules | cut -f 1 -d " " | while read module; do \
 echo "Module: $module"; \
 if [ -d "/sys/module/$module/parameters" ]; then \
  ls /sys/module/$module/parameters/ | while read parameter; do \
   echo -n "Parameter: $parameter --> "; \
   cat /sys/module/$module/parameters/$parameter; \
  done; \
 fi; \
 echo; \
done

Vous obtiendrez un résultat comme celui-ci :

...
...
Module: vboxnetadp

Module: vboxnetflt

Module: vboxdrv
Parameter: force_async_tsc --> 0

Module: binfmt_misc

Module: uinput

Module: fuse
Parameter: max_user_bgreq --> 2047
Parameter: max_user_congthresh --> 2047

Module: md_mod
Parameter: new_array --> cat: /sys/module/md_mod/parameters/new_array: Permission denied
Parameter: start_dirty_degraded --> 0
Parameter: start_ro --> 0

Module: loop
Parameter: max_loop --> 0
Parameter: max_part --> 0

Module: kvm_intel
Parameter: emulate_invalid_guest_state --> N
Parameter: ept --> Y
Parameter: fasteoi --> Y
Parameter: flexpriority --> Y
Parameter: nested --> N
Parameter: ple_gap --> 0
Parameter: ple_window --> 4096
Parameter: unrestricted_guest --> Y
Parameter: vmm_exclusive --> Y
Parameter: vpid --> Y
Parameter: yield_on_hlt --> Y

Module: kvm
Parameter: allow_unsafe_assigned_interrupts --> N
Parameter: ignore_msrs --> N
Parameter: min_timer_period_us --> 500

Module: tpm_infineon

Module: joydev

Module: snd_hda_codec_hdmi
Parameter: static_hdmi_pcm --> N
...
...

J'espère que cela vous aidera.

63voto

cdauth Points 822

Vous pouvez utiliser la commande systool -vm <Module name> . Il est livré avec le sysfsutils sur la plupart des systèmes.

Voici à quoi ressemblera la sortie, il y a une section Parameters :

linux ~ # systool -vm btusb
Module = "btusb"

  Attributes:
    coresize            = "40960"
    initsize            = "0"
    initstate           = "live"
    refcnt              = "0"
    srcversion          = "D69A7EC073BC0145C2DE5C3"
    taint               = ""
    uevent              = <store method only>
    version             = "0.8"

  Parameters:
    disable_scofix      = "N"
    force_scofix        = "N"
    reset               = "Y"

  Sections:
    .bss                = "0xffffffffa090d800"
    .data               = "0xffffffffa090d000"
    .exit.text          = "0xffffffffa09096ff"
    .gnu.linkonce.this_module= "0xffffffffa090d4c0"
    .init.text          = "0xffffffffa0910000"
    .note.gnu.build-id  = "0xffffffffa090a000"
    .rodata             = "0xffffffffa090b060"
    .rodata.str1.1      = "0xffffffffa090a024"
    .rodata.str1.8      = "0xffffffffa090a2b0"
    .smp_locks          = "0xffffffffa090af84"
    .strtab             = "0xffffffffa0912668"
    .symtab             = "0xffffffffa0911000"
    .text               = "0xffffffffa0905000"
    __mcount_loc        = "0xffffffffa090c3d8"
    __param             = "0xffffffffa090c360"
    __verbose           = "0xffffffffa090d0f8"

19voto

PaulCo Points 121
grep -H '' /sys/module/ath9k*/parameters/*

/sys/module/ath9k/parameters/blink:1
/sys/module/ath9k/parameters/bt_ant_diversity:0
/sys/module/ath9k/parameters/btcoex_enable:0
/sys/module/ath9k/parameters/nohwcrypt:1
/sys/module/ath9k/parameters/ps_enable:0

grep -H '' /sys/module/acpi_cpufreq/parameters/*
/sys/module/acpi_cpufreq/parameters/acpi_pstate_strict:0

16voto

katriel Points 4399

Vous pourriez utiliser le " modinfo(8) "pour obtenir les paramètres de temps de chargement disponibles pour un module. Par exemple :

# modinfo e100 | grep parm
parm:           debug:Debug level (0=none,...,16=all) (int)
parm:           eeprom_bad_csum_allow:Allow bad eeprom checksums (int)
parm:           use_io:Force use of i/o access mode (int)

Pour obtenir les paramètres des modules chargés, essayez de combiner la commande modinfo avec un simple "lsmod | awk '{ print $1 }'".

Comme dans :

lsmod | awk '{print $1 }'combi > myfile.txt
tail -n +2 myfile.txt > myfile.txt.tmp && mv myfile.txt.tmp myfile.txt
while read -r LINE; do echo "$LINE">>results.txt;modinfo "$LINE" | grep ^desc>>results.txt;modinfo "$LINE" | grep parm>> results.txt; done < myfile.txt

2voto

Matthew Ife Points 22370

Ça serait moche comme commentaire, mais j'ai fait cette vérification sur mon système

cat /proc/modules  | cut -d " " -f1 | while read mod; do
   test -d /sys/module/$mod/parameters || echo modinfo $mod | grep parm; 
done

Pour vérifier si les modules sans paramètres dans /sys apparaissent comme ayant des paramètres dans le modinfo mais je n'en ai pas trouvé .

~~

Je ne suis pas un expert, mais la différence ici est que modinfo lit le fichier module lui-même pour les paramètres en regardant dans les en-têtes .modinfo elf, alors que sys les lit depuis sa variante d'exécution.

Il peut être possible d'avoir des paramètres que vous pouvez modifier à l'exécution et qui n'apparaissent pas comme une valeur de paramètre de modinfo, mais puisque le format du module doit être assez fixe, je ne pense pas qu'il soit possible de passer un paramètre d'option à un module lors du chargement. sans qu'il existe une structure .modinfo liée à celle-ci.

~~

Est-ce que votre module suggère qu'il y a des paramètres passables avec modinfo quand vous le vérifiez de cette façon mais il n'y en a pas dans /sys pour lui ? En tout cas, sur mon système, je n'ai pas pu trouver d'exemples de cela en utilisant la commande fournie ci-dessus.

EDIT : Tout ceci est faux étant donné que si vous vérifiez réellement ce que j'ai fait, vous noterez que echo mod $mod | grep parm n'aboutira jamais à une réponse.

Si vous faites ce qui suit à la place..

cat /proc/modules  | cut -d " " -f1 | while read mod; do
    test -d /sys/module/$mod/parameters || (modinfo $mod | grep parm && echo $mod)
done

Vous trouverez toutes sortes de modules qui ne contiennent pas d'élément de type parameters dans le répertoire /sys/module/$mod mais ont des paramètres contenus dans leurs instances au moment de l'exécution.

Inversement, vous pouvez aussi faire cela :

for mod in $(cat /proc/modules | cut -d" " -f1; do
  if [ -d /sys/module/$mod/parameters ]; then 
    for p in /sys/module/$mod/parameters/*; do 
      p=$(basename $p)
      modinfo $mod -F parm | grep -q $p || echo $mod $p
    done;
  fi;
done

Pour trouver des exemples de modules qui ont une valeur de paramètres en /sys/module/$mod/parameters mais dont ont un jeu de paramètres dans modinfo .

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X