Tiempo estimado de construcción: 0.1 SBU Espacio requerido en disco: 186 MB
No compilaremos todavía un nuevo núcleo, lo haremos cuando terminemos la instalación de todos los paquetes. Pero las librerías instaladas en la siguiente sección necesitan referenciarse a los ficheros de cabecera del núcleo para saber cómo interactuar con el núcleo. En vez de desempaquetar de nuevo las fuentes del nucleo, crear el fichero de versión y los enlaces simbólicos, etc..., simplemente simplemente copiaremos de golpe las cabeceras a partir del directorio de las herramientas temporales:
cp -a /tools/include/{asm,asm-generic,linux} /usr/include
Unos pocos ficheros de cabecera del núcleo referencian el fichero de cabecera autoconf.h. Puesto que todavía no hemos configurado el núcleo, necesitamos crear este fichero por nuestra cuenta para evitar un fallo en la compìlación de Sysklogd. Crea un fichero autoconf.h vacío con:
touch /usr/include/linux/autoconf.h
En el pasado, era una práctica común enlazar simbólicamente los directorios /usr/include/{linux,asm} a /usr/src/linux/include/{linux,asm}. Esta fue una mala práctica, como señala este extracto de un mensaje de Linus Torvalds a la lista de correo del núcleo Linux:
Sugeriría que la gente que compile núcleos nuevos debe: - no tener un sólo enlace simbólico a la vista (excepto el que crea la misma construcción del núcleo, el enlace simbólico llamado “linux/include/asm”, que sólo se usa para la compilación interna del propio núcleo). Y sí, esto es lo que yo hago. Mi /usr/src/linux todavía contiene los ficheros de cabecera del antiguo 2.2.13, aunque no he ejecutado un núcleo 2.2.13 desde hace _muucho_ tiempo. Pero esas fueron las cabeceras con las que fue compilada Glibc, por lo que esas cabeceras son las que coinciden con los ficheros objeto de la librería. Y este es, de hecho, el entorno que se ha sugerido en, al menos, los últimos cinco años. No sé por qué el asunto del enlace simbólico sigue coleando, como un mal zombie. Casi cada distribución todavía tiene ese enlace simbólico roto, y la gente todavía recuerda que el código fuente de linux debe ir en “/usr/src/linux” aunque no ha sido cierto desde hace _muucho_ tiempo.
La parte relevante es donde Linus afirma que las cabeceras deberían ser con las que fue compilada Glibc. Estas son las cabeceras que deberías usar cuando más adelante compiles otros paquetes, pues son las que coinciden con los códigos de objetos de las librerías. Al copiar las cabeceras nos aseguramos de que permanecen disponibles si posteriormente actualizas el núcleo.
De paso, fíjate en que es perfectamente correcto tener las fuentes del núcleo en /usr/src/linux, mientras no tengas los enlaces simbólicos /usr/include/{linux,asm}.