8.3. Linux-2.6.8.1

El paquete Linux contiene el núcleo y los ficheros de cabecera.

Tiempo estimado de construcción: 4.20 SBU
Espacio requerido en disco: 181 MB
La instalación de Linux 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.

Igualmente, asegurate de que el núcleo no intente pasar los eventos hotplug al espacio de usuario hasta que el espacio de usuario esté preparado:

sed -i 's@/sbin/hotplug@/bin/true@' kernel/kmod.c

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:

make menuconfig

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

[Nota]

Nota

Cuando configures el núcleo, asegúrate de activar la opción “Support for hot-pluggable devices” (Soporte para dispositivos conectables en caliente) que se encuentra en el menú “General Setup” (Configuración general). Esto activa los eventos hotplug usados por udev para poblar el directorio /dev con nodos de dispositivo.

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.8.1. 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.

Para el soporte de la memoria compartida POSIX, asegúrate de que esté activada la opción de configuración del núcleo “Virtual memory file system support” (Soporte del sistema de ficheros de memoria virtual). Se encuentra en el menú “File systems” (Sistemas de ficheros) y normalmente está activada por defecto.

Los guiones de arranque de LFS asumen que tanto “Support for Host-side USB” como “USB device filesystem” han sido compilados dentro del núcleo o no se han compilado. Los guiones de arranque no funcionarán bién si se trata de un módulo (usbcore.ko).

[Nota]

Nota

NPTL requiere que el núcleo sea compilado con GCC 3.x, en este caso 3.4.1. Se sabe que compilarlo con 2.95.x provoca fallos en el banco de pruebas de Glibc, por lo que no es recomendable compilar el núcleo con GCC 2.95.x.

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 /usr/src/linux-2.6.8.1/Documentation, que contiene la documentación del núcleo. La página de manual de modprobe.conf puede que también sea de interés.

Ten mucho cuidado cuando leas otra documentación, 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

Si tienes muchos módulos y muy poco espacio, puede que quieras considerar eliminarles los símbolos y comprimirlos. Para muchos dicha compresión no compensa el tiempo, pero si realmente estás presionado por el espacio, mira http://www.linux-mips.org/archives/linux-mips/2002-04/msg00031.html.

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. Ejecuta el siguiente comando para instalar el núcleo:

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

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.8.1

.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.8.1

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.8.1 para asegurar que todos los ficheros son propiedad de root.

8.3.2. Contenido de Linux

Ficheros instalados: núcleo, cabeceras del núcleo y System.map

Descripciones cortas

núcleo

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.

cabeceras del núcleo

Definen la interfaz a los servicios proporcionados por el núcleo. Las cabeceras del directorio include del sistema deben ser siempre aquellas contra las que se compiló Glibc y, por tanto, nunca deben reemplazarse al actualizar el núcleo.

System.map

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.