| Artículos | 01 SEP 1998

Crear nuevos núcleos y módulos en Linux

Tags: Histórico
Curso Linux (IV)
Javier Cáceres.

Con anterioridad tratamos la gestión de módulos en Linux, prometiendo que volveríamos a hacer hincapié en el tema . El presente artículo describe la forma de configurar, crear e instalar tanto nuestros propios módulos como el mismo núcleo del sistema . Aunque el proceso de compilación de un nuevo núcleo ( kernel ) pueda parecer una tarea relativamente compleja, en realidad no lo es tanto, y obtendremos como recompensa un núcleo optimizado para nuestra máquina, más rápido y de un tamaño más reducido que el original . Asimismo, trataremos de dejar claro cuál es el criterio a seguir en el momento de decidir si el soporte de un cierto recurso ha de incluirse en el sistema como módulo o como parte integrante del núcleo .

¿ Qué es el núcleo ?

El núcleo o kernel es el corazón de cualquier sistema Unix . Básicamente, el kernel de Unix actúa como una capa de abstracción, algo que ejerce de mediador entre los programas y el hardware de la máquina . En primer lugar, gestiona la memoria de todos los procesos o programas en ejecución, y se asegura de distribuir o asignar de una forma determinada, el tiempo que cada uno de ellos gozará de la atención del procesador ( divide entre todos, los ciclos del procesador ) ; de esta forma, múltiples tareas pueden ejecutarse concurrentemente . Por otro lado, como capa de abstracción, proporciona una interfaz cómoda, mucho más sencilla y portable, a los programas para que puedan comunicarse con el hardware del equipo . Al aislar el hardware, un error en la programación de una aplicación no bloqueará todo el sistema . Ciertamente el núcleo, realiza muchas más tareas, pero sin duda éstas funciones básicas son las más importantes .

Las causas por las que nos podemos encontrar ante la necesidad de actualizar y recompilar nuestro kernel son principalmente dos . Por un lado, que una cierta aplicación precise de una versión del núcleo superior a la que tenemos instalada, y por otro, que dispongamos de algún dispositivo que no esté soportado por el núcleo o los módulos instalados . En efecto, un núcleo que sea más actual, generalmente dispone de soporte para un mayor número de dispositivos y servicios, y al mismo tiempo, puede que mejore otros aspectos como la velocidad, gestión de memoria, procesos, etcétera . De esta forma, si tenemos un dispositivo ( controladora, PCMCIA, CD-ROM, tarjeta de red, sonido, RDSI, etc . ) , que no está soportado por nuestra actual versión del núcleo, o éste no dispone de un servicio que precisamos ( protocolos, sistemas de archivos, impresión, etc . ) , hemos de buscar un nuevo núcleo que nos proporcione dicho soporte .

En realidad, aunque no nos encontremos ante ninguna de las situaciones mencionadas anteriormente, y nuestro núcleo no sea excesivamente antiguo, es recomendable recompilarlo al menos una vez . Con ello obtendremos un sistema optimizado en velocidad y tamaño, de forma que la ocupación de memoria y disco sea la mínima tanto para el núcleo como para los módulos .

Módulos: pros y contras

