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.
Réponses
Trop de publicités?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.
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"
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
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
Ç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
.
- Réponses précédentes
- Plus de réponses