আমি কীভাবে লোড হওয়া লিনাক্স মডিউল প্যারামিটার মান তালিকাভুক্ত করব?


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 মডিউলটিকে উদাহরণ হিসাবে ফাংশন প্যারামিটার / proc / মডিউলগুলি থেকে পাওয়ার পরিবর্তে দেয় তবে আপনি সহজেই প্রদত্ত মডিউলটির সমস্ত প্যারামিগুলি পাবেন।
আইগার্ডকার্ড

@ আরএসকা - এই উত্তরগুলির কোনও কি আপনার পক্ষে কার্যকর হয়েছে?
ড্যান গার্থওয়েট

প্রথমদিকে এটি আমার মতো কাজ করে নি alias ls='ls -lah'। স্ক্রিপ্ট হিসাবে উপনামটি সরিয়ে নেওয়া বা সমাধান চালানো দুর্দান্ত কাজ করেছে worked
ডেভিড ফারেল

Lsmod এ একটি গ্রেপের সাথে এটি মিশ্রন: lsmod | গ্রেপ -i ব্লুটুথ> lsmodpattern.txt; বিড়াল lsmodpattern.txt | সেড 's / | / /' | awk '{মুদ্রণ $ 4}'> প্যাটার্নমডিউলস.টেক্সট; বিড়াল প্যাটার্নমডিউলস.টেক্সট | টিআর, '\ n' | মডিউল পড়ার সময়; ইকো করুন "মডিউল: $ মডিউল"; যদি [-d "/ sys / মডিউল / $ মডিউল / পরামিতি"]; তারপরে ls / sys / মডিউল / $ মডিউল / পরামিতি / | পরামিতি পড়ার সময়; do প্রতিধ্বনি -n "পরামিতি: $ প্যারামিটার ="; বিড়াল / সিএস / মডিউল / $ মডিউল / পরামিতি / $ পরামিতি; সম্পন্ন; ফাই; সম্পন্ন
ফেরোও

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

মডিউলটির জন্য লোড টাইম প্যারামিটারগুলি পেতে আপনি " মোডিনফো (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 '{মুদ্রণ $ 1}'" এর সাথে 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 এটি কেবল ম্যান পৃষ্ঠার মতো কিছু দেখায় তবে মানগুলি কী তা বলে না।
আলেকসান্দ্র লেভুকুক

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 কাঠামো যুক্ত।

আমি কৌতূহলী, আপনার মডিউলটি কি এমন প্রস্তাব দেয় যে মোডিনফো দিয়ে এমন পরামিতি রয়েছে যখন আপনি সেভাবে এটি পরীক্ষা করেন তবে এর জন্য / সিস্টেমে কোনও নেই? অবশ্যই আমার সিস্টেমে উপরে প্রদত্ত কমান্ডটি ব্যবহার করে এর কোনও উদাহরণ আমি খুঁজে পাচ্ছি না।


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 .কম টাইপিংয়ের সাথে সম্ভবত সম্ভবত কাজ করবে। :)
ড্যানিসাউয়ার

হ্যাঁ, এই ক্ষেত্রে,grep . /sys/module/<module_name>/parameters/*
হোমরো এসেরাল্ডো

আমি সবেমাত্র লক্ষ্য করেছি - যদি আপনি একটি ওয়াইল্ডকার্ড ব্যবহার করেন এবং কেবল একটি প্যারামিটার থাকে তবে এটি কেবল ফাইলের সামগ্রী দেখায় - কোনও ফাইলের নাম নয়। তবে, যদি আপনি grep -Rপ্যারামিটার ডিরেক্টরি থেকে ওয়াইল্ডকার্ডটি ব্যবহার করেন এবং ছেড়ে দেন তবে এটি সর্বদা ফাইলের নামটি প্রদর্শন করে। বোনাস পয়েন্ট: --colorগ্রেপটিতে যোগ করুন এবং ফাইলের নাম + মান রঙের দ্বারা পৃথক করে পান। ;) উদাহরণস্বরূপgrep -R --color '.' /sys/module/block/parameters/
ড্যানিসাউয়ার

(মনে রাখবেন না যে প্রশ্নটি জিজ্ঞাসা করা ব্যক্তি বিশেষত মডিউলগুলি সম্পর্কে জিজ্ঞাসা করেছেন যা / প্যারামিটারগুলি প্রকাশ করে না: ডি)
ড্যানিসাউয়ার

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গঠনটি ব্যবহার করুন : - মোডিনফো প্যারামিটারের মানগুলি ফিরিয়ে দেয় না এই সত্যটি পরিবর্তন করে না যদিও ...
দ্য ওয়াবিট

7
এবং আমি মনে করি যে আসল প্রশ্নটি ব্যবহৃত প্যারামিটারগুলি সম্পর্কে ছিল , উপলভ্য নয়।
এসসডমিন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.