En nuestro anterior artículo, ya comentamos que Linux es un sistema ?modular?, que permite, en cualquier momento, enlazar dinámicamente controladores de dispositivos directamente a un sistema en ejecución . Linux admite la carga y descarga dinámica de controladores como módulos, tal y como si hubieran sido incluidos en el núcleo desde un principio . Recordemos la serie de ventajas que este modelo conlleva . Primera, si queremos añadir el soporte para un determinado dispositivo, no tenemos que recompilar todo, simplemente hemos de indicarle al sistema que ha de cargar el módulo apropiado para el dispositivo ( e incluso es capaz de cargarlo automáticamente mediante kerneld ) . Segunda, reducimos al mínimo la cantidad de memoria que consume el sistema, pues los módulos son descargados automáticamente si no se utilizan en un tiempo determinado . Tercera, podemos tener un núcleo de tamaño mínimo y sin embargo disfrutar de todas las funciones de Linux, compilando el resto como módulos . Cuarta y última, partiendo de un pequeño núcleo genérico el usuario puede conformar, mediante la instalación de los módulos apropiados, un núcleo que se ajuste a la configuración de su equipo sin tener que compilar una sola línea de código, y en el caso de tener que hacerlo, sólo habrá de compilar los módulos que vaya a emplear . Esta flexibilidad a la hora de componer el núcleo ha sido adoptada por la mayoría de las distribuciones, que para su instalación, disponen de un núcleo genérico y la práctica totalidad de los módulos precompilados . Así pues, para conseguir un núcleo acorde a la máquina, el proceso de instalación a medida que va detectando o preguntando al usuario por la configuración de su equipo, va añadiendo dinámicamente los módulos apropiados al sistema

En la actualidad, se sigue distribuyendo el código fuente de las distintas versiones del núcleo, pero también es fácil encontrar sus versiones precompiladas ( más o menos genéricas ) , junto con sus módulos . Entonces . . . ¿ para qué se sigue distribuyendo tan ampliamente el código fuente ? . La respuesta a esta pregunta reside en que, como casi siempre, no todo son ventajas . Para empezar, lamentablemente aún existen controladores que no disponen de versión ?modular? . A esto hay que añadir que, determinados dispositivos, han de ser incluidos forzosamente en el núcleo ( si por ejemplo, instalamos Linux en un disco SCSI, parece lógico que tengamos que incluir en su núcleo el soporte para nuestra tarjeta SCSI, pues de otra forma no podríamos ?leer? el sistema del disco, puesto que los módulos se cargan casi al final ) . Otros pequeños inconvenientes serían la relativa pérdida de velocidad y la teórica incompatibilidad entre módulos de diferentes versiones .

¿ Controladores en el núcleo o como módulos ?

Independientemente de qué controladores instalemos en nuestro sistema, ya sea como módulos o en el propio núcleo, recompilar al menos una vez nuestro propio núcleo y módulos, redunda en una mayor velocidad y menor espacio . El aumento de velocidad afecta a ambos, núcleo y módulos, y viene dado por la capacidad de poder definir para qué procesador ha de compilar el sistema las fuentes ( 386, 486, Pentium, etc . ) , con lo que el código ejecutable resultante es el más rápido posible . La reducción de espacio es evidente, en tanto y en cuanto, sólo almacenamos los módulos que necesitamos, y no todos los contenidos en un paquete de distribución estándar .

El criterio a seguir a la hora de decidir qué controladores han de incluirse en el propio núcleo y cuáles han de instalarse como módulos, dependerá de la máquina sobre la que trabajemos . En máquinas con escasa cantidad de memoria RAM ( 16MB o menos ) , es recomendable instalar todo como módulos, excepto lo imprescindible . En el resto, el criterio que se suele seguir va en función del grado de utilización de los distintos recursos del ordenador . Podemos dejar en el núcleo el soporte para dispositivos de los que hagamos uso intensivo ( por ejemplo, soporte para el sistema de archivos a los que accedamos comúnmente: ext2, FAT, VFAT e ISO9660, controladoras SCSI, tarjetas de red, etc . ) , y dejar como módulos los controladores de los dispositivos que empleamos esporádicamente ( protocolo PPP para la conexión a Internet, streamers, resto de sistemas de archivos, tarjetas de sonido, etc . ) , habida cuenta del ligero retraso que se sufre en el acceso al dispositivo hasta que se carga el módulo . No obstante, hemos de tener presente que el tamaño del núcleo resultante tiene un límite y por tanto no siempre podemos incluir todo lo que deseamos, y en ocasiones hemos de hacer una pequeña selección para discernir que nos interesa más contener en el núcleo . Más adelante, discutiremos sobre el terreno qué cosas nos interesa incl

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información