Tutoriel Yocto Project 1: Baking une image Linux minimale à partir de zéro

Erick Andrés Obregón Fonseca
6 min readNov 2, 2020

--

Introduction

Même si je suis encore un étudiant, j’ai toujours voulu partager un peu les connaissances que j’ai acquises tout au long de mes études universitaires. C’est pourquoi j’ai decidé d’écrire ceci, mon premier blog. C’est pourquoi j’apporte un outil que j’ai appris à utiliser dans le cours d’Introduction aux Systèmes Embarqués et que j’ai trouvé très intéressant.

Qu’est-ce que c’est le Yocto Project ?

Le projet Yocto est un projet collaboratif open source qui vous aide à créer des systèmes personnalisés basés sur Linux, indépendamment de l’architecture du hardware[1].

Comme ils le disent sur leur page, le Yocto Project n’est pas une distribution Linux embarqué, mais il en crée une personnalisée pour vous.

Il a plusieurs versions de Yocto Project. Je mentionnarai les cinq dernières versions, mais vous pouvez toutes les trouver dans [2].

Comme vous pouvez voir, la version Hardnott n’a pas encore été publiée (du moins au moment où j’ai écrit ce post).

Le Yocto Project fournit, à travers le système de construction OpenEmbedded, un environnement de développement open source ciblant les architectures ARM, MIPS, PowerPC et x86 pour une variété de plates-formes, y compris x86–64 et émulées. Vous pouvez utiliser les componsants du Yocto Project pour concevoir, développer, construire, déboguer, simuler et tester la pile du software complète en utilisant Linux, le système X Window, les frameworks GTK+ et les frameworks Qt [3].

The Yocto Project Development Environment. Taken from [3].

Pour ce tutoriel, nous utiliserons Poky Dunfell car j’ai déjà bossé avec ça et je n’ai eu aucun problème.

Pourquoi je devrais utiliser ma propre image Linux personnalisée ?

Les systèmes d’exploitation à usage général, tels que Windows, macOS, ou la plupart des distribution Linux, ont plusieurs tâches à exécuter en arrière-plan, ainsi que plusieurs applications installées dont nous n’avons pas besoin ou que nous n’utiliserons jamais sur ses systèmes embarqués. Toutes ces raisons, ainsi que les ressources limitées de nos systèmes, le fait de rendre ces systèmes d’exploitation inefficaces ou excessifs pour notre pauvre hardware. Dites-vous que vous n’aurez pas besoin d’un éditeur de texte, d’un package bureautique ou d’un lecteur PDF dans son système embarqué si vous avez l’intention de bosser avec un appareil IoT.

Construire nos propes systèmes d’explotation nous permet d’installer uniquement les dépendances et le software dont nous avons besoin. Cela nous permet de mieux contrôler et de tirer parti de notre hardware limité et de rendre notre système plus efficace en n’exécutant que les tâches dont il a besoin.

Avant de commencer

Environnement

Avant de commencer à bosser avec Yocto, nous devons assurer que nous remplissons certaines conditions:

  • Une version Linux prise en charge (comme Fedora, OpenSUSE, CentOS, Debian, ou Ubuntu). Vous pouvez les vérifier dans [4].
  • Le système de construction OpenEmbedded devrait pouvoir fonctionner sur n’importe quelle distribution moderne qui a les version suivantes pour Git 1.7.8 ou supérieur, tar 1.24 ou supérieur et Python 2.7.3 ou supérieur [4].
  • Au moins 50 GB d’espace disque disponible pour la création d’images.

Installer les dépendances

Tout d’abord, nous devons installer les packages nécessaires pour exécuter Yocto. Ouvrons un terminal et copions et collons la ligne suivante:

sudo apt-get install gawk wget git-core diffstat unzip texinfo gcc-multilib build-essential chrpath socat libsdl1.2-dev xterm

Dans mon cas, j’avais déjà tous les packages installés.

Installer QEmu

C’est la partie la plus simple, il vous suffit d’exécuter:

sudo apt-get install qemu

Téléchargement de Poky Dunfell

Il y a deux options pour télécharger Poky Dunfell. La première es d’aller sur ce lien et de télécharger le ficher compressé tar.bz ou de taper dans un terminal:

wget http://downloads.yoctoproject.org/releases/yocto/yocto-3.1.2/poky-dunfell-23.0.2.tar.bz2

