Sistema de archivo e Imagen del Kernel

CREAR EL SISTEMA DE ARCHIVOS
La carpeta suministrada por el profesor (dl) se remplaza por la contenida en la carpeta buildroot-2013.08.1

Nos ubicamos dentro de la carpeta buildroot-2013.08.1 y ejecutamos el siguiente comando:

make menuconfig Este comando abre una interfáz en donde podemos seleccionar los paquetes de software que queremos incluir dentro de nuestro sistema de archivos, en la parte superior están las instrucciones de navegación en la interfaz. Una vez se terminen de escoger los paquetes que se desean se selecciona "exit" hasta volver a la ventana del terminal en donde ejecutamos el comando make.

2.1.1 Solución de posibles errores.

En el proceso de compilación se pueden presentar dos problemas, uno de ellos es el siguiente:

You must install 'svn' on your build machine svn is usually part of the subversion package in your distribution make: *** [core-dependencies] Error 1

El cual se soluciona sencillamente ejecutando el siguiente comando en la terminal:

sudo apt-get install svn-buildpackage

Otro error que se puede presentar es el siguiente:

ERROR:'jtag_status' may be used uninitialized in this function [-Werror=maybe-uninitialized]

La solución para este problema es ir a la carpeta buildroot-2013.08.1/output/build/openocd7.0-0/src/target y el el makefile modificar las siguientes líneas de código de tal forma que queden como se muetra a continuación:

CFLAGS = -D_LARGEFILE_SOURCE -D_LARGEFILE64_SOURCE -D_FILE_OFFSET_BITS=64 -pipe -Os -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls

CFLAGS_FOR_BUILD = -g -O2 -Wall -Wstrict-prototypes -Wformat-security -Wshadow -Wextra -Wno-unused-parameter -Wbad-function-cast -Wcast-align -Wredundant-decls

Una vez terminado este proceso se vuelve a ejecutar el comando make en el terminal y se espera que termine la compilación (puede tardar incluso varias horas dependiendo del computador y el soporte del sistema de archivos).

Revisión del sistema de archivos que se acaba de crear
En la carpeta buildroot-2013.08.1/output/images debe aparecer un archivo comprimido con el nombre "rootfs.tar", se revisa la fecha de creación y se confirma que si sea el archivo generado.

Agregar la ruta de compilación a la terminal
Esto se debe hacer cada vez que se realice el proceso o cambiar el path por defecto el el archivo bashsc una única vez.

Para agregar el path desde la terminal se debe usar el siguiente comando:

export PATH=$PATH:/home/ricardo/Documentos/buildroot-2013.08.1/output/host/usr/bin

Para agregar el path al bashsc se escribe el siguiente comando en la terminal y se agrega la misma línea al final del archivo

gedit ~/.bashrc

Esto se hace con el fin de que los archivos ejecutables para el compilador estén disponibles en el path del sistema.

Una forma rápida de confirmar que el path sea el correcto es teclear "arm-linux-" y presionar la tecla de tabular 2 veces, con esto debe aparecer una lista en donde los elementos tienen la forma "arm-linux- ".

Definir la arquitectura del procesador y las herramientas del compilador
para esto se usa este comando una vez definido el path estando ubicados en la capeta linux-2.6.35.3

make ARCH=arm CROSS_COMPILE=arm-linux- menuconfig

"ARCH=arm" hace referencia a que tome la arquitectura arm del procesador y no la que se tienen por defecto en linux que es la de los procesadores con arquitectura mx86.

"CROSS_COMPILE=arm-linux-" se utiliza para que se compilen todas los archivos de nombre arm-linux- que se vieron en el listado de comprobación del paso anterior.

"menuconfig" es para definir todas la preferencias de la imagen del kernel a crear, una vez terminado salimos de nuevo al terminal y usamos el comando "make ARCH=arm CROSS_COMPILE=arm-linux-" para iniciar la compilación.

Se pueden presentar errores que tienen que ver con la falta de un archivo, el archivo si existe pero al parecer no tiene un link asociado que lo relacione con el compilador, para solucionar esto se siguen los siguietes pasos:

Ubicarse en la carpeta buildroot-2013.08.1/output/host/usr/bin y crear el link faltante usando el siguiente comando:

ln -s arm-buildroot-linux-uclibcgnueabi-ld.real arm-linux-ld.real

Comprobar que la imagen del kernel haya sido creada
dentro de la carpeta linux-2.6.35.3 ejecutamos el siguiente comando :

ls -l arch/arm/boot

Esto nos muestra una lista de los archivos presentes en la ruta, dentro de los cuales debe haber uno llamado "zimage" y la fecha y hora de creación, con lo cual se puede confirmar que es la imagen que se acaba de generar.

Descomprimir el sistema de archivos
ubicarse en la carpeta /buildroot-2013.08.1/output/Images y ejecutar el comando

 sudo tar -xvf rootfs.tar -C /media/user(el nombre de su computador)/disk (es el nombre largo)/

Modificar el archivo de inicio del sistema
Ejecutar sudo nautilus y abrir la memoria sd

en la carpeta /etc de la memoria sd buscar el archivo inittab y modificar la línea donde se encuentra "ttyS0" por "ttyAM0"

GUARDAR LA IMAGEN DEL KERNEL DE LINUX DENTRO DE LA MEMORIA SD
Ubicarse en la carpeta Imx-bootlets-src-10.05.02

Con el comando sudo fdisk -l verificar el nombre asignado a la tarjeta sd por el sistema, en caso de que sea diferente a "sdb", ingresar al make file de la misma carpeta y modificar las siguientes líneas:

sudo dd if=sd_mmc_bootstream.raw of=/dev/ sudo umount /dev/ *

Montar la imagen del kernel sobre la sd
con el siguiente comando se graba la imagen del kernel en la sd:

make ARCH=mx23 CROSS_COMPILE=arm-linux-

el "mx23" se usa porque es la familia del procesador que se está usando.

5.1.1 Al descomprimir la imagen del kernel en la memoria sd se puede presentar un problema por la falta del ejecutable "elftosb2", esto se soluciona fácilmente dirigiendose a la carpeta Imx-bootlets-src-10.05.02 utilizando sudo nautilus y copiando el ejecutable antes mencionado para después pegarlo en la carpeta /usr/bin de su computador

Una vez se haya copiado el ejecutable se le dan permisos mediante el siguiente comando

sudo chmod +x /usr/bin/elftosb2