Image minimale pour Raspberry Pi


Logiciel Electronique

Dans cet article, nous allons voir comment générer un système Linux complet (noyau + rootfs) pour Raspberry Pi à l’aide du projet Yocto.

L’objectif est de vous familiariser avec les outils Yocto en construisant une image minimale pour Raspberry Pi.

1. Qu’est-ce que le Raspberry Pi ?

Le Raspberry Pi est un nano-ordinateur à processeur ARM de la taille d’une carte de crédit. Conçu pour encourager l’apprentissage de la programmation, il permet d’exécuter plusieurs variantes de GNU/Linux. Son prix de lancement était d’environ 25 $ en 2011. En septembre 2016, plus de dix millions d’unités avaient déjà été vendues. Source : https://fr.wikipedia.org/wiki/Raspberry_Pi

2. Qu’est-ce que Yocto ?

Yocto est un ensemble d’outils permettant de créer une distribution Linux adaptée aux besoins d’un projet (processeur, logiciels, contraintes matérielles, etc.). Très utilisé dans l’industrie, il est notamment adopté par de nombreux fondeurs pour fournir leurs BSP, et sert de base à beaucoup de produits Linux embarqués. Source : https://www.yoctoproject.org

3. Et si on s’y mettait ?

Pour commencer, munissez-vous d’un ordinateur sous Linux et installez les utilitaires nécessaires au bon fonctionnement de Yocto.

$ sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib \
  build-essential chrpath socat cpio python python3 python3-pip \
  python3-pexpect xz-utils debianutils iputils-ping libsdl1.2-dev xterm

Nous allons ensuite créer un dossier YOCTOPI à la racine du répertoire utilisateur. Il est fortement recommandé de ne pas utiliser Yocto en tant que super-utilisateur.

$ mkdir ~/YOCTOPI
$ cd ~/YOCTOPI

Récupérons maintenant les layers nécessaires pour générer notre système.

$ git clone git://git.yoctoproject.org/poky -b morty
$ git clone git://git.yoctoproject.org/meta-raspberrypi -b morty

Après le téléchargement, il faut initialiser l’environnement (cette étape est à refaire à chaque nouvelle session terminal ou après un redémarrage).

$ source poky/oe-init-build-env build

Après l’exécution de la commande précédente, vous serez redirigé automatiquement vers le dossier ~/YOCTOPI/build. C’est normal : c’est à partir de ce répertoire que Yocto travaille.

Il faut maintenant éditer le fichier ~/YOCTOPI/build/conf/bblayers.conf pour renseigner les emplacements des layers disponibles :

# POKY_BBLAYERS_CONF_VERSION is increased each time build/conf/bblayers.conf
# changes incompatibly
POKY_BBLAYERS_CONF_VERSION = "2"

BBPATH = "${TOPDIR}"
BBFILES ?= ""

BBLAYERS ?= " \
  /home/user/YOCTOPI/poky/meta \
  /home/user/YOCTOPI/poky/meta-poky \
  /home/user/YOCTOPI/poky/meta-yocto-bsp \
  /home/user/YOCTOPI/meta-raspberrypi \
  "

Dernière étape de configuration : renseigner la machine cible dans le fichier ~/YOCTOPI/build/conf/local.conf.

...
#MACHINE ??= "qemux86"
MACHINE ?= "raspberrypi3-64"
...

La liste des versions de Raspberry Pi disponibles est consultable dans ~/YOCTOPI/meta-raspberrypi/conf/machine.

4. Go Yocto !

C’est parti : il ne reste plus qu’à lancer la génération du système. La première build peut prendre plusieurs heures selon la machine utilisée.

$ bitbake rpi-hwup-image

Parsing recipes: 100% |#####################################################################################################| Time: 0:00:37
Parsing of 885 .bb files complete (0 cached, 885 parsed). 1339 targets, 75 skipped, 0 masked, 0 errors.
NOTE: Resolving any missing task queue dependencies

Build Configuration:
BB_VERSION        = "1.32.0"
BUILD_SYS         = "x86_64-linux"
NATIVELSBSTRING   = "universal"
TARGET_SYS        = "aarch64-poky-linux"
MACHINE           = "raspberrypi3-64"
DISTRO            = "poky"
DISTRO_VERSION    = "2.2.2"
TUNE_FEATURES     = "aarch64"
TARGET_FPU        = ""
meta
meta-poky
meta-yocto-bsp    = "morty:dc51e92b001bf6615f6836a8774bf3afb9ad449a"
meta-raspberrypi  = "morty:83422c158d0870d03d81c6e94f770ac52463e187"

Initialising tasks: 100% |####################################################################################################| Time: 2:14:03
NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
NOTE: Tasks Summary: Attempted 2124 tasks of which 0 didn't need to be rerun and all succeeded.

5. Flash de la carte SD/µSD de la Raspberry Pi

Maintenant que Yocto a terminé la génération du système, il ne reste plus qu’à flasher l’image sur la carte mémoire. Les images générées pour cette architecture se trouvent dans ~/YOCTOPI/build/tmp/deploy/images/raspberrypi3-64/.

En partant de l’hypothèse où votre carte SD est disponible via le chemin /dev/mmcblk0 (ou /dev/sd... selon votre matériel), voici les commandes à exécuter :

$ sudo dd if=~/YOCTOPI/build/tmp/deploy/images/raspberrypi3-64/rpi-hwup-image-raspberrypi3-64.rpi-sdimg of=/dev/mmcblk0 bs=1M
$ sync

Il ne vous reste plus qu’à insérer la carte mémoire dans le Raspberry Pi, l’alimenter et profiter de votre système personnalisé.

Capture de la page de connexion du Raspberry Pi

Pour vous connecter, rien de plus simple :

Login : root
Mot de passe :

Remarque : le Raspberry Pi met environ 15 secondes avant d’afficher le prompt de connexion. Ce temps peut encore être réduit en désactivant certains modules du noyau et en configurant l’accès réseau sans DHCP.

© 2026 Cyrille Dromas