Table des matières

Installation et utilisation de Buildroot pour carte microzed

Buildroot est un outil permettant la création d'un système d'exploitation Linux complet adapté pour l'embarqué, incluant le “boot-loader”, le noyau, le “devicetree” et le système de fichiers “rootfs”.
Pour cette page, nous allons nous inspirer du tutoriel proposé par Xilinx.

Pré-installations

Nécessaires

Outils de récupération de sources :

ATTENTION : pour ces deux outils, il ne faut pas oublier de configurer les paramètres de proxy, si nécessaire.

Outils de compilation :

Installation

Utilisation

$ cd buildroot-2016-05 
  1. Appliquer la configuration par défaut pour les cartes microzed qui dans le fichier zynq_microzed_defconfig dans le répertoire configs. Éventuellement, si comme moi, les clonages avec git ne fonctionnent pas avec une adresse en git:, changer la ligne ou le dépôt git est indiqué
    BR2_LINUX_KERNEL_CUSTOM_REPO_URL="git://github.com/Xilinx/linux-xlnx.git"

    en :

    BR2_LINUX_KERNEL_CUSTOM_REPO_URL="https://github.com/Xilinx/linux-xlnx.git"

    Puis continuez ainsi :

    $ make zynq_microzed_defconfig
    ...
    #
    # configuration written to /.../Xilinx/buildroot-2016.05/.config
    #
  2. À partir de là, il est possible de changer les configurations par défaut avec menuconfig. Pur l'instant, nous ne changerons pas ces configurations, et nous allons juste les appliquer telles quelles :
    $ make menuconfig 

    Il faut choisir Exit pour rester avec la configuration par défaut.

    $ make  busybox-menuconfig 

    Il faut choisir Exit pour rester avec la configuration par défaut, et accepter de sauvegarder la configuration.

    $ make linux-menuconfig 

    Il faut choisir Exit pour rester avec la configuration par défaut.

  3. Maintenant, chargez et construisez les outils qui ont été configurés à l'étape précédente :
    $ make
    ...
    ...
    table='/.../Xilinx/buildroot-2016.05/output/build/_device_table.txt'
    /usr/bin/install -m 0644 support/misc/target-dir-warning.txt /.../Xilinx/buildroot-2016.05/output/target/THIS_IS_NOT_YOUR_ROOT_FILESYSTEM

    Cela prend du temps. S'il y a des erreurs vérifiez que les paquets mentionnés plus haut sont installés sur votre machine, que le chemin de la variable $PATH inclus l'accès au binaire du programme dtc et que les configurations proxy sont correctes en particulier pour wget et git.

Toutes les éléments générés se trouvent dans le répertoire output. Pour modifier cela, ce qui peut être utile pour générer des images avec plusieurs configurations possibles, on peut utiliser l'option O=. Par exemple :

$ make O=../output_microzed_default/ zynq_microzed_defconfig

Cela créera l'arborescence des différentes sorties de compilation ainsi que le fichier de configuration .config dans le répertoire output_microzed_default qui se trouvera au niveau inférieur du répertoire général de buildroot.

Installation sur la carte SD

<color red>REMARQUE</color> : à partir de ce point nous allons travailler avec la version de buildroot installée dans une machine virtuelle pré-configurée avec Vagrant, comme indiqué dans ce sujet. <color red>Il peut y avoir alors quelques différences avec une version installée sur votre système</color>.


Une fois le processus de construction par défaut complété, les images se trouvent dans le répertoire /output/images, ou celui définit par l'option O=:

$ cd buildroot-2016.08/output/images/
$ ls
boot.bin     rootfs.cpio.gz     rootfs.tar  uImage
rootfs.cpio  rootfs.cpio.uboot  u-boot.img  zynq-zed.dtb

Le fichier readme.txt dans le répertoire buildroot-2016.08/board/zynq donne les informations suivantes :
Créer une partition FAT32 au début de votre carte SD et copier les fichiers

sur votre carte SD. C'est tout. Une fois la carte installée sur la microzedzed, vous pouvez démarrer la carte.

Modifications

Lorsque qu'une modification est apportée quelque part dans les fichiers générés lors de la construction du système, il est nécessaire de recompiler la partie concernée.

Modifications dans l'arborescence de linux - influences de rootfs

 
$ touch .config
$ make

Cela reconstruira les fichiers rootfs.cpio ; rootfs.cpio.gz ; rootfs.cpio.uboot ; rootfs.tar.

Modifications dans l'arborescence de linux ou de "device tree"

$ make linux-rebuild

Cela reconstruira les fichiers uImage ; zynq-zed.dtb.

Modifications dans l'arborescence de u-boot

$ make uboot-rebuild

Cela reconstruira les fichiers boot.bin ; u-boot.img.

Utilisation un peu plus avancée

Architecture du système de démarrage

Sur la carte SD, on trouve :

1)2)