Linux From Scratch: Versión 4.0 | ||
---|---|---|
Anterior | Capítulo 6. Instalando los programas del sistema base | Siguiente |
Estimación del tiempo de construcción: 0.02 Estimación del espacio de disco requerido: 142 MB |
No compilaremos todavía un nuevo núcleo (kernel) -- lo haremos cuando terminemos la instalación de todos los paquetes. Pero como ciertos paquetes necesitan los ficheros de cabecera (headers) del núcleo, vamos a desempaquetar el archivo del núcleo ahora, ajustarlo, y copiar los ficheros de cabecera a un lugar donde puedan encontrarlos esos paquetes.
Los ficheros de cabecera del núcleo son copiados mediante la ejecución de los siguientes comandos:
ln -s /static/bin/pwd /bin/pwd && make mrproper && make include/linux/version.h && make symlinks && mkdir /usr/include/asm && cp include/asm/* /usr/include/asm && cp -R include/asm-generic /usr/include && cp -R include/linux /usr/include && touch /usr/include/linux/autoconf.h && rm /bin/pwd |
ln -s /static/bin/pwd /bin/pwd: En las fuentes del núcleo la ruta a pwd está fijada como /bin/pwd, así que, para solucionarlo, creamos un enlace simbólico temporal. Al terminar lo volvemos a eliminar.
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, y en realidad no debes confiar en que el árbol de las fuentes esté limpio tras desempaquetarlo.
make include/linux/version.h y make symlinks: Esto crea el fichero include/linux/version.h, así como el enlace simbólico include/asm específico de la plataforma.
mkdir /usr/include/asm , cp include/asm/* /usr/include/asm y cp -R include/asm-generic /usr/include: Estos comandos copian los ficheros de cabecera del núcleo para el ensamblador específicos de la plataforma en /usr/include/asm y /usr/include/asm-generic.
cp -R include/linux /usr/include: Este comando copia los ficheros de cabecera del núcleo independientes de la plataforma en /usr/include.
touch /usr/include/linux/autoconf.h: Esto crea un fichero autoconf.h vacío. Como aún no hemos configurado el núcleo, tenemos que crear este fichero nosotros para unas cuantas cabeceras del núcleo que lo utilizan, evitando fallos de compilación.
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 mismo 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-objeto de las librerías. Al copiar las cabeceras nos aseguramos de que permanecen disponibles si posteriormente actualizas el núcleo.
Advierte, de paso, 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}.
Última versión comprobada: 2.4.18.
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.
Última versión comprobada: 2.4.17.
Bash: sh
Binutils: ar, as, ld, nm, objcopy
Fileutils: cp, ln, mkdir, mv, rm, touch
Findutils: find, xargs
Gcc: cc1, collect2, cpp0, gcc
Grep: grep
Gzip: gzip
Make: make
Gawk: awk
Modutils: depmod, genksyms
Net-tools: dnsdomainname, hostname
Sed: sed
Sh-utils: basename, date, expr, pwd, stty, uname, whoami, yes
Textutils: cat, md5sum, sort, tail