8.3. Linux-2.6.11.12

El paquete Linux contiene el núcleo Linux.

Tiempo estimado de construcción: 4.20 SBU
Espacio requerido en disco: 181 MB
Para su instalación depende de: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl y Sed

8.3.1. Instalación del núcleo

Construir el núcleo comprende varios pasos: configuración, compilación e instalación. Mira en el fichero README del árbol de fuentes del núcleo los métodos de configuración del núcleo alternativos al utilizado en este libro.

Prepara la compilación ejecutando el siguiente comando:

make mrproper

Esto asegura que el árbol del núcleo está completamente limpio. El equipo del núcleo recomienda que se ejecute este comando antes de cada compilación del núcleo. No debes confiar en que el árbol de las fuentes esté limpio tras desempaquetarlo.

Si en la Sección 7.6, “Configurar la consola Linux”, decidiste compilar el mapa del teclado dentro del núcleo, ejecuta el siguiente comando:

loadkeys -m /usr/share/kbd/keymaps/[ruta al mapa del teclado] > \
    drivers/char/defkeymap.c

Por ejemplo, usa /usr/share/kbd/keymaps/i386/qwerty/es.map.gz si tienes un teclado español.

Configura el núcleo mediante una interfaz de menús. BLFS tiene información sobre requisitos particulares de configuraciones del núcleo para paquetes externos a LFS en http://www.linuxfromscratch.org/blfs/view/svn/longindex.html#kernel-config-index:

make menuconfig

Alternativamente, make oldconfig puede ser más adecuado en algunas situaciones. Lee el fichero README para más detalles.

Si lo deseas, sáltate la configuración del núcleo copiando el fichero de configuración del núcleo, .config, de tu sistema anfitrión (asumiendo que esté disponible) al directorio linux-2.6.11.12. Sin embargo, no recomendamos esta opción. Con frecuencia es mejor explorar todos los menús de configuración y crear tu propia configuración del núcleo desde cero.

[Nota]

Nota

NPTL requiere que el núcleo sea compilado con GCC 3.x, en este caso 3.4.3. No se recomienda compilar el núcleo con GCC-2.95.x, pues provoca fallos en el banco de pruebas de Glibc. Normalmente esto no debería mencionarse, pues LFS no construye GCC-2.95.x. Desafortunadamente, la documentación del núcleo está anticuada y todavía menciona a GCC-2.95.3 como el compilador recomendado.

Compila la imagen del núcleo y los módulos:

make

Si utilizas los módulos del núcleo puede que necesites un fichero /etc/modprobe.conf. La información relativa a los módulos y a la configuración del núcleo en general puedes encontrarla en el directorio linux-2.6.11.12/Documentation, que contiene la documentación del núcleo. Igualmente, modprobe.conf(5) puede ser interesante.

Ten mucho cuidado cuando leas otra documentación relacionada con los módulos del núcleo, pues normalmente sólo es aplicable a los núcleos 2.4.x. Hasta donde nosotros sabemos, los temas de configuración del núcleo específicos para Hotplug y Udev no están documentados. El problema es que Udev creará un nodo de dispositivo sólo si Hotplug o un guión escrito por el usuario inserta el módulo correspondiente en el núcleo, y no todos los módulos son detectables por Hotplug. Advierte que sentencias como la mostrada a continuación en el fichero /etc/modprobe.conf no funcionarán con Udev:

alias char-major-XXX cualquier-módulo

Debido a las complicaciones con Hotplug, Udev y los módulos, recomendamos encarecidamente comenzar con una configuración del núcleo que sea por completo no modular, especialmente si es la primera vez que utilizas Udev.

Instala los módulos, si la configuración del núcleo los utiliza:

make modules_install

Tras completar la compilación se necesitan algunos pasos adicionales para completar la instalación. Es necesario copiar varios ficheros al directorio /boot.

La ruta a la imagen del núcleo puede variar dependiendo de la plataforma que utilices. El siguiente comando asume que la arquitectura es x86:

cp arch/i386/boot/bzImage /boot/lfskernel-2.6.11.12

System.map es un fichero de símbolos para el núcleo. Mapea los puntos de entrada de cada una de las funciones en la API del núcleo, al igual que las direcciones de las estructuras de datos del núcleo para el núcleo en ejecución. Ejecuta el siguiente comando para instalar el fichero de mapa:

cp System.map /boot/System.map-2.6.11.12

.config es el fichero de configuración del núcleo creado por el paso make menuconfig anterior. Contiene todas las selecciones de configuración para el núcleo que se acaba de compilar. Es buena idea guardar este fichero como referencia futura:

cp .config /boot/config-2.6.11.12

Es importante advertir que los ficheros del directorio de las fuentes del núcleo no son propiedad de root. Cuando se desempaqueta un paquete como usuario root (como hacemos dentro del chroot), los ficheros acaban teniendo los identificadores de usuario y grupo que tenían en la máquina en la que se empaquetaron. Esto normalmente no es problema para cualquier otro paquete que instales debido a que eliminas las fuentes tras la instalación. Pero con frecuencia el árbol de las fuentes de Linux se guarda durante mucho tiempo, por lo que es posible que el ID de usuario del empaquetador sea asignado a alguien en tu máquina y entonces dicha persona podría tener permiso de escritura en las fuentes del núcleo.

Si vas a guardar el árbol de las fuentes del núcleo, ejecuta chown -R 0:0 sobre el directorio linux-2.6.11.12 para asegurar que todos los ficheros son propiedad de root.

[Aviso]

Aviso

Cierta documentación del núcleo recomienda crear un enlace simbólico /usr/src/linux que apunte al directorio de las fuentes del núcleo. Esto es específico para núcleos anteriores a la serie 2.6 y no debe ser creado en un sistema LFS, pues puede causar problemas con los paquetes que desees instalar una vez que tu sistema LFS esté completo.

Igualmente, las cabeceras del directorio include del sistema deberías ser siempre aquellas contra las que se compiló Glibc, es decir, las procedentes del paquete Linux-Libc-Headers package, y por tanto nunca deben reemplazarse con las cabeceras del núcleo.

8.3.2. Contenido de Linux

Ficheros instalados: config-2.6.11.12, lfskernel-2.6.11.12, and System.map-2.6.11.12

Descripciones cortas

config-2.6.11.12

Contiene todas las opciones de configuración del núcleo.

lfskernel-2.6.11.12

El corazón del sistema GNU/Linux. Cuando enciendes tu ordenador, lo primero que se carga del sistema operativo es el núcleo. Éste detecta e inicializa todos los componentes hardware del ordenador, poniendo estos componentes a disposición del software como si fuesen un árbol de ficheros y convierte una CPU única en una máquina multi-tarea capaz de ejecutar concurrentemente varios programas casi al mismo tiempo.

System.map-2.6.11.12

Un listado de direcciones y símbolos. Mapea los puntos de entrada y direcciones de todas las funciones y estructuras de datos del núcleo.