मैं लोड किए गए लिनक्स मॉड्यूल पैरामीटर मूल्यों को कैसे सूचीबद्ध करूं?


76

क्या एक लोड किए गए लिनक्स मॉड्यूल के पैरामीटर मूल्यों को सूचीबद्ध करने का एक मानक तरीका है? मैं अनिवार्य रूप से इस लिनक्स कर्नेल मॉड्यूल मापदंडों के सवाल के एक और उत्तर के लिए जांच कर रहा हूं , क्योंकि मैं जिस मॉड्यूल में दिलचस्पी रखता हूं, उसके पास /sys/modules/<module_name>/parametersइंटरफ़ेस नहीं है ।


4
अप करने के लिए सभी उत्तरों अब एक नीचे वोट के लायक है, क्योंकि वे ओपी ध्यान से पढ़ें नहीं था ( "मॉड्यूल मैं में दिलचस्पी रखता हूँ है एक ... / मापदंडों इंटरफेस है")! :-(
डिर्क

जवाबों:


53

आप इसे इस सरल वन-वे कमांड का उपयोग करके कर सकते हैं, जो / proc / मॉड्यूल और / 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

आप इस तरह से एक आउटपुट प्राप्त करेंगे:

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

उम्मीद है की यह मदद करेगा।


धन्यवाद! समस्याग्रस्त हार्डवेयर के साथ सभी प्रकार की समस्याओं का निदान करना बहुत उपयोगी है!
Oz123

कमाल है, और यदि आप $ मॉड्यूल को पास करते हैं जैसे कि फंक्शन पैरामीटर के बजाय इसे / proc / मॉड्यूल से प्राप्त करने के बजाय आपको आसानी से किसी दिए गए मॉड्यूल के सभी पैरामेट्स मिलते हैं।
igordcard

@RaSca - क्या इनमें से कोई जवाब आपके काम आया?
Dan Garthwaite

पहले तो यह मेरे लिए काम नहीं कर पाया जैसा कि मेरे पास था alias ls='ls -lah'। उर्फ को हटाना या स्क्रिप्ट के रूप में समाधान चलाना हालांकि बहुत काम आया।
डेविड फैरेल

Lsmod में एक grep के साथ संयोजन: lsmod | grep -i bluetooth> lsmodpattern.txt; बिल्ली lsmodpattern.txt | sed 's / | / /' | awk '{प्रिंट $ 4}'> patternmodules.txt; बिल्ली patternmodules.txt | tr, '\ n' मॉड्यूल पढ़ते समय; गूंज "मॉड्यूल: $ मॉड्यूल"; अगर [-d "/ sys / मॉड्यूल / $ मॉड्यूल / पैरामीटर"]; उसके बाद ls / sys / मॉड्यूल / $ मॉड्यूल / पैरामीटर / | जबकि पैरामीटर पढ़ा; इको-एन "पैरामीटर: $ पैरामीटर ="; बिल्ली / sys / मॉड्यूल / $ मॉड्यूल / पैरामीटर / $ पैरामीटर; किया हुआ; फाई; किया
फिराओ

38

आप कमांड का उपयोग कर सकते हैं systool -vm <Module name>। यह sysfsutilsज्यादातर सिस्टम पर पैकेज के साथ आता है ।

यह वही है जो आउटपुट जैसा दिखेगा, एक सेक्शन है 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"

4
कमांड systoolपैकेज का हिस्सा है sysfsutils। और यह वह उत्तर है जो मुझे लगता है, (लेकिन एक उदाहरण आउटपुट हो सकता है)
वोल्कर सीगल

मेरे सिस्टम पर मुट्ठी भर मॉड्यूल का उपयोग करने के लिए, ऐसा लगता है कि Parameters:अनुभाग केवल उन मॉड्यूल के लिए आउटपुट में मौजूद है जो एक /sys/modules/<module_name>/parametersइंटरफ़ेस को उजागर करते हैं । इसलिए, दुर्भाग्य से, यह प्रश्न के आधार को संतुष्ट नहीं करता है।
बेकन

14
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

7

आप एक मॉड्यूल के लिए उपलब्ध लोड समय पैरामीटर प्राप्त करने के लिए " modinfo (8) " कमांड का उपयोग कर सकते हैं । उदाहरण के लिए:

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

लोड किए गए मॉड्यूल के मापदंडों को प्राप्त करने के लिए, एक साधारण "lsmod | awk '{प्रिंट $ 2}" के साथ modinfo कमांड के संयोजन का प्रयास करें। "

जैसे की:

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

14
-1 यह केवल एक मैन पेज जैसा कुछ दिखाता है लेकिन यह नहीं कहता है कि मूल्य क्या हैं।
०३:३० पर ०१३ ’13

1

टिप्पणी के रूप में बदसूरत निकलेगा, लेकिन मैंने अपने सिस्टम पर यह जांच की ..

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

यह जांचने के लिए कि क्या मॉड्यूल / एसआईएस के बिना मॉड्यूल मोडिनोफो में पैरामीटर के रूप में दिखाई देते हैं, लेकिन मुझे कोई नहीं मिल सकता है।

मैं कोई विशेषज्ञ नहीं हूँ, लेकिन यहाँ अंतर यह है कि modinfo, .modinfo योगिनी हेडर को देखकर मापदंडों के लिए मॉड्यूल फ़ाइल को स्वयं पढ़ता है, जबकि sys इसके रनटाइम संस्करण से इन्हें पढ़ रहा है।

यह पैरामीटर आप क्रम जो न एक modinfo पैरामीटर मान के रूप में प्रकट पर संशोधित कर सकते हैं करने के लिए संभव हो सकता है, लेकिन जब से मॉड्यूल प्रारूप सुंदर समाधान हो गया होगा मैं इसके संभावित कल्पना न आप जब लोड हो रहा है एक मॉड्यूल के लिए एक विकल्प पैरामीटर पारित करने के लिए बिना वहाँ जा रहा है इसमें .modinfo संरचना जुड़ी हुई है।

मैं उत्सुक हूँ, क्या आपका मॉड्यूल सुझाव देता है कि वहाँ modinfo के साथ पास करने योग्य पैरामीटर हैं जब आप इसे इस तरह से जांचते हैं लेकिन इसके लिए कोई भी / sys नहीं हैं? निश्चित रूप से मेरे सिस्टम पर मैं ऊपर दिए गए कमांड का उपयोग करके इसके किसी भी उदाहरण को खोजने में असमर्थ था।


1

Iwlwifi और अन्य मॉड्यूल के लिए मैंने इसका उपयोग किया:

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

और मुझे यह आउटपुट मिलता है:

 /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

इसलिए मुझे लगता है कि आप कुछ इस तरह की कोशिश कर सकते हैं:

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

अगर यह आपके काम का है, तो मुझे बताएं।


grep .शायद यह भी कम टाइपिंग के साथ ही काम करेगा। :)
dannysauer

