Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Guía de compilación del núcleo Linux para torpes ;-)

Documentación
Por Quique
departamento querer-es-poder , Sección Comunidad
Puesto a las Tue Jan 7th, 2003 at 05:52:59 PM CET
A partir de un documento que escribí hace un par de años, he escrito un mini-tutorial que explica como compilar el núcleo Linux paso a paso. Aunque no se explica la configuración del núcleo (que es demasiado extensa como para tratarla en un mini-manual como éste), creo que puede ser útil para usuarios noveles, porque se va repasando el proceso instrucción por instrucción. Por supuesto, se admiten todo tipo de correcciones y sugerencias.

 


Ah, el documento se licencia bajo la GNU FDL :-)
< Sobre Libertonia y Barrapunto (11 comments) | La libertad de las imágenes (9 comments) >
Enlaces Relacionados
· como compilar el núcleo Linux
· More on Documentación
· Also by Quique

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Guía de compilación del núcleo Linux para torpes ;-) | 20 comentarios (11 temáticos, 9 editoriales, 0 ocultos)
¿Pero qué #$%& es eso de "make dep"? (4.80 / 5) (#15)
por jorginius ("jorginius" en Google Mail) a las Wed Jan 8th, 2003 at 07:39:23 PM CET
(Información Usuario) http://www.rodriguezmoreno.com

Bueno, viendo que se está desatando una tormenta de comentarios editoriales respecto a cuando y a cuando no hace falta un "make dep" (que no son muy "editoriales", que digamos :-)) y que ya no tengo ganas de estudiar, explico un poco como va esto del Makefile del kernel y las dependencias.

Ojo Quique, que esto no es lo que yo entiendo "para novatos" y no es la contribución que te prometí ;-)

A ver, ¿qué ocurre ahora cuando hacemos "make dep"?:
  • Se recorren todos los archivos *.c de las fuentes del kernel, se buscan las directivas "#include" que contengan y se crea una lista de los archivos de cabecera.

    El conjunto de todas esas listas se guarda en el archivo .depend de cada subdirectorio, en un formato por el cual entiende make(1) que cada archivo .c depende de su lista de *.h. De esta manera si, por ejemplo, modificamos linux/config.h, make "sabrá" que tiene que recompilar init/main.c puesto que depende de aquel.

    Podeis consultar el programa que interpreta individualmente cada archivo *.c, que se encuentra en scripts/mkdep.c.

  • Se procesan ahora los archivos de cabecera, de forma idéntica a la anterior, para averiguar las dependencias entre ellos. Así se establece que linux/config.h depende de linux/autoconf.h, por ejemplo. La lista resultante de todas estas dependencias se guarda en .hdepend.

    Como vemos, hasta aquí no hay nada que dependa de la configuración, $(TOPDIR)/.config, elegida por el usuario

    Por cierto: hablo de los *.[ch], las fuentes en ensamblador siguen un camino distinto, y más chapucilla, en esto de las dependencias.

  • Ahora viene la parte sensible: si está definida la opción CONFIG_MODVERSION (que no es en absoluto necesaria para tener un kernel modular e incluso puede estar presente en un kernel monolítico), se crea el directorio $(TOPDIR)/include/linux/modules y un archivo $(TOPDIR)/include/linux/*.ver por cada elemento susceptible de ser modular (no por cada módulo seleccionado en la configuración) más un ksyms.ver, vía genksyms(8). Además, se crea/actualiza el archivo $(TOPDIR)/include/linux/modversions.h, a partir de la versión del kernel e incluyendo todos los archivos $(TOPDIR)/include/linux/modules/*.ver generados.

    Resalto que modversions.h no entra en las dependencias de los *.h "normales", no aparece en .hdepend.

    ¿Qué contiene los *.ver?: las etiquetas de versión que serán incluidas en la definición de cada símbolo exportado, por parte de todos los (posibles) módulos y por parte de lo que no es modular (ksyms.ver). Esas etiquetas únicamente dependen de la versión del kernel y no de la configuración del usuario.
Todos estos archivos (*.ver, .config, .depend, .hdepend) no desaparecen después de un clean. Para borrarlos hace falta un mrproper.

Llegado a este punto quizás os estéis preguntando que por qué nos dicen en la documentación que hay que hacer un "make dep" cada vez que se cambia la configuración estando definida CONFIG_MODVERSION, si, aún con esa opción, de la configuración no sacamos NADA para construir las dependencias (Excepto, claro, el propio CONFIG_MODVERSION)... Y es una buena pregunta: ¿alguien se anima y la responde? ;-)



Un par de cosillas (4.00 / 1) (#1)
por antonio a las Tue Jan 7th, 2003 at 12:12:49 PM CET
(Información Usuario)

El make dep && make clean && make bzImage se puede reducir a make dep clean bzImage.

Otra cosa, lo de hacer una bzImage y luego copiar el System.map y esas cosa a su sitio se puede hacer más fácil si haces un make dep clean install en vez de bzImage. Eso te deja ya todo copiado en su sitio y ejecuta lilo (claro está, habrás de tener un /etc/lilo.conf configurado para que busque el kernel donde lo deja el make install)



Mi propia versión 'Makarruza' (3.75 / 4) (#12)
por runlevel0 (exterATvullferPUNTes) a las Tue Jan 7th, 2003 at 11:01:33 PM CET
(Información Usuario) http://perso.wanadoo.es/exter

Yo tengo algo parecido, aunque más extenso y en un tono 'algo subidillo' ;)
Hace tiempo que no lo actualizo y tiene algnos fallos de estructura, pero bueno... Se trata del

infame Kernel-Aaargh!

La última vez que lo miré me partí.
No lo tomeís muy en serio ;)

-- S41002


Guía de compilación del núcleo Linux para torpes ;-) | 20 comentarios (11 temáticos, 9 editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda