Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
15/ 32  
Plan  
1
2
3
Ré-compilation du noyau  
Drivers supplémentaires  
Configuration "from scratch"  
Préparer le toolchain  
Compilation from scratch  
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
16/ 32  
Préparer le toolchain  
Mise en oeuvre d’un toolchain avec Buildroot  
Préparation  
¯
¯
Créer l’arborescence suivante  
Accéder au répertoire br-tree  
Téléchargement de buildroot  
¯
Télécharger la dernière version de Buildroot  
$
wget http://www.buildroot.org/downloads/buildroot-2019.02.  
7.tar.bz2  
¯
¯
Décompresser le fichier téléchargé  
tar xf buildroot-2019.02.7.tar.bz2  
Accéder au répertoire créé  
cd buildroot-2019.02.7  
$
$
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
17/ 32  
Préparer le toolchain  
Mise en oeuvre d’un toolchain avec BUILDROOT  
Configuration de BUILDROOT  
¯
Démander la configuration par défaut pour la cible RPi3  
make raspberrypi3_defconfig  
Lancer l’outil de configuration  
make menuconfig  
$
¯
$
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
18/ 32  
Préparer le toolchain  
Mise en oeuvre d’un toolchain avec BUILDROOT  
Configuration de BUILDROOT  
‚
ƒ
Menu Target options (Rien à changer) : options relatives à la cible  
Menu Build options  
Download dir : Pour éviter le re-téléchargement des mêmes fichiers pour des re-  
compilations successives  
Nouvelle valeur : $(TOPDIR)/../dl  
Host dir : Spécifier l’emplacement où se trouvera la toolchain compilée  
Nouvelle valeur : $(TOPDIR)/../board/rpi-3/cross  
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
19/ 32  
Préparer le toolchain  
Mise en oeuvre d’un toolchain avec BUILDROOT  
Configuration de BUILDROOT  
„
Menu Toolchain  
C library : Spécifier quelle bibliothèque à utiliser pour bénéficier des services du  
système (appels système). La bibliothèque la plus complète est la Gnu C library  
Nouvelle valeur : glibc  
Kernel Headers : Choisir les fichiers headers du noyau à compiler  
Nouvelle valeur : Linux 4.19.x kernel headers.  
GCC compiler Version : Choisir gcc 8.x pour bénéficier des fonctionnalités  
d’une version plus récente du compilateur  
Nouvelle valeur : gcc 8.x  
Enable C++ support : activer le compilateur C++  
Nouvelle valeur : [*]  
Build cross gdb for the host : Avoir un débogueur sur le PC pouvant  
interprété le code ARM  
Nouvelle valeur : [*]  
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
20/ 32  
Préparer le toolchain  
Mise en oeuvre d’un toolchain avec BUILDROOT  
Configuration de BUILDROOT  
Menu System configuration : options relatives à la génération du système  
Init system : Nous désactivons BusyBox  
Nouvelle valeur : None  
Custom scripts to run before creating filesystem images  
Pas de script à exécuter,  
Nouvelle valeur : ()  
Custom scripts to run after creating filesystem images  
:
:
Pas de script à exécuter,  
Nouvelle valeur : ()  
†
‡
Menu Kernel  
Download dir : L’objectif est de générer la toolchain, donc à désactiver  
Nouvelle valeur : ()  
Menu Target packages  
BusyBox : C’est le seul package initialement présent. Nous le désactivons.  
Nouvelle valeur : ()  
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
21/ 32  
Préparer le toolchain  
Mise en oeuvre d’un toolchain avec BUILDROOT  
Configuration de BUILDROOT  
ˆ
‰
Menu Filesystem images  
ext2/3/4 root filesystem : Inutile, nous ne voulons pas un système de  
fichiers  
Nouvelle valeur : ()  
Menu Legacy config options : ce menu n’est utile que lorsque nous utilisons une  
ancienne configuration avec une nouvelle version de Builtroot pour déterminer les  
fonctions incompatibles.  
Générer la toolchain avec BUILDROOT  
¯
¯
¯
Sauvegarder la configuration et quitter menuconfig  
La configuration est sauvegardée dans un fichier nommé .config  
Il est utile pour des utilisations ultérieures de sauvegarder le fichier de configuration  
$
cp .config ../board/rpi-3/buildroot-2019.02.7-toolchain.config  
Générer la toolchain  
make toolchain  
$
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
22/ 32  
Compilation from scratch  
Compilation from scratch  
Préparation de BUILDROOT  
¯
¯
¯
¯
¯
¯
Accèder au répertoire br-tree créé pour la compilation de la toolchain  
cd $HOME/br-tree  
Supprimer le répertoire de la compilation /buildroot-2019.02.7  
rm -rf buildroot-2019.02.7  
Décompresser de nouveau l’archive de Buildroot  
tar xf buildroot-2019.02.7.tar.bz2  
Accéder au répertoire créé  
cd buildroot-2019.02.7  
Demander la configuration par défaut pour la cible RPi3  
make raspberrypi3_defconfig  
Lancer l’outil de configuration  
make menuconfig  
$
$
$
$
$
$
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
23/ 32  
Compilation from scratch  
Compilation from scratch  
Configuration de BUILDROOT  
‚
ƒ
Menu Target options : Rien à changer  
Menu Build options  
Download dir : Les fichiers téléchargés seront sauvegardés dans le même  
répertoire br-tree/dl  
Nouvelle valeur : $(TOPDIR)/../dl  
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
24/ 32  
Compilation from scratch  
Compilation from scratch  
Configuration de BUILDROOT  
„
Menu Toolchain : La configuration permettra de retrouver la toolchain créée  
Toolchain type : Indiquer à Buildroot que la toolchain est préexistante  
Nouvelle valeur : External toolchain  
Toolchain : elle a été compilée spécifiquement  
Nouvelle valeur : Custom toolchain  
Toolchain path : le répertoire dans lequel se trouve le sous-répertoire bin de la  
toolchain  
Nouvelle valeur : $(TOPDIR)/../board/rpi-3/cross/usr  
External toolchain gcc version : Nous spécifions la version du  
compilateur de notre toolchain créée  
Nouvelle valeur : 8.x  
External toolchain kernel headers serie : Spécifier la version du  
noyau identique à celle utilisée avec la toolchain  
Nouvelle valeur : Linux 4.19.x  
External toolchain C library : Le même choix que la toolchain, la  
bibliothèque GlibC  
Nouvelle valeur : glibc/eglibc  
Toolchain has C++ support : Oui, notre toolchain supporte C++  
Nouvelle valeur : [*]  
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
25/ 32  
Compilation from scratch  
Compilation from scratch  
Configuration de BUILDROOT  
Menu System configuration : Activer la gestion des périphériques à travers /dev  
Dans /dev management, sélectionner Dynamic using devtmps+mdev  
Activer Enable root login with password  
Sélectionner Root password et taper un mot de passe pour l’utilisateur root  
†
‡
Menu Kernel : Rien à changer  
Menu Target packages  
Dans  
Hardware handling -> Firmware --->,  
sélectionner  
rpi-wifi-firmware  
Dans Networking applications, sélectionner les packages suivants :  
crda, ifupdown scripts, iw, openssh, wireless-regdb  
wpa_supplicant avec Enable EAP, Enable WPS, Install wpa_cli  
binary, Install wpa_client shared library, Install  
wpa_passphrase binary  
ˆ
‰
Š
‹
Menu Filesystem images : rien à changer.  
Menu Bootloaders : rien à changer.  
Menu Host utilities : rien à changer.  
Menu Legacy config options : rien à changer.  
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
26/ 32  
Compilation from scratch  
Compilation from scratch  
Configuration post-compilation  
¯
Dans le répertoire ./board/raspberrypi3, créer les fichiers de configuration réseau  
Le fichier interfaces  
auto lo  
iface lo inet loopback  
auto wlan0  
iface wlan0 inet dhcp  
pre-up wpa_supplicant -B -Dwext -iwlan0  
-
c/etc/wpa_supplicant.conf  
post-down killall -q wpa_supplicant  
wait-delay 15  
iface default inet dhcp  
Le fichier wpa_supplicant.conf  
network={  
ssid="SSID"  
psk="PASSWORD"  
}
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
27/ 32  
Compilation from scratch  
Compilation from scratch  
Configuration post-compilation  
¯
Ajouter au fichier post-build.sh les lignes suivantes :  
Activer la gestion des périphériques à travers /dev  
#
cp package/busybox/S10mdev $TARGET_DIR/etc/init.d/S10mdev  
chmod 755 $TARGET_DIR/etc/init.d/S10mdev  
cp package/busybox/mdev.conf $TARGET_DIR/etc/mdev.conf  
#
Mettre les fichiers de configuration réseau  
cp board/raspberrypi3/interfaces $TARGET_DIR/etc/network/  
cp board/raspberrypi3/wpa_supplicant.conf $TARGET_DIR/etc/  
#
Activer la connexion pour l’utilisateur root avec SSH  
echo "PermitRootLogin yes" >>$TARGET_DIR/etc/ssh/sshd_config  
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
28/ 32  
Compilation from scratch  
Compilation from scratch  
Générer la distribution  
¯
¯
¯
Sauvegarder la configuration et quitter menuconfig  
La configuration est sauvegardée dans un fichier nommé .config  
Il est utile pour des utilisations ultérieures de sauvegarder le fichier de configuration  
$
cp .config ../board/rpi-3/buildroot-2019.02.7-kernel.config  
Lancer la compilation  
make  
$
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
29/ 32  
Compilation from scratch  
Compilation from scratch  
Kernel compilé  
¯
Tous les fichiers produits lors de la compilation se trouvent dans la sous arborescence  
output  
$
tree output -L 1  
Z build : tous les composants sont construits (ce qui inclut les outils nécessaires par  
Buildroot sur l’hôte et des paquets compilés pour la cible)  
Z host : contient l’installation des outils compilés pour l’hôte qui sont nécessaires pour  
la bonne exécution de Buildroot  
Z images : toutes les images (image du noyau, bootloader et système de fichiers racine)  
sont stockés. Ce sont les fichiers qui seront copiés sur le système cible  
Z staging : les en-têtes et les bibliothèques de la chaîne d’outils de compilation  
croisée et tous les paquets de l’espace utilisateur sélectionnés pour la cible  
Z target : contient presque le système de fichiers rootfs complet pour la cible : tout  
le nécessaire est présent, sauf les fichiers de périphérique dans /dev  
Entrées-sorties et interfaces de communication  
Configuration "from scratch"  
C.A. ABID  
30/ 32  
Compilation from scratch  
Compilation from scratch  
Tester la distribution  
¯
¯
¯
¯
Accéder au sous-répertoire output/images  
Le fichier sdcard.img est le fichier image à écrire sur la carte SD  
Écrire le fichier image sur la carte SD avec la commande dd  
Tester la distribution en se connectant via SSH, ou bien à travers le débogage UART