Siguiente Arriba Anterior Contenido Indice

6.1 Construyendo un nucleo a medida

Construyendo un nucleo a medida

Desde la introducción de la modularidad en el nucleo 2.0.x de Linux ha habido algunos cambios significativos para la creación de un nucleo a la medida de nuestras necesidades. En el pasado, si quería tener soporte para cierto componente de hardware o sistema de ficheros, tenía que compilarlo en su nucleo. Con ciertas configuraciones de hardware el tamaño del nucleo alcanzaba rápidamente niveles críticos. El tener soporte en el nucleo para ciertos componentes que tan sólo se utilizaban ocasionalmente, era un uso ineficiente de los recursos del sistema. Con las capacidades del nucleo 2.0.x, los módulos de esos componentes de hardware o sistemas de ficheros que raramente se usan pueden cargarse según la demanda. Para más información en el uso del nucleo con módulos, ver el Capítulo 9, Sección 9.6.

6.1.1 Construyendo un nucleo modular

Construyendo un nucleo modular

Sólo Red Hat/Intel y Red Hat/SPARC soportan nucleos con módulos; los usuarios de Red Hat Linux/Alpha deben construir un nucleo monolítico (ver Sección 6.1.3).

Estas instrucciones le aportarán el conocimiento necesario para obtener provecho de la flexibilidad y la potencia de un nucleo modular. En supuesto de que no desee sacar ventaja de tener un nucleo con módulos, vaya a la Sección 6.1.3 para una explicación de los diferentes aspectos de la construcción e instalación de un nucleo monolítico. Asumimos que ha instalado los paquetes de los ficheros fuentes del nucleo, los ficheros cabecera del nucleo y que ejecuta las ordendes desde el directorio /usr/src/linux/.

Es importante empezar la construción del nucleo conociendo la estructura del árbol de directorios de los ficheros fuente en. Por consiguiente, se recomienda que empiece con la orden make mrproper. Ésta borrará cualquier fichero de configuración y los restos de anteriores construcciones que podrían quedar alrededor del árbol de directorios de las fuentes. Ahora debe crear un fichero de configuración que determinará que componentes incluirá en su nuevo nucleo. Dependiendo de su hardware y de sus preferencias personales, hay tres métodos de configuración del nucleo.

Por favor, observe que: Para poder usar kerneld (ver Sección 9.6 para más detalles) y módulos, durante la configuración debe contestar a kerneld support y module version (CONFIG_MODVERSIONS) support.

Por favor, observe que: Si está contruyendo un nucleo de Linux/Intel en (o para) una máquina que usa un procesador ``clónico'' (por ejemplo, uno hecho por Cyrix o AMD), se recomienda que escoja Tipo de Procesador 386.

Si desea construir un nucleo con un fichero de configuración (/usr/src/linux/.config) que usted creó con alguno de los métodos descritos anteriormente, puede omitir las ordenes make mrproper y make config y utilizar el comando make dep seguido de make clean para preparar el árbol fuente para la estructura.

El siguiente paso consiste en la compilación del código fuente de los componentes, en un programa ejecutable que su máquina pueda usar en el arranque. El método descrito aquí es el más sencillo para reestablecer en caso de tener algún percance. Si está interesado en otras posibilidades, puede encontrar más detalles en el Kernel-HOWTO (o en su traducción española) o en Makefile, en el directorio /usr/src/linux de su sistema Linux.

Si usted tiene un adaptador SCSI y ha hecho modular su controlador SCSI, construya una nueva imagen initrd (ver Sección 6.1.2; advierta que no hay muchas razones prácticas para crear el manejador SCSI modular en un nucleo hecho a medida).

Con el fin de proporcionar una fuente de arranque redundante, para proteger el nuevo nucleo de un posible error, debería mantener disponible el nucleo original. Añadir un nucleo al menú de LILO es tan simple como dejar el nucleo original en /boot, copiar el nuevo nucleo en /boot, añadir unas líneas en el fichero /etc/lilo.conf y ejecutar /sbin/lilo. Aquí hay un ejemplo del fichero /etc/lilo.conf por defecto distribuido con Linux Red Hat:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
image=/boot/vmlinuz
        label=linux
        root=/dev/hda1
        read-only

En estos momentos debería actualizar /etc/lilo.conf. Si ha construido una nueva imagen initrd, debe decirse a LILO que la use. En este ejemplo de /etc/lilo.conf hemos añadido cuatro líneas al final del fichero para indicar otro nucleo desde el que poder arrancar. Hemos renombrado /boot/vmlinuz a /boot/vmlinuz.antiguo y hemos cambiado su etiqueta a antiguo. También hemos añadido una línea initrd para el nuevo nucleo:

boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
image=/boot/vmlinuz
        label=linux
        initrd=/boot/initrd
        root=/dev/hda1
        read-only
image=/boot/vmlinuz.antiguo
        label=antiguo
        root=/dev/hda1
        read-only

Cuando el sistema arranque, si usted pulsa [Tab] en LILO boot: le aparecerán dos opciones:

LILO boot:
linux    antiguo

Para arrancar el nucleo nuevo (linux) simplemente pulse [Enter] o espere a que pase el margen de tiempo especificado en LILO. Si quiere arrancar el nucleo antiguo (antiguo), simplemente teclee antiguo y pulse [Enter].

Aquí tiene un resumen de los pasos:

Puede empezar probando su nucleo arrancando de nuevo su sistema y comprobando los mensajes que irán apareciendo, para asegurarse que su hardware se detecta correctamente.

6.1.2 Creando una imagen initrd

Creando una imagen initrd

Se necesita tener una imagen initrd para cargar el módulo SCSI durante el arranque. El guión /sbin/mkinitrd puede contruir la imagen initrd adecuada para su máquina si cumple las siguientes condiciones:

Para construir la nueva imagen initrd, ejecute /sbin/mkinitrd con los parámetros tales como los indicados a continuación:

	/sbin/mkinitrd /boot/newinitrd-image 2.0.12

donde /boot/newinitrd-image es el fichero que usará su nueva imagen y 2.0.12 es el nucleo cuyos módulos (de /lib/modules) serán usados en la imagen initrd (el número no tiene que ser necesariamente el mismo que el número de versión del nucleo que esté usando).

6.1.3 Construyendo un nucleo monolítico

Construyendo un nucleo monolítico

Para construir un nucleo monolítico, tiene que seguir los mismos pasos explicados para construir un nucleo modular con algunas excepciones.


Siguiente Arriba Anterior Contenido Indice