Difference between revisions of "Kernel modules (Español)"

From ArchWiki
Jump to: navigation, search
(Traducción al Español)
 
(Parámetros)
Line 49: Line 49:
  
 
===Parámetros===  
 
===Parámetros===  
Esta es una función de bash agradable ser ejecutado como root, que mostrará una lista de todos los módulos actualmente cargados y todos sus parámetros, incluido el valor actual del parámetro. Utilice {{ic|/proc/modules}} para obtener una lista actualizada de los módulos cargados, a continuación, acceder al archivo del módulo directamente con modinfo para tomar una descripción del módulo y las descripciones para cada parámetro (si está disponible), y finalmente acceda al sistema de archivos sysfs para tomar los nombres de los parámetros reales y los valores cargados en ese momento .
+
Esta es una función de bash que debe ser ejecutada como root, que mostrará una lista de todos los módulos actualmente cargados y todos sus parámetros, incluido el valor actual del parámetro. Utilice {{ic|/proc/modules}} para obtener una lista actualizada de los módulos cargados, a continuación, acceder al archivo del módulo directamente con modinfo para tomar una descripción del módulo y las descripciones para cada parámetro (si está disponible), y finalmente acceda al sistema de archivos sysfs para tomar los nombres de los parámetros reales y los valores cargados en ese momento .
  
 
{{bc|<nowiki>function aa_mod_parameters ()  
 
{{bc|<nowiki>function aa_mod_parameters ()  

Revision as of 11:04, 15 August 2012

Los módulos del kernel son ​​fragmentos de código que pueden ser cargados y eliminados del kernel bajo demanda. Extienden la funcionalidad del kernel sin necesidad de reiniciar el sistema. En este artículo se cubren distintos métodos para el funcionamiento con módulos de kernel.

Información general

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Kernel modules (Español)#)

Para que un módulo para ser reconocido como tal, tiene que ser compilado como un módulo en la configuración del kernel (la línea para el módulo, por lo tanto, se mostrará con la letra M).

Los módulos se almacenan en /lib/modules/nombre_del_kernel (use el comando uname -r para obtener su versión del kernel actual).

El comando /sbin/modprobe se encarga de la adición o desmontaje de los módulos al kernel de Linux.

El directorio /etc/modprobe.d/ se puede utilizar para cambiar la configuración de los módulo udev, el cual utilizará modprobe para manejar la carga de los módulos durante el arranque del sistema. Puede crear un archivo de configuración con cualquier nombre en aquél directorio, siempre que acaben con la extensión .conf. Se recomienda no usar el archivo /etc/modprobe.conf, ya que caerá en desuso en el futuro (leer man modprobe.d).

Nota: Los nombres de los módulos suelen utilizar guiones bajos (_) o guiones (-), sin embargo, esos símbolos son intercambiables, tanto cuando se utiliza el comando modprobe como en los archivos de configuración del directorio /etc/modprobe.d/
.

Obtención de información

Los comandos siguientes pueden ayudarle a determinar las dependencias de un módulo con otro.

  • Analizar el contenido de /proc/modules y mostrar los módulos del kernel que se cargan actualmente:
$ lsmod
  • Usar modinfo para mostrar información acerca de un módulo:
$ modinfo nombre_del_módulo
  • Usar modprobe para obtener información sobre un módulo (incluyendo alias y comandos de instalación):
$$ modprobe --show-depends nombre_del_módulo
  • Usar systool para enumerar las opciones configuradas para un módulo cargado:
$ systool -v -m nombre_del_módulo

Configuración

Si desea visualizar la configuración completa de todos los módulos se puede usar el comando:

$ modprobe -c | less

Para mostrar la configuración de un módulo en particular, utilice:

$ modprobe -c | grep module_name

Parámetros

Esta es una función de bash que debe ser ejecutada como root, que mostrará una lista de todos los módulos actualmente cargados y todos sus parámetros, incluido el valor actual del parámetro. Utilice /proc/modules para obtener una lista actualizada de los módulos cargados, a continuación, acceder al archivo del módulo directamente con modinfo para tomar una descripción del módulo y las descripciones para cada parámetro (si está disponible), y finalmente acceda al sistema de archivos sysfs para tomar los nombres de los parámetros reales y los valores cargados en ese momento .

function aa_mod_parameters () 
{ 
    N=/dev/null;
    C=`tput op` O=$(echo -en "\n`tput setaf 2`>>> `tput op`");
    for mod in $(cat /proc/modules|cut -d" " -f1);
    do
        md=/sys/module/$mod/parameters;
        [[ ! -d $md ]] && continue;
        m=$mod;
        d=`modinfo -d $m 2>$N | tr "\n" "\t"`;
        echo -en "$O$m$C";
        [[ ${#d} -gt 0 ]] && echo -n " - $d";
        echo;
        for mc in $(cd $md; echo *);
        do
            de=`modinfo -p $mod 2>$N | grep ^$mc 2>$N|sed "s/^$mc=//" 2>$N`;
            echo -en "\t$mc=`cat $md/$mc 2>$N`";
            [[ ${#de} -gt 1 ]] && echo -en " - $de";
            echo;
        done;
    done
}

Aquí está un ejemplo de salida.

# aa_mod_parameters
>>> ehci_hcd - USB 2.0 'Enhanced' Host Controller (EHCI) Driver
        hird=0 - hird:host initiated resume duration, +1 for each 75us (int)
        ignore_oc=N - ignore_oc:ignore bogus hardware overcurrent indications (bool)
        log2_irq_thresh=0 - log2_irq_thresh:log2 IRQ latency, 1-64 microframes (int)
        park=0 - park:park setting; 1-3 back-to-back async packets (uint)

>>> processor - ACPI Processor Driver
        ignore_ppc=-1 - ignore_ppc:If the frequency of your machine gets wronglylimited by BIOS, this should help (int)
        ignore_tpc=0 - ignore_tpc:Disable broken BIOS _TPC throttling support (int)
        latency_factor=2 - latency_factor: (uint)

>>> usb_storage - USB Mass Storage driver for Linux
        delay_use=1 - delay_use:seconds to delay before using a new device (uint)
        option_zero_cd=1 - option_zero_cd:ZeroCD mode (1=Force Modem (default), 2=Allow CD-Rom (uint)
        quirks= - quirks:supplemental list of device IDs and their quirks (string)
        swi_tru_install=1 - swi_tru_install:TRU-Install mode (1=Full Logic (def), 2=Force CD-Rom, 3=Force Modem) (uint)

>>> video - ACPI Video Driver
        allow_duplicates=N - allow_duplicates: (bool)
        brightness_switch_enabled=Y - brightness_switch_enabled: (bool)
        use_bios_initial_backlight=Y - use_bios_initial_backlight: (bool)

Cargando

Para cargar de forma manual un módulo, ejecute:

# modprobe module_name

La mayoría de los módulos deben ser cargados bajo demanda. Los módulos que deben ser cargados en el arranque se deben especificar en /etc/modules-load.d/, por ejemplo:

/etc/modules-load.d/virtio-net.conf
# Cargar virtio-net.ko en el arranque
virtio-net

Eliminación

A veces puede necesitar eliminar (o no cargar en la memoria) un módulo, en este caso utilice el siguiente comando:

# modprobe -r module_name

O, alternativamente:

# rmmod module_name

Opciones

Para pasar un parámetro al módulo del kernel puede usar un archivo de configuración (.conf en modprobe.d) o utilizar la línea de comandos del kernel.

Usando archivos en /etc/modprobe.d/

Para pasar parámetros al módulo del kernel usando archivos de configuración de modprobe, un archivo .conf con cualquier nombre (incluso puede usar /etc/modprobe.d/modprobe.conf) debe ser colocado en /etc/modprobe.d/ con la siguiente sintaxis:

/etc/modprobe.d/miarchivo.conf
options nombredelmódulo nombredelparámetro=valordelparámetro

por ejemplo:

/etc/modprobe.d/thinkfan.conf
# Thinkpads on, ésto permite que el demonio thinkfan controle la velocidad del ventilador
options thinkpad_acpi fan_control=1

Usando la línea de comandos del kernel

Si el módulo está integrado en el kernel también puede pasar opciones al módulo a través de la línea de comandos del kernel (por ejemplo, en GRUB, LILO o Syslinux) con la siguiente sintaxis:

nombredelmódulo.nombredelparámetro=valordelparámetro

por ejemplo:

thinkpad_acpi.fan_control=1

Alias

Tango-view-fullscreen.pngThis article or section needs expansion.Tango-view-fullscreen.png

Reason: please use the first argument of the template to provide a brief explanation. (Discuss in Talk:Kernel modules (Español)#)
/etc/modprobe.d/myalias.conf
# Le permite usar 'mymod' en MODULES, en lugar de 'un_nombre_muy_largo_del_módulo'
alias mymod really_long_module_name

Algunos módulos tienen alias que se utilizan para su carga automática cuando son solicitados por una aplicación. La desactivación de estos alias evitará que se cargue automáticamente, pero permitirá que se puedan cargar manualmente. Ejemplo:

/etc/modprobe.d/modprobe.conf
# Evitar carga automática del módulo necesario para bluetooth
alias net-pf-31 off

# Evitar carga automática del módulo necesario para el protocolo IPv6
alias net-pf-10 off

Blacklist (Lista negra)

Con la expresión "poner un módulo en blacklist" se entiende el mecanismo que evita que el kernel cargue dicho módulo. Esto podría ser útil si, por ejemplo, el dispositivo de hardware asociado con el módulo no se utiliza y no desea que funcione, o porque la carga del módulo crea problemas: por ejemplo, puede darse la carga simultánea de dos módulos que intentan controlar el mismo dispositivo o componente del hardware, y cargándolos en conjunto se traduciría en un conflicto.

Algunos módulos se cargan como parte de la initramfs. mkinitcpio -M mostrará todos los módulos detectados automáticamente: para evitar que initramfs cargue algunos de estos módulos, se utiliza la lista negra (blacklist) en /etc/modprobe.d/modprobe.conf.

La ejecución de mkinitcpio-v mostrará una lista de todos los módulos insertados en initramfs por los distintos hooks (por ejemplo, hook filesystem, hook SCSI, etc.) Recuerde reconstruir el initramfs una vez haya hecho la lista negra de los módulos y reiniciar el sistema después.

Usando archivos en /etc/modprobe.d/

Crear un archivo .conf dentro de /etc/modprobe.d/ y añadir una línea para cada módulo que desee a la lista negra, usando la palabra clave blacklist. Por ejemplo, si desea evitar que el módulo pcspkr se cargue:

/etc/modprobe.d/nobeep.conf
# Esto evitará la carga del módulo pcspkr que controla el altavoz de la placa base
blacklist pcspkr
Nota: El comando blacklist de un módulo de la lista negra hará que no se cargue de forma automática, pero el módulo se puede cargar si otro módulo que no esté en la lista negra depende de él o si se carga de forma manual, con lo que iniciado este último se cargaría el primero, a pesar de blacklist.

Sin embargo, hay una solución para este comportamiento, el comando install instruye a modprobe para ejecutar un comando personalizado en lugar de insertar el módulo en el kernel de forma normal, con lo que puede forzar el fallo en la carga del módulo usando:

/etc/modprobe.d/blacklist.conf
...
install MODULE_NAME /bin/false
...
Esto hace efectivo el "blacklist" de ese módulo y de cualquier otro que dependa de él.

Usando la línea de comandos del kernel

Tip: Esto es útil en casos de emergencia cuando un módulo falla evitando un inicio correcto del sistema.

También puede evitar la carga de módulos a través del gestor de arranque. Agregue modprobe.blacklist=modname1,modname2,modname3 en los parámetros del kernel. Vea kernel parameters para obtener información más detallada.

Véase también