Frage Wie lade ich geladene Linux-Modulparameterwerte auf?


Gibt es eine Standardmethode, um die Parameterwerte eines geladenen Linux-Moduls aufzulisten? Ich suche im Grunde nach einer anderen Antwort darauf Linux Kernel Modul Parameter Frageweil das Modul, an dem ich mich interessiere, kein a /sys/modules/<module_name>/parameters Schnittstelle.


65
2017-09-04 07:45


Ursprung


Alle bisherigen Antworten verdienen eine Downvote, weil sie das OP nicht sorgfältig gelesen haben ("das Modul, an dem ich interessiert bin nicht habe eine ... / Parameter-Schnittstelle ")! :-( - Dirk


Antworten:


Sie können dies tun, indem Sie diesen einfachen Einwegbefehl verwenden, der die virtuellen Dateisysteme / proc / modules und / sys verwendet:

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

Sie erhalten eine Ausgabe wie folgt:

...
...
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
...
...

Hoffe das hilft.


46
2018-05-17 10:21



Vielen Dank! Das ist sehr nützlich, um alle Arten von Problemen mit problematischer Hardware zu diagnostizieren! - Oz123
Erstaunlich, und wenn Sie $ Modul wie z. Funktionsparameter Anstatt es von / proc / modules zu bekommen, bekommt man leicht alle Parameter eines bestimmten Moduls. - igordcard
@RaSca - Hat eine dieser Antworten für dich funktioniert? - Dan Garthwaite
Am Anfang funktionierte das für mich nicht wie ich alias ls='ls -lah'. Das Entfernen des Alias ​​oder das Ausführen der Lösung als Skript funktionierte jedoch sehr gut. - David Farrell
Kombiniere dies mit einem grep in lsmod: lsmod | grep -i bluetooth> lsmodpattern.txt; cat lsmodpattern.txt | sed 's / | / /' | awk '{print $ 4}'> mustermodule.txt; cat mustermodule.txt | tr, '\ n' | während das Modul gelesen wurde; echo "Modul: $ modul"; if [-d "/ sys / Modul / $ Modul / Parameter"]; Dann ls / sys / Modul / $ Modul / Parameter / | während der Parameter gelesen wird; do echo -n "Parameter: $ parameter ="; cat / sys / Modul / $ Modul / Parameter / $ Parameter; erledigt; fi; erledigt - Ferroao


Sie können den Befehl verwenden systool -vm <Module name>. Es kommt mit dem sysfsutils Paket auf den meisten Systemen.

So sieht die Ausgabe aus, es gibt einen Abschnitt 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"

33
2017-07-08 22:32



Der Befehl systool ist Teil des Pakets sysfsutils. Und das ist die Antwort, denke ich, (könnte aber ein Beispiel ausgeben) - Volker Siegel


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

13
2017-08-22 15:49





Du könntest den "modinfo (8)"Befehl, um Ladezeitparameter für ein Modul zu erhalten. Zum Beispiel:

# 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)

Um die Parameter geladener Module zu erhalten, versuchen Sie, den Befehl modinfo mit einem einfachen "lsmod | awk '{print $ 1}" zu kombinieren.

Wie in:

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

6
2017-09-04 08:16



-1 Dies zeigt nur etwas wie eine Manpage, sagt aber nicht, was die Werte sind. - Aleksandr Levchuk


Würde als Kommentar hässlich rauskommen, aber ich habe diese Überprüfung auf meinem System gemacht ..

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

Um zu überprüfen, ob Module ohne Parameter in / sys in modinfo als Parameter enthalten sind, konnte ich keine finden.

Ich bin kein Experte, aber der Unterschied hier ist, dass modinfo liest die Moduldatei selbst für die Parameter durch den Blick in die .modinfo elf Header, während sys liest diese von seiner Laufzeitvariante.

Es kann möglich sein, Parameter zu haben, die Sie zur Laufzeit ändern können und die nicht als Modinfo-Parameterwert erscheinen, aber da das Modulformat ziemlich fest sein sollte, ist es nicht möglich, einen Optionsparameter beim Laden an ein Modul zu übergeben ohne es gibt eine .modinfo-Struktur, für die es verlinkt ist.

Ich bin neugierig, schlägt Ihr Modul vor, dass es Parameter gibt, die mit modinfo passierbar sind, wenn Sie es auf diese Weise überprüfen, aber es gibt keine in / sys dafür? Sicherlich konnte ich auf meinem System keine Beispiele dafür mit dem oben angegebenen Befehl finden.


1
2017-11-27 13:56





Ausgehend von katriels Arbeit kann man einen (zugegeben hässlichen) One-Liner bekommen, indem man die beiden in einer Bash-Schleife kombiniert:

for i in `lsmod | awk '{print $1}'`; do echo "$i: "; modinfo $i | grep parm; done

0
2018-06-13 19:58



Verwenden von awk, um einfach das erste Argument zurückzugeben print ist etwas grob - benutze die while read Syntax stattdessen: lsmod | while read a b; do echo $a:; modinfo $a | grep parm | sed -e 's/parm://'; done - Es ändert nicht die Tatsache, dass modinfo die Parameterwerte nicht zurückgibt, obwohl ... - the-wabbit
und ich denke, die ursprüngliche Frage war über die gebraucht Parameter, nicht die verfügbar Einsen. - asdmin


Für iwlwifi und andere Module habe ich das verwendet:

 grep [[:alnum:]] /sys/module/iwl*/parameters/*

und ich bekomme diese Ausgabe:

 /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

Ich denke, du könntest etwas ausprobieren wie:

 grep [[:alnum:]] /sys/module/<module_name>/parameters/*

Lassen Sie mich wissen, ob dies für Sie funktioniert.


0
2017-07-31 14:32