ロードされたLinuxモジュールのパラメーター値をリストする標準的な方法はありますか?私が本質的に別の答えを探っている Linuxカーネルモジュールパラメーターの質問 、私が興味のあるモジュールには_/sys/modules/<module_name>/parameters
_インターフェイスがないため.
これは、/ 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
...
...
お役に立てれば。
コマンド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"
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
" 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
コメントとして醜く出てきますが、私のシステムでこのチェックを行いました。
cat /proc/modules | cut -d " " -f1 | while read mod; do
test -d /sys/module/$mod/parameters || echo modinfo $mod | grep parm;
done
/ sysにパラメーターのないモジュールがmodinfoにパラメーターがあると表示されるかどうかを確認するには、何も見つかりませんでした。
私は専門家ではありませんが、ここでの違いは、sysがランタイムバリアントからこれらを読み取るのに対して、modinfoは.modinfoエルフヘッダーを調べてパラメーターのモジュールファイル自体を読み取ることです。
実行時にmodinfoパラメーター値として表示されないパラメーターを変更できる可能性がありますが、モジュールの形式はかなり固定されているはずなので、ロード時にモジュールにオプションパラメーターを渡すことはできませんなしリンクされている.modinfo構造があります。
私は好奇心旺盛です、あなたのモジュールはあなたがそれをそのようにチェックしたときにmodinfoで渡せるパラメータがあることを提案しますが、それのための/ sysには何もありませんか?確かに私のシステムでは、上記のコマンドを使用してこの例を見つけることができませんでした。
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/*
これで問題が解決するかどうかお知らせください。
Katrielの作業を終えると、bashループで2つを組み合わせることで(明らかに醜い)1行を取得できます。
for i in `lsmod | awk '{print $1}'`; do echo "$i: "; modinfo $i | grep parm; done