pengembangan-web-mp.com

Bagaimana cara mendaftar nilai parameter modul Linux yang dimuat?

Apakah ada cara standar untuk membuat daftar nilai parameter dari modul Linux yang dimuat? Saya pada dasarnya mencari jawaban lain untuk ini pertanyaan parameter modul kernel Linux , karena modul saya tertarik tidak memiliki /sys/modules/<module_name>/parameters antarmuka.

80
cdleary

Anda dapat melakukannya dengan menggunakan perintah satu arah yang sederhana ini, yang menggunakan sistem file/proc/modules dan/sys virtual:

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

Anda akan mendapatkan output seperti ini:

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

Semoga ini membantu.

56
RaSca

Anda dapat menggunakan perintah systool -vm <Module name>. Itu datang dengan paket sysfsutils pada kebanyakan sistem.

Beginilah bentuk outputnya, ada bagian 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

Anda bisa menggunakan perintah " modinfo (8) " untuk mendapatkan parameter waktu buka modul. Contohnya:

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

Sedangkan untuk mendapatkan parameter modul yang dimuat, coba gabungkan perintah modinfo dengan "lsmod | awk '{print $ 1}'" yang sederhana

Seperti dalam:

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

Akan keluar jelek sebagai komentar, tapi saya melakukan pemeriksaan ini pada sistem saya ..

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

Untuk memeriksa apakah modul tanpa parameter di/sys terlihat memiliki parameter dalam modinfo tetapi saya tidak dapat menemukannya.

Saya bukan ahli, tetapi perbedaannya di sini adalah bahwa modinfo membaca file modul itu sendiri untuk parameter dengan melihat header .modinfo elf, sedangkan sys membaca ini dari varian runtime-nya.

Dimungkinkan untuk memiliki parameter yang dapat Anda modifikasi saat runtime yang tidak muncul sebagai nilai parameter modinfo, tetapi karena format modul harus cukup diperbaiki, saya tidak membayangkan mungkin bagi Anda untuk mengirimkan parameter opsi ke modul saat memuat tanpa ada struktur .modinfo untuk itu terhubung di.

Saya ingin tahu, apakah modul Anda menyarankan ada parameter lumayan dengan modinfo ketika Anda memeriksanya seperti itu tetapi tidak ada di/sys untuk itu? Tentu saja di sistem saya, saya tidak dapat menemukan contoh ini menggunakan perintah yang diberikan di atas.

1
Matthew Ife

Untuk iwlwifi dan modul lain saya menggunakan ini:

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

dan saya mendapatkan output ini:

 /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

Jadi saya kira Anda bisa mencoba sesuatu seperti:

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

Beri tahu saya jika ini cocok untuk Anda.

0
Homero Esmeraldo

Dengan mematikan pekerjaan katriel, Anda bisa mendapatkan satu-liner (yang diakui jelek) dengan menggabungkan keduanya di bash loop:

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