Linux est devenu un utilitaire fiable pour créer des systèmes d'exploitation pour les systèmes embarqués. Cependant, la courbe d'apprentissage des utilitaires de développement intégrés peut être assez difficile. Beaucoup de gens qui utilisent ces outils complexes ont passé beaucoup de temps à les comprendre et à les maîtriser, et Yocto n'est pas différent. Avec lui, vous pouvez développer une distribution Linux minimale personnalisée pour votre projet de système embarqué.
Cet article vous guidera étape par étape pour démarrer avec Yocto afin de créer une distribution Linux minimale.
Le projet Yocto
Yocto est un projet collaboratif open source visant à créer des outils, des modèles et des processus nécessaires pour développer des systèmes Linux personnalisés pour les systèmes embarqués malgré l'architecture matérielle sous-jacente. Yocto a été lancé en mars 2011 en tant que collaboration de 22 organisations, dont OpenEmbedded, qui agit comme son système de construction.
La sortie du build Yocto Project se compose de trois éléments principaux :
- Cibler les fichiers binaires d'exécution : Celui-ci contient tous les fichiers auxiliaires nécessaires pour déployer Linux sur le système cible. Les autres fichiers incluent le chargeur de démarrage, le noyau, les modules du noyau, l'image du système de fichiers racine.
- Flux de packages : Il s'agit des progiciels nécessaires à votre système. Vous pouvez également sélectionner le gestionnaire de packages dont vous avez besoin pour votre système - deb, dnf, ipk, etc. Vous pouvez inclure ces packages dans les binaires d'exécution cibles ou les ajouter ultérieurement au système déjà déployé.
- SDK cible : Ce sont les bibliothèques et les fichiers d'en-tête qui montrent le système installé sur la cible. Ils sont principalement utilisés par les développeurs d'applications pour s'assurer qu'ils associent les bonnes bibliothèques selon le système.
Pourquoi n'utilisons-nous pas une distribution existante ?
Initialement, les systèmes embarqués utilisaient des distributions prêtes à l'emploi et essayaient de les personnaliser pour répondre à leurs besoins. Cela comprenait la suppression des packages inutiles pour l'optimisation du stockage et l'amélioration de la sécurité. Avoir un logiciel mort peut rendre un système vulnérable à divers vecteurs d'attaque. Même avec ces avantages, l'utilisation de la distribution existante a posé plusieurs défis.
La première est que l'ensemble du processus de suppression des packages n'a pas été facile. La suppression de certains packages pourrait rompre les dépendances détenues par divers autres packages qui pourraient vous être utiles. De plus, certains packages ont été intégrés au processus de démarrage et d'exécution, ce qui rendait leur suppression fastidieuse.
Par conséquent, les distributions existantes entraînaient souvent des retards inutiles ou avaient un système qui ne répondait pas à toutes les normes requises.
Commençons.
Créer sa propre distribution Linux avec Yocto
Étape 1 :Configuration requise pour le matériel et le système d'exploitation
- Minimum de 4 Go de RAM (Plus c'est haut, mieux c'est)
- Dernier système d'exploitation Ubuntu (20.04 LTS) ou tout autre système d'exploitation Linux :
- Fédora
- openSUSE
- CentOS
- Debian
- Minimum de 100 Go d'espace libre sur le disque dur (une plus grande taille garantira de meilleures performances). Yocto peut être assez gourmand en ressources, selon votre produit final cible.
Si vous êtes un utilisateur macOS ou Windows, utilisez un logiciel de virtualisation comme VMware ou Virtualbox pour exécuter une distribution Linux. Alternativement, vous pouvez opter pour un multiboot.
Étape 2 :Configurer l'hôte
Commençons par installer les dépendances requises dans notre système hôte. Pour ce post, j'utilise la distribution Ubuntu. Si vous utilisez une autre distribution, veuillez consulter le guide de démarrage rapide du projet Yocto et voir quelles dépendances installer.
Lancez le Terminal et exécutez les commandes ci-dessous :
sudo apt update
sudo apt-get install wget git-core unzip make gcc g++ build-essential subversion sed autoconf automake texi2html texinfo coreutils diffstat python-pysqlite2 docbook-utils libsdl1.2-dev libxml-parser-perl libgl1-mesa-dev libglu1-mesa-dev xsltproc desktop-file-utils chrpath groff libtool xterm gawk fop
Etape 3 :Cloner le Yocto Poky
Une fois les dépendances installées, nous pouvons procéder au téléchargement de Yocto. Nous allons cloner le dépôt Yocto depuis le site Yocto Project. Exécutez la commande ci-dessous, qui téléchargera la dernière version (la branche "sumo"). Nous allons créer un répertoire dans le dossier Home pour construire notre projet Yocto pour plus de facilité d'accès et de cohérence.
mkdir ~/yocto mkdir ~/yocto/Project-One/ cd ~/Yocto/Project-One/ git clone -b sumo git://git.yoctoproject.org/poky.git
Si vous obtenez une erreur telle que "commande git introuvable," cela signifie que vous n'avez pas installé git sur votre système. Exécutez la commande ci-dessous pour l'installer.
sudo apt install git
Étape 4 :Initialiser l'environnement intégré.
Pour démarrer avec Yocto, il faut initialiser le ‘build environment’. Exécutez les commandes ci-dessous. Le premier changera le répertoire dans le dossier que nous venons de cloner. La deuxième commande initialisera "l'environnement de construction".
cd ~/Yocto/Project-One/poky
source oe-init-build-env build
Une fois l'initialisation terminée, nous aurons un répertoire de construction et un fichier de configuration. Le répertoire de construction est l'endroit où se produit toute la construction du système et héberge les fichiers images une fois le processus terminé. En fait, après l'initialisation, le terminal pointera automatiquement vers le dossier de construction. Vous pouvez le voir sur l'image ci-dessus.
Étape 5 :Configuration
Lorsque vous exécutez une commande ls dans le répertoire /build, vous verrez un dossier /conf qui contient tous nos fichiers de configuration. Accédez à ce dossier avec la commande ci-dessous :
$ cd ~/Yocto/Project-One/poky/build/conf/ $ ls
En exécutant la commande ls sur le dossier conf, vous devriez voir le fichier local.conf. Ce fichier spécifie les détails de la machine cible et du SDK pour l'architecture cible souhaitée.
Ouvrez ce fichier pour le modifier avec la commande ci-dessous :
$ sudo nano local.conf
Dans l'image ci-dessous, la machine de construction cible est "qemux86-64".
Maintenant, décommentez les lignes suivantes, comme indiqué dans l'image ci-dessous. (Par décommenter, nous entendons -supprimer le signe "#")
DL_DIR ?= "${TOPDIR}/downloads" SSTATE_DIR ?= "${TOPDIR}/sstate-cache" TMPDIR ?= "${TOPDIR}/tmp" PACKAGE_CLASSES ?= "package_rpm" SDKMACHINE ?= "i686" EXTRA_IMAGE_FEATURES ?= "debug-tweaks"
Avant de poursuivre le processus de compilation, ajoutez les lignes suivantes à la fin du fichier "local.conf".
BB_NUMBER_THREADS = "X" PARALLEL_MAKE = "-j X"
Remplacer ‘X’ avec le double du nombre de processeurs/CPU de votre ordinateur. Par conséquent, si vous avez quatre processeurs, vous auriez des déclarations comme celles-ci :BB_NUMBER_THREADS ="8" PARALLEL_MAKE ="-j 8"
Pour afficher le nombre de processeurs de votre ordinateur, exécutez la commande ci-dessous :
lscpu
Étape 5 :Compilation et processus de création
Pour commencer à créer l'image, exécutez la commande ci-dessous dans votre répertoire /build.
bitbake core-image-sato
Cela lancera le téléchargement et la compilation des packages pour le système cible. S'il vous plaît, n'exécutez pas la commande bitbake ci-dessus avec les privilèges root car cela générerait une erreur. Pour une première construction, le processus peut prendre jusqu'à plusieurs heures (voire plus de 2). Parfois, bitbake peut rencontrer une erreur. Ne pas paniquer; exécutez à nouveau la commande ci-dessus. L'erreur peut être due à la panne d'un site Web particulier ou à une ressource manquante.
Les images binaires résultantes sont stockées dans le répertoire /build à poky/build/tmp/deploy/images/qemux86.
Conclusion
Bien que Yocto puisse être assez difficile à maîtriser en une seule séance, c'est un excellent utilitaire pour commencer à créer une distribution Linux personnalisée pour votre projet. J'espère que cet article vous a donné une procédure détaillée sur la façon de démarrer avec l'ensemble du processus de création d'une distribution Linux personnalisée.