cdleary Asked: 2009-09-04 23:45:59 +0800 CST2009-09-04 23:45:59 +0800 CST 2009-09-04 23:45:59 +0800 CST 如何列出加载的 Linux 模块参数值? 772 是否有一种标准方法可以列出加载的 Linux 模块的参数值?我本质上是在寻找这个Linux 内核模块参数问题的另一个答案,因为我感兴趣的模块没有/sys/modules/<module_name>/parameters接口。 linux kernel 7 个回答 Voted RaSca 2012-05-18T02:21:12+08:002012-05-18T02:21:12+08:00 您可以使用这个简单的单向命令来完成此操作,该命令使用 /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 ... ... 希望这可以帮助。 cdauth 2013-07-09T14:32:10+08:002013-07-09T14:32:10+08:00 你可以使用命令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" Dan Garthwaite 2014-08-23T07:49:50+08:002014-08-23T07:49:50+08:00 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 katriel 2009-09-05T00:16:08+08:002009-09-05T00:16:08+08:00 您可以使用“ 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 Matthew Ife 2011-11-28T05:56:37+08:002011-11-28T05:56:37+08:00 作为评论出来会很丑,但我在我的系统上做了这个检查.. 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 可以传递参数,但 /sys 中没有参数?当然,在我的系统上,我无法使用上面提供的命令找到任何示例。 编辑:所有这些都是错误的,因为如果您确实检查了我所做的事情,您会注意到这echo mod $mod | grep parm永远不会真正导致答案。 如果您改为执行以下操作.. cat /proc/modules | cut -d " " -f1 | while read mod; do test -d /sys/module/$mod/parameters || (modinfo $mod | grep parm && echo $mod) done 您会发现各种不包含parameters目录/sys/module/$mod但在运行时在其实例中包含参数的模块。 相反,您也可以这样做: for mod in $(cat /proc/modules | cut -d" " -f1; do if [ -d /sys/module/$mod/parameters ]; then for p in /sys/module/$mod/parameters/*; do p=$(basename $p) modinfo $mod -F parm | grep -q $p || echo $mod $p done; fi; done 要查找在 中具有参数值/sys/module/$mod/parameters但在 中没有参数集的模块示例modinfo。 Homero Esmeraldo 2018-08-01T06:32:43+08:002018-08-01T06:32:43+08:00 对于 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/* 让我知道这是否适合您。 Scrivener 2011-06-14T11:58:04+08:002011-06-14T11:58:04+08:00 根据 katriel 的工作,您可以通过在 bash 循环中组合两者来获得一个(诚然丑陋的)单线: for i in `lsmod | awk '{print $1}'`; do echo "$i: "; modinfo $i | grep parm; done
您可以使用这个简单的单向命令来完成此操作,该命令使用 /proc/modules 和 /sys 虚拟文件系统:
您将获得如下输出:
希望这可以帮助。
你可以使用命令
systool -vm <Module name>
。它在大多数系统上都带有该sysfsutils
软件包。这就是输出的样子,有一个部分
Parameters
:您可以使用“ modinfo(8) ”命令获取模块的可用加载时间参数。例如:
至于获取已加载模块的参数,请尝试将 modinfo 命令与简单的 "lsmod | awk '{ print $1 }'" 结合使用
如:
作为评论出来会很丑,但我在我的系统上做了这个检查..
检查 /sys 中没有参数的模块是否在 modinfo 中显示为具有参数但我找不到任何参数。?我不是专家,但这里的区别在于 modinfo 通过查看 .modinfo elf 标头来读取模块文件本身的参数,而 sys 是从其运行时变体中读取这些参数的。
可能有您可以在运行时修改的参数不显示为 modinfo 参数值,但是由于模块格式应该非常固定,我不认为您可以在加载时将选项参数传递给模块而没有它链接的 .modinfo 结构。
当您以这种方式检查时,您的模块是否建议 modinfo 可以传递参数,但 /sys 中没有参数?当然,在我的系统上,我无法使用上面提供的命令找到任何示例。编辑:所有这些都是错误的,因为如果您确实检查了我所做的事情,您会注意到这
echo mod $mod | grep parm
永远不会真正导致答案。如果您改为执行以下操作..
您会发现各种不包含
parameters
目录/sys/module/$mod
但在运行时在其实例中包含参数的模块。相反,您也可以这样做:
要查找在 中具有参数值
/sys/module/$mod/parameters
但在 中没有参数集的模块示例modinfo
。对于 iwlwifi 和其他模块,我使用了这个:
我得到这个输出:
所以我想你可以尝试这样的事情:
让我知道这是否适合您。
根据 katriel 的工作,您可以通过在 bash 循环中组合两者来获得一个(诚然丑陋的)单线: