ロードされたLinuxモジュールのパラメーター値をリストするにはどうすればよいですか?


77

ロードされたLinuxモジュールのパラメーター値をリストする標準的な方法はありますか?私が興味を持っているモジュールにはインターフェースがないので、私は本質的にこのLinuxカーネルモジュールパラメーターの質問に対する別の答えを探ってい/sys/modules/<module_name>/parametersます。


4
これまでのすべての回答は、OPを注意深く読んでいなかったため(「私が興味のあるモジュールには... / parametersインターフェイスがない」)、下票に値します!:-(
Dirk

回答:


54

/ proc / modulesおよび/ 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 / modulesから取得する代わりに、たとえば関数パラメーターとして渡すと、特定のモジュールのすべてのパラメーターを簡単に取得できます。
igordcard

@RaSca-これらの答えのいずれかがあなたのために機能しましたか?
ダンガースウェイト

最初はこれが私のようにうまくいきませんでしたalias ls='ls -lah'。ただし、エイリアスを削除するか、ソリューションをスクリプトとして実行することはうまくいきました。
デビッドファレル

これをlsmodのgrepと組み合わせます:lsmod | grep -i bluetooth> lsmodpattern.txt; cat lsmodpattern.txt | sed 's / | / /' | awk '{print $ 4}'> patternmodules.txt; cat patternmodules.txt | tr、 '\ n' | モジュールの読み取り中。echo "Module:$ module"; if [-d "/ sys / module / $ module / parameters"]; ls / sys / module / $ module / parameters / | パラメータを読み取り中。do echo -n "Parameter:$ parameter ="; cat / sys / module / $ module / parameters / $ parameter; 完了; fi; 完了
Ferroao

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インターフェースを公​​開するモジュールの出力にのみ存在するようです。したがって、残念ながら、これは質問の前提を満たしていません。
BACON

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)

ロードされたモジュールのパラメーターを取得するには、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

14
-1これは、manページのようなもののみを示していますが、値が何であるかは示していません。
アレクサンドルレフチュク

1

コメントとしていが出てきますが、私は自分のシステムでこのチェックを行いました。

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

/ sysにパラメーターのないモジュールがmodinfoにパラメーターを持っていると表示されるが、私はそれを見つけることができなかったかどうかを確認するには。

私は専門家ではありませんが、ここでの違いは、modinfoが.modinfo elfヘッダーを見てパラメーターのモジュールファイル自体を読み取るのに対して、sysはランタイムバリアントからこれらを読み取ることです。

ロード時にモジュールにオプションパラメータを渡すためにあなたがのmodinfoパラメータの値として表示されますいけない、実行時に変更できるパラメータを持つことが可能かもしれないが、モジュール形式はかなり固定されなければならないので、私はその可能性を想像いけないことなく、そこにいますリンクされた.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/*
ホメロエスメラルド

私がちょうど気づいたもの-ワイルドカードを使用し、パラメータが1つしかない場合、ファイルの内容のみが表示され、ファイル名は表示されません。ただし、grep -Rパラメータディレクトリのワイルドカードを使用したままにしておくと、常にファイル名が表示されます。ボーナスポイント:--colorgrepに追加し、色で区別されるファイル名+値を取得します。;)たとえばgrep -R --color '.' /sys/module/block/parameters/
dannysauer

(質問をする人が、/ parameters APIを公開しないモジュールについて具体的に尋ねたことに気を付けないでください:D)
dannysauer

0

katrielの作業から離れて、bashループで2つを組み合わせることで(明らかにlyい)ワンライナーを取得できます。

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

2
を介して最初の引数を返すだけでawkをprint使用するのはややwhile readlsmod | while read a b; do echo $a:; modinfo $a | grep parm | sed -e 's/parm://'; done
大雑把

7
元の質問は使用可能なパラメータではなく、使用されたパラメータに関するものだったと思います。
asdmin
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.