Quelle distribution est préférable d'utiliser pour les systèmes embarqués. Cette question est d'actualité aujourd'hui.
Il existe trois approches pertinentes pour résoudre ce problème:- Utilisez une distribution prête à l'emploi pour votre ordinateur monocarte (Armbian, Openwrt, etc.)
- Construisez et configurez votre distribution à l'aide de systèmes de build (Buildroot / Yocto, etc.).
- Utilisez votre bundle bootloader (u-boot) + kernel (kernel) + rootfs (busybox).
Si quelqu'un d'autre le sait, veuillez écrire dans les commentaires.
MISE À JOURUn projet OpenWRT est à la fois un système de construction (ce n'est pas une buildroot) et un projet qui fournit des images assemblées prêtes à l'emploi pour votre carte cible.
Distributions prĂŞtes Ă l'emploi
Je pense que l'utilisation d'une distribution toute faite est la manière la plus simple et la plus simple. Vous pouvez télécharger l'image finie ou créer la vôtre. L'assemblage de votre image Armbain n'est pas toujours flexible, car vous ne pouvez sélectionner aucune version du noyau Linux, mais utilisez uniquement celles fournies.
Il convient également de répondre au principal avantage des distributions toutes faites: leur stabilité.
Pour commencer, je recommanderais ces distributions.
Armbian est une distribution Linux populaire disponible pour une grande variété de périphériques ARM: Orange Pi, Banana Pi, Odroid, etc ... Elle est basée sur Ubuntu et / ou Debian.
www.armbian.com
OpenWrt est un système d'exploitation intégré basé sur le noyau Linux et conçu principalement pour les routeurs domestiques. Les composants clés incluent le noyau Linux, util-linux, uClibc ou musl et BusyBox. La taille de tous les composants est optimisée du fait que la plupart des routeurs domestiques ont une quantité de mémoire très limitée.
J'ajouterais moi-même, bien adapté aux planches avec Wi-Fi à bord (par exemple, Orange Pi Zero).
openwrt.org
Systèmes d'assemblage
Le principal avantage des systèmes d'assemblage est que vous pouvez créer un Linux minimal et flexible pour les systèmes embarqués.
Buildroot
Buildroot est un système de construction de distribution pour les systèmes embarqués. Il prend en charge un tas de cartes et le résultat de son travail est le chargeur de démarrage assemblé, le noyau et l'image
système de fichiers.
Ce qu'il permet de construire buildroot pour votre système:- image système;
- Ce système vous permet de sélectionner la version du noyau - n'importe laquelle.
- Vous pouvez ajouter des correctifs et installer des programmes.
- configuration flexible des utilitaires (par exemple busyBox, bash, etc.)
Il convient de noter que toutes les sources supplémentaires sont extraites du réseau.
Distinguer un tel assemblage, par exemple, de l'assemblage Armbian:- la distribution n'est pas construite sur la base de (Debian ou Ubuntu), mais d'un Linux flexible personnalisé.
- taille minimale de l'assemblage.
- sélection de n'importe quelle version du noyau.
buildroot.org
3. Utilisation de votre forfait:Pour cela, nous avons besoin de:
- Compilateur croisé (par exemple Linaro);
- Bootloader (par exemple U-boot);
- Noyau;
- RootFs (par exemple Busybox).
Alors allons-y.
Nous allons donc collecter localement sur notre machine nous avons besoin d'un compilateur croisé, par exemple linaro. Le compilateur croisé aidera sur l'architecture x86 à assembler notre distribution pour la plate-forme ARM cible.
www.linaro.org
Ensuite, vous devez créer un chargeur de démarrage.
Bootloader (U-Boot) - Le bootloader le plus populaire pour ARM, est U-boot. La tâche principale du chargeur de démarrage est de démarrer le noyau du noyau Linux. Vous pouvez également utiliser, par exemple, barebox ou autre.
www.denx.de/wiki/U-Boot

Ensuite. Nous devons construire le noyau, à la sortie, nous devons obtenir l'image du noyau et l'arborescence des périphériques pour notre plate-forme cible.
www.kernel.org
RootFs est le système de fichiers racine que Kernel montera après le démarrage. Je recommande d'utiliser Busybox.

busybox.net
Conclusion
Je ne dis pas qu'il existe de mauvaises ou de bonnes approches. Chacun a ses propres avantages et inconvénients. Cela dépend de votre tâche et du résultat que vous devez obtenir.