Que Es El Kernel
Enviado por chivanmontion • 25 de Junio de 2014 • 1.426 Palabras (6 Páginas) • 359 Visitas
Comenzaremos definiendo lo que es el kernel:
Para explicar en palabras sencillas lo que es un kernel, empecemos por saber que cada computadora, lector de discos, disco duro, tarjeta de video, etc. es diferente y el kernel es el programa que sabe qué hacer para que esos componentes ejecuten su tarea como abrir un documento, borrarlo de un disco o mostrar una imagen en pantalla. El kernel debe saber cómo hablar a esos diferentes componentes materiales y controlar las labores corrientes que hacemos a diario con nuestras computadoras.
En este contexto, módulo se refiere a un controlador de un dispositivos o servicio que puede cargarse o descargarse cuando el usuario o algún dispositivo lo solicita (i.e dinámicamente). Los módulos que se distribuyen con en el kernel están ubicados en el directorio /lib/modules/versión, donde versión es la versión de su kernel, con la extensión, U organizados en directorios que indican el tipo de dispositivo o el propósito, por ejemplo fs - sistema de archivos, net - protocolos y hardware para redes.
Para lograr configurar un dispositivo controlado por un módulo, puede emplear las herramientas del paquete modutils o modconf para:
1. Asegurar que no haya conflictos entre el dispositivo con otros y eventualmente conocer la configuración que usa (algunos controladores auto detectan la configuración del dispositivo, pero no todos).
2. Encontrar un módulo que pueda manejar el dispositivo.
3. Eventualmente pasar opciones al módulo de acuerdo a la configuración del dispositivo (e.g IRQ o dirección base).
Hoy en día, todos los módulos que necesitan ser cargados, son manejados automáticamente por udev, por lo que si no quiere/necesita utilizar ningún módulo ajeno al kernel, no hay necesidad de ponerlos en algún archivo de configuración para que se carguen en el arranque. Sin embargo, hay casos en que es posible que desee cargar un módulo específico adicional durante el proceso de arranque, o crear una lista negra de módulos (los cuales no se cargarán) para que el equipo funcione correctamente. Los módulos adicionales del kernel los modulos que son adicionales del kernel se pueden cargar durante el arranque configurándolos como una lista estática en los archivos residentes en
/etc/modules-load.d/
Cada uno de los archivos de configuración es nombrado siguiendo el formato: /etc/modulesload.d/<programa>.conf.
Estos archivos contienen una lista de los nombres de los módulos del kernel a cargar, separadas por saltos de líneas. Las líneas vacías y las líneas cuyo primer carácter sea # o ; estas no las tomará en cuenta. Un dispositivo sólo podrá ser usado si el kernel lo soporta o si existe un controlador capaz de controlarlo y si se configura apropiadamente para hacerlo. Por esto, los dispositivos que se produzcan hoy, no pueden ser operados con controladores ya existentes (a menos que los dispositivos hayan sido diseñados para ser operados con estos ---caso que para algunos dispositivos como tarjetas de sonido, tarjetas de video o módems es poco común), por esto mismo, eventualmente, si actualiza el hardware de su computador o si desea usar un cierto servicio del kernel, también deberá actualizar algún módulo o eventualmente el kernel completo. Aunque algunos controladores auto detectan la configuración del dispositivo, esto no siempre ocurre y en algunos casos tendrá que probar hasta hacer funcionar el módulo que maneja el dispositivo (en estas pruebas la documentación del dispositivo, la del módulo y estas guías, esperamos le sean de utilidad ---si desea experimentar rápidamente emplee modconf). Las fuentes en C de cada versión del kernel cuentan con controladores para diversos dispositivos. Cuando se compila una versión, algunos de esos controladores pueden unirse con el kernel mismo, otros pueden dejarse como módulos para cargarse/descargarse cuando la parte estática del kernel esté operando, otros pueden ser excluidos del proceso de compilación. Cuando generamos el código objeto de nuestro módulo, todas las referencias a símbolos del kernel están sin resolver, es en el momento de la inserción del módulo cuando se resuelven dichas referencias, ya que cuando insertamos un módulo al kernel estamos haciendo una especie de link con la imagen en memoria del kernel al código objeto del módulo. Para que se puedan resolver esas referencias a símbolos del kernel, este publica todas sus referencias a través del sistema de ficheros virtual proc. Si queremos ver la tabla de símbolos del kernel podemos ejecutar la siguiente orden:
$ cat /proc/ksyms
Cuando insertamos
...