Cabeceras de Linux-2.4.26

Tiempo estimado de construcción:  0.1 SBU
Espacio requerido en disco:       186 MB

Instalación de las cabeceras del núcleo

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

Por qué copiamos las cabeceras del núcleo y no las enlazamos simbólicamente.

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