Linux From Scratch: Versión 5.0 | ||
---|---|---|
Anterior | Capítulo 6. Instalación de los programas del sistema base | Siguiente |
Tiempo estimado de construcción: 0.1 SBU Estimación del espacio necesario en disco: 186 MB |
El núcleo Linux es el corazón de todo sistema Linux. Es lo que hace a Linux funcionar. Cuando se enciende un ordenador y se inicia un sistema Linux, el núcleo es lo primero que se carga. El núcleo inicializa los componentes hardware del sistema: puertos serie, puertos paralelo, tarjetas de sonido, tarjetas de red, controladores IDE, controladores SCSI y mucho más. En pocas palabras, el núcleo hace que el hardware esté disponible para que el software pueda ejecutarse.
Ficheros instalados: el núcleo y las cabeceras del núcleo.
Linux depende de: Bash, Binutils, Coreutils, Findutils, GCC, Glibc, Grep, Gzip, Make, Modutils, Perl, Sed.
No compilaremos todavía un nuevo núcleo, lo haremos cuando terminemos la instalación de todos los paquetes. Pero como ciertos paquetes necesitan los ficheros de cabecera del núcleo, vamos a desempaquetar el archivo del núcleo ahora, configurarlo, y copiar los ficheros de cabecera a un lugar donde puedan encontrarlos esos paquetes.
Es importante resaltar que los ficheros del directorio de las fuentes del núcleo no pertenecen a root. Aunque desempaquetes un paquete como usuario root (como hacemos dentro del chroot), los ficheros seguirán teniendo los identificadores de usuario y grupo que tenían en la computadora en la que se empaquetó. Esto usualmente no es un problema para otros paquetes que instales debido a que eliminas el árbol de las fuentes despues de la instalación. Pero el árbol de las fuentes del núcleo Linux se guarda con frecuencia durante mucho tiempo, por lo que si en alguna ocasión ese identificador es asignado a alguien en tu máquina, esa persona obtendrá permisos de escritura sobre las fuentes del núcleo.
A la vista de esto, puede que quieras ejecutar chown -R 0:0 sobre el directorio linux-2.4.22 para asegurarte de que todos los ficheros son propiedad del usuario root.
Prepara la instalación de las cabeceras:
make mrproper |
Esto asegurará que el árbol del núcleo está absolutamente limpio. El equipo de desarrollo del núcleo recomienda usar este comando antes de cada compilación del núcleo. No debes confiar en que el árbol de las fuentes esté limpio tras desempaquetarlo.
Crea el fichero include/linux/version.h:
make include/linux/version.h |
Crea el enlace simbólico include/asm específico de la plataforma:
make symlinks |
Instala los ficheros de cabecera específicos de la plataforma:
cp -HR include/asm /usr/include cp -R include/asm-generic /usr/include |
Instala los ficheros de cabecera del núcleo independientes de la plataforma:
cp -R include/linux /usr/include |
Hay ciertos fichero de cabecera del núcleo que hacen uso del fichero de cabecera autoconf.h. Puesto que todavía no hemos configurado el núcleo, necesitamos crear este fichero por nuestra cuenta para evitar fallos de compilación. Crea un fichero autoconf.h vacio:
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 zombi. 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}.