Existe-t-il un moyen standard de répertorier les valeurs des paramètres d'un module Linux chargé? Je cherche essentiellement une autre réponse à cette question question sur les paramètres du module du noyau Linux , car le module qui m'intéresse n'a pas de /sys/modules/<module_name>/parameters
interface.
Vous pouvez le faire en utilisant cette commande simple à 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 une sortie comme celle-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 t'aides.
Vous pouvez utiliser la commande systool -vm <Module name>
. Il est fourni avec le package 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 pouvez utiliser la commande " 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)
Quant à obtenir les paramètres des modules chargés, essayez de combiner la commande modinfo avec un simple "lsmod | awk '{print $ 1}'" "
Un péché:
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
Serait laid en tant que 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 modinfo mais je n'ai pas pu en trouver.
Je ne suis pas un expert, mais la différence ici est que modinfo lit le fichier de module lui-même pour les paramètres en regardant dans les en-têtes elf .modinfo, tandis que sys les lit à partir de sa variante d'exécution.
Il peut être possible d'avoir des paramètres que vous pouvez modifier au moment de l'exécution qui n'apparaissent pas comme une valeur de paramètre modinfo, mais comme le format du module doit être assez fixe, je ne pense pas qu'il soit possible pour vous de passer un paramètre d'option à un module lors du chargement sans il y a une structure .modinfo pour elle liée.
Je suis curieux, votre module suggère-t-il qu'il existe des paramètres passables avec modinfo lorsque vous le vérifiez de cette façon, mais il n'y en a pas dans/sys? Certes, sur mon système, je n'ai pu trouver aucun exemple de cela en utilisant la commande fournie ci-dessus.
Pour iwlwifi et d'autres modules, j'ai utilisé ceci:
grep [[:alnum:]] /sys/module/iwl*/parameters/*
et j'obtiens cette sortie:
/sys/module/iwlmvm/parameters/init_dbg:N
/sys/module/iwlmvm/parameters/power_scheme:2
/sys/module/iwlmvm/parameters/tfd_q_hang_detect:Y
/sys/module/iwlwifi/parameters/11n_disable:0
/sys/module/iwlwifi/parameters/amsdu_size:0
/sys/module/iwlwifi/parameters/antenna_coupling:0
/sys/module/iwlwifi/parameters/bt_coex_active:Y
/sys/module/iwlwifi/parameters/d0i3_disable:Y
/sys/module/iwlwifi/parameters/d0i3_timeout:1000
/sys/module/iwlwifi/parameters/disable_11ac:N
/sys/module/iwlwifi/parameters/fw_monitor:N
/sys/module/iwlwifi/parameters/fw_restart:Y
/sys/module/iwlwifi/parameters/lar_disable:N
/sys/module/iwlwifi/parameters/led_mode:0
/sys/module/iwlwifi/parameters/nvm_file:(null)
/sys/module/iwlwifi/parameters/power_level:0
/sys/module/iwlwifi/parameters/power_save:N
/sys/module/iwlwifi/parameters/swcrypto:0
/sys/module/iwlwifi/parameters/uapsd_disable:3
Donc je suppose que vous pourriez essayer quelque chose comme:
grep [[:alnum:]] /sys/module/<module_name>/parameters/*
Faites-moi savoir si cela fonctionne pour vous.
En travaillant avec le travail de katriel, vous pouvez obtenir un one-liner (certes laid) en combinant les deux dans une boucle bash:
for i in `lsmod | awk '{print $1}'`; do echo "$i: "; modinfo $i | grep parm; done