हां, इस मामले में,grep . /sys/module/<module_name>/parameters/*
होमेरो एस्मराल्डो

कुछ ऐसा जो मैंने अभी देखा है - यदि आप वाइल्डकार्ड का उपयोग करते हैं और केवल एक पैरामीटर है, तो यह केवल फ़ाइल सामग्री को दिखाता है - कोई फ़ाइल नाम नहीं। हालाँकि, यदि आप grep -Rवाइल्डकार्ड को पैरामीटर डायरेक्टरी से दूर करते हैं और छोड़ते हैं, तो यह हमेशा फ़ाइलनाम को दिखाता है। बोनस अंक: --colorग्रीप में भी जोड़ें और रंगों द्वारा फ़ाइल नाम + मान प्राप्त करें। ;) उदाहरण के लिएgrep -R --color '.' /sys/module/block/parameters/
dannysauer

(ऐसा कभी भी ध्यान न दें कि प्रश्न पूछने वाला व्यक्ति विशेष रूप से उन मॉड्यूल के बारे में पूछे जो कि / पैरामीटर API को उजागर नहीं करते हैं: D)
dannysauer

0

कट्रील के काम से काम करते हुए, आप उन दोनों को एक बैश लूप में मिला कर (एक प्रकार से बदसूरत) वन-लाइनर प्राप्त कर सकते हैं:

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

2
केवल पहले तर्क के माध्यम से लौटने के लिए awk का उपयोग printकुछ हद तक सकल है - while readइसके बजाय वाक्यविन्यास का उपयोग करें : lsmod | while read a b; do echo $a:; modinfo $a | grep parm | sed -e 's/parm://'; done- यह इस तथ्य को नहीं बदलता है कि modinfo पैरामीटर मान नहीं लौटाता है, हालांकि ...
the-wabbit

7
और मुझे लगता है कि मूल प्रश्न उपयोग किए गए मापदंडों के बारे में था , उपलब्ध लोगों के बारे में नहीं ।
asdmin
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.