Je vais le télécharger dans mon dossier utilisateur. Cela peut prendre un certanin temps en fonction de la vitesse de votre connexion, alors soyez patient.

Maintenant, nous avons besoin de décompresser le fichier téléchargé.

tar -xvf poky-dunfell-23.0.2.tar.bz2

Cela créera un nouveau dossier appelé poky-dunfell-23.0.2 (vous pouvez changer le nom si vous souhaitez, mais ce n’est pas nécessaire). Maintenant, entrons dans le dossier et montrons son contenu.

Baking notre Image

Maintenant, nous allons créer quelques dossiers pour bosser. Le premier est un dossier où Yocto téléchargera tous nos packages et nos dépendances (dossier downloads), et le second sera utilisé pour notre image (dossier qemu-arm). Vous pouvez les nommer comme vous souhaitez.

mkdir downloads
mkdir qemu-arm

Nous devons exécuter le script pour configurer l’environnement nécessaire aux variables et aux commandes du Yocto Project, c’est le fichier oe-init-build-env. Cela ira dans le dossier qemu-arm.

. oe-init-build-env qemu-arm

Assurez-vous d’exécuter cette commande chaque fois que vous devez construire ou reconstruire l’image.

Si nous jetons un coup d’œil dans le dossier conf, nous pouvons voir quelques fichiers de configuration. Pour ce tutoriel, nous nous intéressons uniquement au ficher local.conf où nous pouvons definir l’architecture de la machine et le chemin du dossier de téléchargement. En cela, nous devons ajouter les lignes suivantes à la fin du fichier en modifiantt <user> pour votre utilisateur:

DL_DIR ?= “/home/<user>/poky-dunfell-23.0.2/downloads”
INHERIT += “rm_work”
MACHINE ?= “qemuarm”

Vous pourriez utiliser d’autres architectures de test fournies dans le fichier local.conf comme:

Il y a un # devant de chaque commentaire. Vous pouvez également utiliser le dossier par défaut pour les téléchargements.

Enfin, nous pouvons construire notre image. Ce processus peut prendre un certain temps… 2 à 6 heures… selon votre connexion Internet et la puissance de traitement de votre workstation (dans ce cas, votre ordinateur). Mais ne soyez pas submergé, car heureusement, chaque fois que vous apportez un changement ou ajoutez un nouvelles recettes (ensemble d’instructions pour la construction de packaages [5]), Yocto va simplement reconstruire les changements et non l’ensemble du project, rendant ce processus moins chronophage.

bitbake core-image-minimal

Vous pouvez réexécuter la commande pour voir que la construction ne prendra plus que quelques minutes.

Tester notre Image

Maintenant, testons notre image. Puisque notre image n’est pas graphoque mais console, nous devons la spécifier pour qu’elle ne produise pas d’erreur.

runqemu qemuarm nographic

Maintenant, tapez root, et nous avons terminé.

Références Bibliographiques

[1] “Yocto Project — It’s not an embedded Linux distribution — it creates a custom one for you”, Yoctoproject.org. [En ligne]. Disponible: https://www.yoctoproject.org/. [Accédé: 23- Oct- 2020].

[2] “Releases — Yocto Project”, Wiki.yoctoproject.org. [En ligne]. Disponible: https://wiki.yoctoproject.org/wiki/Releases. [Accédé: 23- Oct- 2020].

[3] ”Yocto Project Quick Start”, Yoctoproject.org. [En ligne]. Disponible: https://www.yoctoproject.org/docs/1.8/yocto-project-qs/yocto-project-qs.html. [Accédé: 25- Oct- 2020].

[4] ”Yocto Project Reference Manual”, Yoctoproject.org. [En ligne]. Disponible: https://www.yoctoproject.org/docs/1.8/ref-manual/ref-manual.html. [Accédé: 25- Oct- 2020].

[5] “Yocto Project Development Manual”, Yoctoproject.org. [En ligne]. Disponible: https://www.yoctoproject.org/docs/1.6/dev-manual/dev-manual.html. [Accédé: 26- Oct- 2020].

--

--

Erick Andrés Obregón Fonseca
Erick Andrés Obregón Fonseca

Written by Erick Andrés Obregón Fonseca

Cartago, Costa Rica. Computer Engineering student. Spanish native, speaking English. Learning French and German. Just blogger by fun.

No responses yet