Buildroot 4 anni dopo ma sempre su Arietta G25.

Parte prima. Introduzione.

Ed è proprio nel corso di quei 3 giorni di incontri che si svolsero a Via AldoMoro 53 in quel di Ladispoli, nella sede di Acmesysytems, che avvenne l’incontro con Buildroot.

Il ricordo è vago ed in parte negativo.
Devo confessare di essere riuscito ad andare molto più d’accordo con l’accoppiata multistrap e qemu per creare delle distribuzioni su cui poter sperimentare in libertà su Arietta.
(Questo va detto, anche grazie alla tanta e ben fatta documentazione redatta dal buon Sergio Tanzilli).

Ad ogni modo mi sembra arrivato il momento di riprovarci.
Scarico buildroot-2020.02.1.tar.gz.
Decomprimo nella cartella ~/sviluppo del portatile.
Il file README recita:

Buildroot is a simple, efficient and easy-to-use tool to generate embedded
Linux systems through cross-compilation.

The documentation can be found in docs/manual. You can generate a text
document with ‘make manual-text’ and read output/docs/manual/manual.text.
Online documentation can be found at http://buildroot.org/docs.html

To build and use the buildroot stuff, do the following:

1) run ‘make menuconfig’
2) select the target architecture and the packages you wish to compile
3) run ‘make’
4) wait while it compiles
5) find the kernel, bootloader, root filesystem, etc. in output/images

You do not need to be root to build or run buildroot. Have fun!

Buildroot comes with a basic configuration for a number of boards. Run
‘make list-defconfigs’ to view the list of provided configurations.

Please feed suggestions, bug reports, insults, and bribes back to the
buildroot mailing list: buildroot@buildroot.org
You can also find us on #buildroot on Freenode IRC.

If you would like to contribute patches, please read
https://buildroot.org/manual.html#submitting-patches


Sintetico direi!

Lo User manual invece spaventa alquanto.

Nella sezione Buildroot quick start si parla delle 4 opportunità di configurazione della build attraverso i comandi:

$ make menuconfig
$ make nconfig
$ make xconfig
$ make gconfig

Rispettivamente basati su curses, ncurses, Qt, Gtk.

Inizialmente ho preferito optare per il gconfig ovviamente non prima di un: sudo apt-get install libgtk2.0-dev libglib2.0-dev libglade2-dev.
Anticipo subito che sarei passato in brevissimo tempo al classico, intramontabile, menuconfig col quale avevo già preso dimestichezza configurando kernels.

Una piacevole scoperta è stata quella di trovare dei files defconfig nella directory configs/.
Per Arietta erano presenti i seguenti 2: acmesystems_arietta_g25_128mb_defconfig e acmesystems_arietta_g25_256mb_defconfig.
Giusto per chiarezza:

antonino@smilzo:~/sviluppo/buildroot-2020.02.1/configs$ diff acmesystems_arietta_g25_128mb_defconfig acmesystems_arietta_g25_256mb_defconfig
34c34
< BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="arietta-128m"
---
> BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="arietta-256m"

Di seguito uno dei due defconfig:

# Architecture
BR2_arm=y
BR2_arm926t=y

# Kernel headers
BR2_PACKAGE_HOST_LINUX_HEADERS_CUSTOM_4_19=y

# System configuration
BR2_TARGET_GENERIC_ISSUE="Welcome to Arietta-G25 Buildroot"
BR2_TARGET_GENERIC_GETTY_PORT="ttyS0"
BR2_TARGET_GENERIC_GETTY_BAUDRATE_115200=y
BR2_ROOTFS_POST_IMAGE_SCRIPT="support/scripts/genimage.sh"
BR2_ROOTFS_POST_SCRIPT_ARGS="-c board/acmesystems/arietta-g25/genimage.cfg"

# Kernel configuration
BR2_LINUX_KERNEL=y
BR2_LINUX_KERNEL_CUSTOM_VERSION=y
BR2_LINUX_KERNEL_CUSTOM_VERSION_VALUE="4.19"
BR2_LINUX_KERNEL_DEFCONFIG="at91_dt"
BR2_LINUX_KERNEL_DTS_SUPPORT=y
BR2_LINUX_KERNEL_INTREE_DTS_NAME="at91-ariettag25"
BR2_LINUX_KERNEL_NEEDS_HOST_OPENSSL=y

# Root filesystem
BR2_TARGET_ROOTFS_EXT2=y
BR2_TARGET_ROOTFS_EXT2_4=y
BR2_TARGET_ROOTFS_EXT2_LABEL="rootfs"

# AT91bootstrap bootloader
BR2_TARGET_AT91BOOTSTRAP3=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_GIT=y
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_URL="https://github.com/linux4sam/at91bootstrap.git"
BR2_TARGET_AT91BOOTSTRAP3_CUSTOM_REPO_VERSION="v3.8.13"
BR2_TARGET_AT91BOOTSTRAP3_DEFCONFIG="arietta-256m"

# Tools to build sdcard.img
BR2_PACKAGE_HOST_DOSFSTOOLS=y
BR2_PACKAGE_HOST_GENIMAGE=y
BR2_PACKAGE_HOST_MTOOLS=y


Abbiamo fatto una prima serie di scoperte…
L’unica differenza tra i due files riguarda il bootloader di secondo livello (quello di primo livello sta in rom).


© Copyright 2004-2020, Bootlin. Creative Commons BY-SA 3.0 license.

 

In effetti va sottolineato come Buildroot si occupi di tutti gli aspetti della creazione di un sistema Linux embedded, dal file dtb fino al file system, passando per kernel e bootloader di secondo livello.
In questa prima disamina mi sto preoccupando della sola generazione del rootfs avendo già pronto (compilato a parte) tutto quanto riguardi la partizione di boot (zImage, boot.bin, e file dtb).

Pubblicato in Digitale, Linux.

admin

Admin, per l'anagrafe Antonino Brisindi e per i colleghi radioamatori IZ0HEM,
nasce a Giugno del 1972.
Si cimenta in diverse discipline. Dal motociclismo all'elettronica.
Dalla meccanica delle chiavi inglesi al Jazz delle ance.
Dalla cucina dei fornelli alle dinamiche di volo ad ala mobile.
Interagisce con tutto quello che intercorre tra un 6502 ed un sistema embedded.
Capisce davvero poco di tutto quello che fa ed in questo periodo ama definirsi un pessimo system integrator! ;-)