viernes, 15 de enero de 2010

Módulos del kernel

El hardware en Linux es manejado por los controladores del núcleo, muchos de los cuales vienen en forma de módulos del Kernel, estos archivos se almacenan en /lib/modules y pueden ser cargados y descargados, para proporcionar acceso al hardware. Normalmente las cargas de los módulos se hacen al arranque del sistema, pero podemos cargar módulos adicionales.

La columna más importante de esta producción es el primero, denominado Módulo; esta columna se especifican los nombres de todos los módulos que se cargan actualmente. Se puede aprender más acerca de estos módulos con modinfo.

ejemplo de lsmod

DebianBox:~# lsmod
Module Size Used by
binfmt_misc 7088 1
loop 13288 0
snd_intel8x0 26584 0
snd_ac97_codec 91264 1 snd_intel8x0
snd_pcm 62416 2 snd_intel8x0,snd_ac97_codec
....

ahora ejecutamos modinfo
ejemplo:
DebianBox:~# modinfo psmouse
filename: /lib/modules/2.6.30-2-686/kernel/drivers/input/mouse/psmouse.ko
license: GPL
description: PS/2 mouse driver
author: Vojtech Pavlik
alias: serio:ty05pr*id*ex*
alias: serio:ty01pr*id*ex*
depends:
vermagic: 2.6.30-2-686 SMP mod_unload modversions 686
parm: proto:Highest protocol extension to probe (bare, imps, exps, any). Useful for KVM switches. (proto_abbrev)
parm: resolution:Resolution, in dpi. (uint)
parm: rate:Report rate, in reports per second. (uint)
parm: smartscroll:Logitech Smartscroll autorepeat, 1 = enabled (default), 0 = disabled. (bool)
parm: resetafter:Reset device after so many bad packets (0 = never). (uint)
parm: resync_time:How long can mouse stay idle before forcing resync (in seconds, 0 = never). (uint)
///////////////////////////////////////////////////////////////////////////////

La columna Used de la salida de lsmod describe lo que esta utilizando el módulo, todos tienen un número que indica el número de otros módulos o procesos que está utilizando el módulo.

El comando lsmod muestra sólo información sobre módulos del kernel, no de los drivers que se compilan directamente en el kernel de linux. Por esta razón, un módulo puede ser cargado en un sistema, pero no en otro para el mismo hardware, porque el segundo sistema puede compilar el driver correspondiente directamente en el núcleo.

No hay comentarios: