El paquete Linux contiene el núcleo Linux.
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.
Por defecto, el núcleo Linux genera secuencies de bytes erroneas cuando se usan las teclas muertas en el modo de teclado UTF-8. Igualmente, no se pueden copiar y pegar caractéres no ASCII cuando el modo UTF-8 está activo. Corrige dichos problemas con el parche:
patch -Np1 -i ../linux-2.6.16.27-utf8_input-1.patch
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.
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.16.27. 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.
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 se encuentra en Sección 7.4, “Manejo de dispositivos y módulos en un sistema LFS” y en el directorio linux-2.6.16.27/Documentation, que contiene la documentación del núcleo. Igualmente, modprobe.conf(5) puede ser interesante.
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 -v arch/i386/boot/bzImage /boot/lfskernel-2.6.16.27
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 -v System.map /boot/System.map-2.6.16.27
.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 -v .config /boot/config-2.6.16.27
Instala la documentación del núcleo Linux:
install -d /usr/share/doc/linux-2.6.16.27 && cp -r Documentation/* /usr/share/doc/linux-2.6.16.27
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.16.27 para asegurar que todos los ficheros son propiedad de root.
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, y por tanto nunca deben reemplazarse con las cabeceras del núcleo.