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.
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 Sí 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.
Por supuesto, si está actualizando su nucleo, reemplace 2.0.29
por la versión que esté usando.
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:
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:
Cuando el sistema arranque, si usted pulsa [Tab] en
LILO boot: le aparecerán dos opciones:
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.
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:
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).
Para construir un nucleo monolítico, tiene que seguir los mismos
pasos explicados para construir un nucleo modular con algunas
excepciones.
rm -rf /lib/modules/2.0.29-old
mv /lib/modules/2.0.29 /lib/modules/2.0.29-old
make modules_install.
boot=/dev/hda
map=/boot/map
install=/boot/boot.b
prompt
timeout=100
image=/boot/vmlinuz
label=linux
root=/dev/hda1
read-only
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
LILO boot:
linux antiguo
6.1.2 Creando una imagen initrd
alias scsi_hostadapter BusLogic
/sbin/mkinitrd /boot/newinitrd-image 2.0.12
6.1.3 Construyendo un nucleo monolítico
make modules
make modules_install