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.
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 :
$ git clone https://git.kernel.org/pub/scm/utils/dtc/dtc.git $ cd dtc/ $ make $ export PATH=<path-containing-dtc>/dtc:$PATH
Ou, vous pouvez ajouter ce chemin vers le binaire dtc dans le fichier ~/.profile afin de le retrouver au prochain démarrage de votre session (pas besoin de la commande export).
$ cd Xilinx $ wget https://buildroot.org/downloads/buildroot-2016.05.tar.gz $ tar xzvf buildroot-2016.05.tar.gz
$ cd buildroot-2016-05
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 #
$ 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.
$ 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.
<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.
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.
$ touch .config $ make
Cela reconstruira les fichiers rootfs.cpio ; rootfs.cpio.gz ; rootfs.cpio.uboot ; rootfs.tar.
$ make linux-rebuild
Cela reconstruira les fichiers uImage ; zynq-zed.dtb.
$ make uboot-rebuild
Cela reconstruira les fichiers boot.bin ; u-boot.img.
Sur la carte SD, on trouve :