सवाल मैं लिनक्स मॉड्यूल पैरामीटर मान लोड कैसे करूं?


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


65
2017-09-04 07:45


मूल


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


जवाब:


आप इसे सरल एक तरह से कमांड का उपयोग करके कर सकते हैं, जो / 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
...
...

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


46
2018-05-17 10:21



धन्यवाद! समस्याग्रस्त हार्डवेयर के साथ सभी तरह की समस्याओं का निदान करना बहुत उपयोगी है! - Oz123
अद्भुत, और यदि आप $ मॉड्यूल को उदा। इसे / proc / मॉड्यूल से प्राप्त करने के बजाय फ़ंक्शन पैरामीटर आपको आसानी से दिए गए मॉड्यूल के सभी पैरा प्राप्त करते हैं। - igordcard
@RaSca - क्या इनमें से कोई भी उत्तर आपके लिए काम करता है? - Dan Garthwaite
सबसे पहले यह मेरे लिए काम नहीं करता था जैसा कि मैंने किया था alias ls='ls -lah'। उपनाम को हटाने या स्क्रिप्ट के रूप में समाधान चलाने के बावजूद बहुत अच्छा काम किया। - David Farrell
Lsmod में gre के साथ इसे जोड़ना: lsmod | grep -i ब्लूटूथ> lsmodpattern.txt; बिल्ली lsmodpattern.txt | sed's / | / / '| awk '{print $ 4}'> patternmodules.txt; cat patternmodules.txt | tr, '\ n' | मॉड्यूल पढ़ने के दौरान; गूंज करें "मॉड्यूल: $ मॉड्यूल"; अगर [-d "/ sys / module / $ मॉड्यूल / पैरामीटर"]; फिर एलएस / sys / मॉड्यूल / $ मॉड्यूल / पैरामीटर / | जबकि पैरामीटर पढ़ें; echo -n करें "पैरामीटर: $ पैरामीटर ="; बिल्ली / sys / मॉड्यूल / $ मॉड्यूल / पैरामीटर / $ पैरामीटर; किया हुआ; फाई; किया हुआ - Ferroao


आप कमांड का उपयोग कर सकते हैं 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"

33
2017-07-08 22:32



आदेश systool पैकेज का हिस्सा है sysfsutils। और यही वह जवाब है जो मुझे लगता है, (लेकिन एक उदाहरण आउटपुट हो सकता है) - 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





आप "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)

लोड मॉड्यूल के पैरामीटर प्राप्त करने के लिए, modinfo कमांड को एक सरल "lsmod | awk '{print $ 1}' के साथ संयोजित करने का प्रयास करें।

जैसे की:

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 यह केवल एक आदमी पृष्ठ की तरह कुछ दिखाता है लेकिन यह नहीं कहता कि मूल्य क्या हैं। - Aleksandr Levchuk


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

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

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

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

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

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


1
2017-11-27 13:56





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

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

0
2018-06-13 19:58



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


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/*

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


0
2017-07-31 14:32