Como faço para listar os valores carregados do parâmetro do módulo Linux?

72

Existe uma maneira padrão de listar os valores de parâmetros de um módulo Linux carregado? Estou essencialmente buscando outra resposta para esses parâmetros do módulo kernel do Linux pergunta , porque o módulo em que estou interessado não tem uma interface /sys/modules/<module_name>/parameters .

    
por cdleary 04.09.2009 / 09:45

7 respostas

51

Você pode fazer isso usando este simples comando unidirecional, que usa os sistemas de arquivos virtuais / proc / modules e / 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

Você obterá uma saída assim:

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

Espero que isso ajude.

    
por 17.05.2012 / 12:21
37

Você pode usar o comando systool -vm <Module name> . Ele vem com o pacote sysfsutils na maioria dos sistemas.

Esta é a aparência da saída, há uma seção 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"
    
por 09.07.2013 / 00:32
14
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
    
por 22.08.2014 / 17:49
6

Você pode usar o comando " modinfo (8) " para obter parâmetros de tempo de carregamento disponíveis para um módulo. Por exemplo:

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

Quanto a obter os parâmetros dos módulos carregados, tente combinar o comando modinfo com um simples "lsmod | awk '{print $ 1}'"

Como em:

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
    
por 04.09.2009 / 10:16
1

Seria feio como um comentário, mas eu fiz essa verificação no meu sistema ...

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

Para verificar se os módulos sem parâmetros em / sys aparecem como tendo parâmetros em modinfo, mas não consegui encontrar nenhum.

Não sou especialista, mas a diferença aqui é que o modinfo lê o próprio arquivo de módulo para os parâmetros procurando nos cabeçalhos .modinfo elf, enquanto sys os lê a partir de sua variante de tempo de execução.

Pode ser possível ter parâmetros que você possa modificar no tempo de execução, que não aparecem como um valor de parâmetro modinfo, mas como o formato do módulo deve ser bem fixo, não imagino que seja possível passar um parâmetro de opção para um módulo ao carregar sem existindo uma estrutura .modinfo para ele vinculada.

Estou curioso, o seu módulo sugere que existem parâmetros passáveis com o modinfo quando você o verifica dessa forma, mas não há nenhum / sys para ele? Certamente, no meu sistema, não consegui encontrar nenhum exemplo disso usando o comando fornecido acima.

    
por 27.11.2011 / 14:56
1

Para o iwlwifi e outros módulos, usei isto:

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

e eu recebo esta saída:

 /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

Então, eu acho que você poderia tentar algo como:

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

Deixe-me saber se isso funciona para você.

    
por 31.07.2018 / 16:32
0

Trabalhando fora do trabalho de katriel, você pode obter um (reconhecidamente feio) one-liner combinando os dois em um loop bash:

for i in 'lsmod | awk '{print $1}''; do echo "$i: "; modinfo $i | grep parm; done
    
por 13.06.2011 / 21:58

Tags