로드 된 Linux 모듈의 매개 변수 값을 나열하는 표준 방법이 있습니까? 필자 는 관심이있는 모듈에 인터페이스 가 없기 때문에이 Linux 커널 모듈 매개 변수 질문에 대한 다른 대답을 본질적으로 조사 하고 /sys/modules/<module_name>/parameters
있습니다.
로드 된 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
...
...
도움이 되었기를 바랍니다.
alias ls='ls -lah'
. 별명을 제거하거나 스크립트로 솔루션을 실행하면 효과적입니다.
명령을 사용할 수 있습니다 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
. 그리고 이것이 제가 생각하는 답변입니다 (그러나 예제 출력이있을 수 있습니다)
Parameters:
섹션이 /sys/modules/<module_name>/parameters
인터페이스 를 노출하는 모듈의 출력에만 나타납니다 . 불행히도 이것은 질문의 전제를 만족시키지 않습니다.
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에 매개 변수가있는 것으로 나타나지만 찾을 수 없습니다.
나는 전문가가 아니지만 여기서 차이점은 modinfo는 .modinfo elf 헤더를보고 매개 변수에 대한 모듈 파일 자체를 읽는 반면 sys는 런타임 변형에서이를 읽습니다.
런타임에 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/*
이것이 당신에게 효과가 있는지 알려주세요.
grep .
적은 타이핑으로도 잘 작동합니다. :)
grep . /sys/module/<module_name>/parameters/*
grep -R
매개 변수 디렉토리에서 와일드 카드 를 사용 하고 그대로두면 항상 파일 이름이 표시됩니다. 보너스 포인트 : --color
grep에 추가 하고 파일 이름 + 값을 색상으로 구분하십시오. ;) 예 :grep -R --color '.' /sys/module/block/parameters/
katriel의 작업을 수행하면 두 개를 bash 루프로 결합하여 (거의 추악한) 원 라이너를 얻을 수 있습니다.
for i in `lsmod | awk '{print $1}'`; do echo "$i: "; modinfo $i | grep parm; done
print
다소 총입니다 -를 사용하는 while read
대신 구문 : lsmod | while read a b; do echo $a:; modinfo $a | grep parm | sed -e 's/parm://'; done
- 그것은에는 modinfo이 ...하지만, 매개 변수 값을 반환하지 않는다는 사실은 변경되지 않습니다