InicioLinuxComo crear nuestro propio sistema embebido con buildroot

Como crear nuestro propio sistema embebido con buildroot

Linux1/2/2016

Hola compañeros,



En esta ocasión les mostraré como construir desde cero nuestro propio sistema embebido. Para eso utilizaremos buildroot, una herramienta que facilita mucho el proceso descargando las fuentes, compilando y configurando de forma automática (luego veremos que no es tan así) y soportar una gran variedad de arquitecturas.

Necesitaremos tener instalado git, syslinux y cdrkit (estos dos ultimos si queremos crear un live)

Primero clonaremos el repositorio remoto:

cd && git clone git://git.buildroot.net/buildroot



Entramos en el repositorio y ejecutamos la herramienta configuración de buildroot.
Aquellos que compilen sus kernels manualmente se sentirán familiarizados con la interface.

cd buildroot && make menuconfig



Estas son las configuraciones recomendadas por el manual de usuario de buildroot, sin embargo Uds. adaptenlo a lo que crean mas conveniente.


Configuración del menú toolchain:

Toolchain —>

[X] Enable WCHAR support
[X] Enable C++ support
 



Configuración del menú System configuration -->

(buildroot) System hostname
Cambiamos el nombre del host por el que nos guste
(Welcome to Buildroot) System banner
Cambiamos por un mensaje de bienvenida que nos guste


Configuración del menu Target Packages:

Target Packages —>
Graphic libraries and applications (graphic/text) —>
[X] xterm
[X] dillo
[X] feh
Aquí si quieren también pueden agregar algún WM.



[X] X.org X Window System —>
X11R7 Servers -->
[X] Xorg-server
X Window System server type  —>
[X] Modular X.org


X11R7 Applications —>
[X] setxkbmap        
[X] twm
[X] xclock
[X] xinit
[X] xinput        
[X] xkbcomp
[X] xclipboard


X11R7 Drivers —>
[X] xf86-input-synaptics
[X] xf86-input-keyboard
[X] xf86-input-mouse
[X] xf86-video-cirrus    
[X] xf86-video-fbdev
[X] xf86-video-vesa




X11R7 Fonts -->
[X] font-xfree86-type1 
[X] font-adobe-75dpi  



Libraries –>
Text and terminal handling —>
[X] ncurses       



Kernel —>
[X] Linux Kernel
Defconfig name : x86_64


Target filesystem options —>
[[X] initial RAM filesystem linked into linux kernel


Target options -->
Target Architecture -->
[X] X86_64




Comenzamos a compilar. Este proceso demora bastante, en mi equipo me demora 30 minutos aprox.

sudo make



Durante este proceso es probable que se nos presentes algunos inconvenientes con la compilacion. Aparentemente en algunos paquetes (principalmente los del grupo xdriver_xf86*) buildroot se olvida ejecutar el ./configure de los paquetes antes de hacer make, lo cual termina en un error; generalmente por la falta de los archivos de chequeo que genera el configure; los mismo son .stamp_configure, .stamp_built, .stamp_target_installed (en ese orden).
Como buildroot se detendrá con un error, aprovechamos para ejecutar el .configure a mano.
Entramos a ~/buildroot/output/build/paqueteque falló
y ejecutamos:

sudo ./configure && cd ../../../ && sudo make



Otra de las cosas que suelen fallar, es que buildroot no usa el defconfig para compilar el kernel, así que debemos crear un .config para el kernel:
Entramos a :

~/buildroot/output/build/linux-4.x.x/

Y ejecutamos:

sudo make menuconfig

Si no sabemos como configurar un kernel simplemente denle a save, salen y vuelven a master:

cd ../../../ && sudo make

No nos preocupemos buildroot no comenzará todo de nuevo, solo desde el punto que se produjo el error. Probablemente si se produjo un error sobrevengan varios mas, todos los solucionaremos de la misma manera.

Si mas tarde queremos agregar paquetes o modificar configuraciones, podremos usar nuevamente:

sudo make menuconfig && sudo make

Y reconstruirá con las modificaciones. Aquí también solo compilará las modificaciones, asi que no empezaremos todo nuevamente, solo compilará e inyectará lo que modificamos.


Terminado este proceso debería habernos dejado un archivo bzImage en ~/buildroot/output/images/
Este arcchivo contiene todo lo que necesitamos. Podríamos iniciarlo desde el grub si quisiéramos (recuerden que el initramfs se compiló junto con el kernel) o bien hacerlo un livecd, para poder iniciarlo desde un cd (valga la redundancia) o desde un USB.



Como hacer un livecd con nuestro nuevo sistema.


Creamos una carpeta para contener los archivos de la ISO, copiamos el bzImage a la carpeta que creamos y nos ubicamos dentro de la misma:

mkdir ~/miiso && cp bz* ~/miiso/ && cd ~/miiso

Copiamos isolinux.bin y ldlinux.c32:

sudo cp {/usr/share/syslinux/isolinux.bin,/usr/share/syslinux/ldlinux.c32} ~/miiso/


Chequeen que tengan instalado syslinux en /usr/share/syslinux, porque dependiendo de la distro (yo uso gentoo) pueden ubicarse un otro directorio.

Ahora crearemos un mensaje de bienvenida antes de bootear en sistema. Para ello crearemos en archivo boot.msg y dentro del mismo el mensaje que queremos mostrar.
También debemos crear un archivo de configuración para syslinux. El mismo debe llamarse isolinux.cfg.
Syslinux es totalmente configurable, lo que yo aquí les dejo es solo una configuración mínima y funcional.


default mabas
timeout 150
ontimeout localhost
prompt 1
display boot.msg


label mabas
kernel bzImage



label localhost
localboot -1
MENU HIDE


Creo que se entiende cada cosa, sino me preguntan. Guardamos el archivo.

Creamos la ISO:


sudo genisoimage -J -r -o milivecd.iso -b isolinux.bin -c boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table ~/miiso


En este momento ya podrán iniciar la iso en una maquina virtual o desde un CD/DVD. Si queremos que ademas inicia desde un USB debemos usar isohybrid:

sudo isohybrid milivecd.iso



Y ya podrán iniciarla desde un USB sin problemas.




Algunas consideraciones:

- El único usuario del sistema es root y sin password.
- Para iniciar las X deben iniciarlas UDs, con startx.
- Si quieren configurar a mano el sistema solo deben modificar lo necesario en ~/buildroot/output/target.


Eso es todo.

Hasta la próxima.






Datos archivados del Taringa! original
184puntos
921visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
0visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

No hay comentarios nuevos todavía

Autor del Post

m
mabas011🇦🇷
Usuario
Puntos0
Posts8
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.