Building

Compilación

Generalmente en un RTOS tradicional, el kernel y las aplicaciones se compilan en una única imagen, no existe una delineación entre el kernel y las aplicaciones.
El paradigma en Linux es diferente, cada aplicación posee su propio espacio de direcciones, con lo cual no existe relación con el espacio de memoria del kernel. Siempre que sean usados los apropiados headers y librerías, cualquier aplicación puede ser compilada en forma independiente del kernel. Esto quiere decir que la compilación del kernel y las aplicaciones pueden estar completamente separadas.

Building the kernel (kbuild)

El proceso de compilación del kernel podemos dividirlo en 4 pasos:

  1. Configurar el entorno de desarrollo para la compilación cruzada (cross-development environment): consiste en configurar la aquitectura para la cual el kernel y los módulos serán compilados.
  2. Proceso de configuración: acá se deben seleccionar los programas y el soporte que queremos que esté incluido en el kernel, como también cuáles serán cargados como módulos. Principalmente se seleccionar el procesador, la placa, drivers y otras opciones del kernel.
  3. Compilar los archivos objeto y enlazarlos para obtener la imagen del kernel: se realiza luego de haber realizado la selección previa. Dependiendo si la versión del kernel es la 2.4 o 2.6.
    1. Resolver las dependencias (entre los .c y los .h): make dep (solo para 2.4)
    2. Realizar la limpieza de archivos objetos, imagen, intermedios manteniendo los de configuración: make clean (2.4 y 2.6), y make proper elimina también la información de configuración.
    3. El paso final es crear la imagen del kernel. El nombre de la imagen es vmlinuz y se realiza haciendo: make
    4. Existen otras tareas como comprimir la imagen, agregarle bootstrapping code
  4. Compilar los módulos que se cargan dinámicamente: simplemente make module

Building applications

Building root filesystem

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License