módulos del kernel

19
Módulos del Kernel Realizado por Kepa Bengoetxea

Upload: jerom

Post on 16-Mar-2016

43 views

Category:

Documents


4 download

DESCRIPTION

Realizado por Kepa Bengoetxea. Módulos del Kernel. Referencia. http://www.ubuntulinux.org/wiki/KernelHowto http://www.tldp.org/HOWTO/Module-HOWTO/index.html Información sobre el kernel: http://www.kernelnewbies.org http://www.escomposlinux.org/wwol26/wwol26.html kernel-COMO: - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Módulos del Kernel

Módulos del Kernel

Realizado por Kepa Bengoetxea

Page 2: Módulos del Kernel

Referenciahttp://www.ubuntulinux.org/wiki/KernelHowto

http://www.tldp.org/HOWTO/Module-HOWTO/index.html

Información sobre el kernel:http://www.kernelnewbies.org

http://www.escomposlinux.org/wwol26/wwol26.html

kernel-COMO:

http://es.tldp.org/COMO-INSFLUG/COMOs/Kernel-Como/Kernel-Como-1.html

Libro sobre el Núcleo: http://www.tldp.org/LDP/tlk/tlk.html

Donde conseguir las fuentes del núcleo: http://www.kernel.org/

Page 3: Módulos del Kernel

Núcleo Monolítico

Un Núcleo monolítico es el núcleo o kernel de un sistema

operativo grande y complejo, que engloba todos los servicios del

sistema. Ejm:UNIX

Page 4: Módulos del Kernel

Núcleo Monolítico Híbrido

Actualmente Linux es un núcleo monolítico híbrido.

Los controladores de dispositivos y las extensiones del núcleo

normalmente se ejecutan en un espacio privilegiado conocido

como anillo 0 (ring 0), con acceso sin restricciones al hardware

Page 5: Módulos del Kernel

Núcleo Monolítico Híbrido

A diferencia de los núcleos monolíticos tradicionales, los

controladores de dispositivos y las extensiones al sistema

operativo se pueden cargar y descargar fácilmente como módulos,

mientras el sistema continúa funcionando sin interrupciones.

Page 6: Módulos del Kernel

¿Qué es un módulo cargable? El kernel de Linux tiene un diseño modular. En el momento de arranque, sólo se carga un kernel residente

mínimo en memoria. Por ello, cuando un usuario solicita alguna característica que no esta presente en el kernel residente, se carga dinámicamente en memoria un módulo kernel, también conocido algunas veces como un controlador.

Kmod se encargará de cargarlos y descargarlos por nosotros cuando el sistema los necesite. Ejm: controladores de dispositivos PCMCIA o de cintas QIC-80/40.

Page 7: Módulos del Kernel

¿Qué es un módulo cargable? Estos controladores o módulos del núcleo se compilan por

separado “make modules” (no se compilan con el núcleo: make bzImage) y se incorporan al núcleo que ya está corriendo cuando son necesarios.

Hoy en día la tendencia es “crear y elegir como módulo” todos los controladores (drivers) posibles, salvo aquellos estrictamente necesarios para arrancar el sistema (ext2, ext3, IDE/ATA, SCSI, según el caso).

Aunque siempre se puede hacer una imagen initrd(initial ramdisk) que se encargue de cargar aquellos módulos necesarios que no hemos seleccionado como parte residente del kernel y son necesarios para arrancar el sistema.

Page 8: Módulos del Kernel

Módulos del kernel GRUB cargan el kernel y el initrd en memoria para luego poder

montar el sistema de ficheros root que esta en el disco duro. El resto de módulos se cargarán cuando un usuario solicite algún

controlador ( Ejm: solicita conexión por modem se carga un módulo kernel PPP dinámicamente.)

En el programa de instalación se decide qué módulos necesita cargar en el momento de arranque según el HW detectado.

Si se añade un nuevo hardware después de la instalación, este requiere un módulo kernel, el sistema debe ser configurado para cargar el módulo adecuado para el nuevo hardware.

Page 9: Módulos del Kernel

Módulos del kernel Ubuntu permite habilitar y configurar los módulos necesarios

mediante la utilidad modconf.

$sudo modconf

Si no está instalado:

$sudo aptitude install modconf

Nota:Los módulos de tarjetas de vídeo usados para desplegar la interfaz del sistema X Window son parte del paquete XFree86 o Xorg, no del kernel; por lo tanto, este capítulo no se aplica a ellos

Page 10: Módulos del Kernel

Carga Manualemente:Sin parámetros También se puede realizar la carga de módulos editando

manualmente los siguientes archivos: Ejm: Si se incluye un adaptador de red SMC EtherPower 10 PCI

cuyo controlador se llama tulip

A)Añadir en /etc/modules :

tulip

B)Editar /etc/rc.local

/usr/sbin/modprobe tulip

Page 11: Módulos del Kernel

Carga Manualemente:Con parámetros Ejm:cargar controlador de los ventiladores del portátil A) Créate el fichero

Añade la siguiente línea al fichero /etc/modules:

i8k

Y añadimos las opciones en:

vi /etc/modprobe.d/i8k.modprobe

options i8k force=1

Page 12: Módulos del Kernel

Carga Manualemente:Con parámetros Ejm: Cargar controlador de los ventiladores del portátil B) Editar /etc/rc.local

/usr/sbin/modprobe i8k force=1

Page 13: Módulos del Kernel

Módulos del kernel Paquete para la gestión de módulos del kernel: module-init-tools

El comando /sbin/lsmod muestra una lista de los módulos

cargados actualmente donde la primera columna es el nombre del módulo, la segunda columna es el tamaño del módulo y la tercera es el recuento de usos. Si el nombre de un módulo esta listado al final de la línea , el módulo es dependiente del módulo listado en la primera columna de la línea.

Por ejemplo, en la línea:

mbcache 9604 1 ext3

Page 14: Módulos del Kernel

Módulos del kernel Obtener información del módulo.Ejm:

/sbin/modinfo ext3

filename: /lib/modules/2.6.20-16-generic/kernel/fs/ext3/ext3.ko

license: GPL

description: Second Extended Filesystem with journaling extensions

author: Remy Card, Stephen Tweedie, Andrew Morton, Andreas Dilger, Theodore Ts'o and others

srcversion: 7F25BA0D0A1B9A2A8F43C49

depends: mbcache,jbd

vermagic: 2.6.20-16-generic SMP mod_unload 586

Page 15: Módulos del Kernel

Módulos del kernel

Para descargar módulos de memoria: /sbin/rmmod .

Ejm: No esta en usosudo /sbin/rmmod fan

Ejm:Esta en usolsmod

bluetooth 55908 7 rfcomm,l2cap,hci_usb

sudo rmmod bluetooth

ERROR: Module bluetooth is in use by rfcomm,l2cap,hci_usb

Page 16: Módulos del Kernel

Módulos del kernel Para cargar un módulo (sin dependencias) del kernel .Ejm:

sudo insmod /lib/modules/2.6.20-16-generic/kernel/drivers/acpi/fan.ko

Módulos están /lib/modules/<kernel-version>/kernel/drivers/

Page 17: Módulos del Kernel

Módulos del kernel Para cargar un módulo (con/sin dependencias) del kernel . Ejm:sudo modprobe fan (sin dependencias) Ejm:sudo modprobe l2cap (con dependencias)

modinfo l2cap

filename: /lib/modules/2.6.20-16-generic/.../l2cap.ko

alias: bt-proto-0

description: Bluetooth L2CAP ver 2.8

author: Maxim Krasnyansky

depends: bluetooth

Page 18: Módulos del Kernel

Módulos del kernel /sbin/modprobe carga los módulos dependientes bluetooth y

luego carga l2cap modprobe espera que el fichero “/lib/modules/`uname

-r`/modules.dep” este debidamente actualizado con las dependencias que existen entre los módulos. Este fichero se actualiza con el comando “depmod -a”

Ejm: less /lib/modules/`uname -r`/modules.dep | grep vfat

/lib/modules/2.6.20-16-generic/kernel/fs/vfat/vfat.ko: /lib/modules/2.6.20-16-generic/kernel/fs/fat/fat.ko

man modprobe y man depmod

Page 19: Módulos del Kernel

¿Por qué un driver solo funciona para el kernel para el que ha compilado?

Si un módulo ha sido compilado con los ficheros cabecera de un kernel, y al actualizar el kernel deja de funcionar puede ser porque:

a)los ficheros cabecera y los parámetros de las funciones de la librería han cambiado en número o tipo con el nuevo kernel.

b)el kernel ha sido compilado con la característica CONFIG_MODVERSIONS deshabilitada.

less /boot/config* | grep CONFIG_MODVERSIONS

CONFIG_MODVERSIONS=y