有没有列出列出已加载的Linux模块的参数值的标准方法?我本质上是在寻找这个Linux内核模块参数问题的另一个答案,因为我感兴趣的模块没有/sys/modules/<module_name>/parameters接口。

评论

到目前为止,所有答案都应该被否决,因为他们没有仔细阅读OP(“我感兴趣的模块没有... / parameters接口”)! :-(

#1 楼

您可以使用以下简单的单向命令来执行此操作,该命令使用/ 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
2012-12-10 6:54

太神奇了,如果您通过$ module作为例如函数参数而不是从/ proc / modules获取它,您可以轻松获取给定模块的所有参数。

– igordcard
2014年5月18日在11:14

@RaSca-这些答案对您有用吗?

–丹·加思韦特(Dan Garthwaite)
2015年2月2日,下午2:47

起初这对我不起作用,因为我有别名ls ='ls -lah'。尽管删除别名或将解决方案作为脚本运行,效果很好。

– David Farrell
17年1月15日在15:42



将其与lsmod中的grep结合使用: grep -i蓝牙> lsmodpattern.txt; cat lsmodpattern.txt | sed's / | / /'| awk'{print $ 4}'> patternmodules.txt; cat patternmodules.txt | tr,'\ n'|边读模块;做echo“ Module:$ module”;如果[-d“ / sys / module / $ module / parameters”];然后ls / sys / module / $ module / parameters / |读取参数时做echo -n“ Parameter:$ parameter =”; cat / sys / module / $ module / parameters / $ parameter;完成fi;完成

– Ferroao
17年8月30日在17:36

#2 楼

您可以使用命令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"


评论


systool命令是sysfsutils软件包的一部分。这就是我认为的答案(但可能会有示例输出)

– Volker Siegel
14年6月20日在7:22

使用此查询我系统上的少数模块,似乎“参数:”部分仅出现在公开了/ sys / modules / / parameters接口的模块的输出中。因此,不幸的是,这不能满足问题的前提。

–兰斯·马修斯
19年8月13日在20:05

#3 楼

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


评论


OP特别指出,所讨论的模块不会通过/ sys显示当前参数值。因此,此答案对于其他情况是正确的,但根本无法回答原始问题。

– Biinarus
20/12/20在10:09

#4 楼

您可以使用“ 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  }'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


评论


-1这仅显示类似手册页的内容,但没有说明值是什么。

–亚历山大·列夫丘克(Aleksandr Levchuk)
2010年11月13日,0:43



#5 楼

作为注释,它会很丑陋,但是我在系统上进行了检查。 br />我不是专家,但是这里的区别是modinfo通过查看.modinfo elf标头来读取模块文件本身的参数,而sys是从其运行时变体读取这些标头的。
可能拥有可以在运行时修改的参数,这些参数不会显示为modinfo参数值,但是由于模块格式应该是相当固定的,所以我不认为它可能在加载时将选项参数传递给模块而没有.modinfo结构的情况因为它已链接。
您以这种方式检查模块时,是否建议模块使用modinfo传递参数,但/ sys中没有参数?当然,在我的系统上,我无法使用上面提供的命令找到任何此类示例。

评论


OP特别指出,所讨论的模块不会通过/ sys公开当前参数值。因此,此答案很有趣,但没有回答原始问题。

– Biinarus
20 Dec 20'在10:12

@Binarus我的意思是,它有9年的历史了,但我认为您在投票之前实际上并未阅读我写的内容!

–马修·伊夫(Matthew Ife)
20/12/23在14:10

重新阅读您的答案后,我深表歉意。那太快了,我将把downvote转换成upvote。感谢您向我展示我的错误(但是,我认为答案的年龄在这里并不重要:-))

– Biinarus
20 Dec 23'15:20



原来我无法投票,因为我的“投票已被锁定,直到答案被编辑”。我对其进行了稍微的编辑,现在我等待它通过审核队列。我希望我最终能把我的下票变成上票。

– Biinarus
20/12/23在15:25



OK完成 ....

– Biinarus
20/12/23在20:51

#6 楼

对于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。更少的打字也可能同样有效。 :)

– dannysauer
19年2月27日在17:38

是的,在这种情况下,是grep。 / sys /模块/ <模块名称> /参数/ *

– Homero Esmeraldo
19年2月27日在18:44

我刚刚注意到的一件事-如果您使用通配符,并且只有一个参数,它将仅显示文件内容-没有文件名。但是,如果使用grep -R并将通配符保留在parameters目录之外,它将始终显示文件名。优点:还将--color添加到grep,并获取文件名+值(按颜色区分)。 ;)例如grep -R --color'。' / sys /模块/块/参数/

– dannysauer
19-2-27在22:29



(不要介意询问该问题的人专门询问不公开/ parameters API:D的模块)

– dannysauer
19年2月27日在22:30

#7 楼

在katriel的工作基础上,您可以通过在bash循环中将两者结合在一起来获得(非常丑陋的)单线:

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


评论


使用awk仅通过print返回第一个参数有点麻烦-改用while读取语法:读b时回显$ a :; modinfo $ a | grep parm | sed -e's / parm://';完成-它不会改变modinfo不返回参数值的事实,尽管...

–比特流
2011年6月14日15:21



我认为最初的问题是关于使用的参数,而不是可用的参数。

– asdmin
2012年2月17日在12:51