it-swarm-vi.tech

Làm cách nào để liệt kê các giá trị tham số mô-đun Linux được tải?

Có cách nào chuẩn để liệt kê các giá trị tham số của mô-đun Linux đã tải không? Về cơ bản, tôi đang tìm kiếm một câu trả lời khác cho câu hỏi này câu hỏi về tham số mô-đun hạt nhân Linux , vì mô-đun tôi quan tâm không có /sys/modules/<module_name>/parameters giao diện.

80
cdleary

Bạn có thể làm điều đó bằng cách sử dụng lệnh một chiều đơn giản này, sử dụng/Proc/mô-đun và/sys hệ thống tệp ảo:

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

Bạn sẽ có được một đầu ra như thế này:

...
...
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
...
...

Hi vọng điêu nay co ich.

56
RaSca

Bạn có thể sử dụng lệnh systool -vm <Module name>. Nó đi kèm với gói sysfsutils trên hầu hết các hệ thống.

Đây là kết quả đầu ra sẽ như thế nào, có một phần 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"
40
cdauth
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
13
Dan Garthwaite

Bạn có thể sử dụng lệnh " modinfo (8) " để nhận các tham số thời gian tải có sẵn cho một mô-đun. Ví dụ:

# 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)

Để nhận được các tham số của các mô-đun được tải, hãy thử kết hợp lệnh modinfo với một "lsmod | awk '{print $ 1}'" đơn giản

Như trong:

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
8
katriel

Sẽ trở nên xấu xí như một bình luận, nhưng tôi đã kiểm tra hệ thống này ..

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

Để kiểm tra xem các mô-đun không có tham số trong/sys có hiển thị là có tham số trong modinfo không nhưng tôi không thể tìm thấy bất kỳ.

Tôi không phải là chuyên gia, nhưng sự khác biệt ở đây là modinfo đọc chính tệp mô-đun cho các tham số bằng cách tìm trong các tiêu đề elf .modinfo, trong khi sys đang đọc chúng từ biến thể thời gian chạy của nó.

Có thể có các tham số bạn có thể sửa đổi trong thời gian chạy không xuất hiện dưới dạng giá trị tham số modinfo, nhưng vì định dạng mô-đun nên khá cố định. Tôi không thể tưởng tượng được bạn có thể chuyển tham số tùy chọn cho mô-đun khi tải không có có cấu trúc .modinfo cho nó được liên kết trong.

Tôi tò mò, mô-đun của bạn có gợi ý rằng có các tham số có thể vượt qua với modinfo khi bạn kiểm tra theo cách đó nhưng không có trong/sys cho nó không? Chắc chắn trên hệ thống của tôi, tôi không thể tìm thấy bất kỳ ví dụ nào về điều này bằng cách sử dụng lệnh được cung cấp ở trên.

1
Matthew Ife

Đối với iwlwifi và các mô-đun khác, tôi đã sử dụng điều này:

 grep [[:alnum:]] /sys/module/iwl*/parameters/*

và tôi nhận được kết quả này:

 /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

Vì vậy, tôi đoán bạn có thể thử một cái gì đó như:

 grep [[:alnum:]] /sys/module/<module_name>/parameters/*

Hãy cho tôi biết, nếu việc này giúp ích cho bạn.

0
Homero Esmeraldo

Làm việc với công việc của katriel, bạn có thể có được một lớp lót (được thừa nhận là xấu xí) bằng cách kết hợp hai trong số chúng trong một vòng lặp bash:

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