Welche Distribution ist für eingebettete Systeme besser geeignet? Dieses Problem ist heute relevant.
Es gibt drei relevante Ansätze zur Lösung dieses Problems:- Verwenden Sie eine vorgefertigte Distribution für Ihren Einplatinencomputer (Armbian, Openwrt usw.).
- Erstellen und konfigurieren Sie Ihre Distribution mithilfe von Buildsystemen (Buildroot / Yocto usw.).
- Verwenden Sie Ihren Bundle-Bootloader (U-Boot) + Kernel (Kernel) + Rootfs (Busybox).
Wenn jemand anderes weiß, schreiben Sie bitte in die Kommentare.
UPDATEEin OpenWRT-Projekt ist sowohl ein Build-System (es ist kein Buildroot) als auch ein Projekt, das vorgefertigte zusammengestellte Images für Ihr Zielboard bereitstellt.
Fertige Distributionen
Ich glaube, die Verwendung einer vorgefertigten Distribution ist der einfachste und einfachste Weg. Sie können das fertige Bild herunterladen oder Ihr eigenes erstellen. Das Zusammenstellen Ihres Armbain-Images ist nicht immer flexibel, da Sie keine Version des Linux-Kernels auswählen können, sondern nur die bereitgestellten verwenden.
Der Hauptvorteil von vorgefertigten Verteilungen sollte ebenfalls beantwortet werden - ihre Stabilität.
Für den Anfang würde ich diese Distributionen empfehlen.
Armbian ist eine beliebte Linux-Distribution, die für eine Vielzahl von ARM-Geräten verfügbar ist: Orange Pi, Banana Pi, Odroid usw. Sie basiert auf Ubuntu und / oder Debian.
www.armbian.com
OpenWrt ist ein eingebettetes Betriebssystem, das auf dem Linux-Kernel basiert und hauptsächlich für Heimrouter entwickelt wurde. Zu den Hauptkomponenten gehören der Linux-Kernel, util-linux, uClibc oder musl und BusyBox. Die Größe aller Komponenten wird optimiert, da die meisten Heimrouter nur über einen sehr begrenzten Arbeitsspeicher verfügen.
Ich würde selbst hinzufügen, gut geeignet für Boards mit Wi-Fi an Bord (zum Beispiel Orange Pi Zero).
openwrt.org
Montagesysteme
Der Hauptvorteil von Assembly-Systemen besteht darin, dass Sie minimales und flexibles Linux für eingebettete Systeme erstellen können.
Buildroot
Buildroot ist ein Distributions-Build-System für eingebettete Systeme. Es unterstützt eine Reihe von Boards und das Ergebnis seiner Arbeit ist der zusammengebaute Bootloader, Kernel und Image
Dateisystem.
Was es erlaubt, Buildroot für Ihr System zu erstellen:- Systemabbild;
- Mit diesem System können Sie die Kernel-Version auswählen - beliebig.
- Sie können beliebige Patches hinzufügen und beliebige Programme installieren.
- flexible Konfiguration von Dienstprogrammen (z. B. BusyBox, Bash usw.)
Es ist zu beachten, dass alle zusätzlichen Quellen aus dem Netzwerk abgerufen werden.
Unterscheiden einer solchen Versammlung zum Beispiel von der Armbian-Versammlung:- Die Distribution basiert nicht auf (Debian oder Ubuntu), sondern auf einem benutzerdefinierten flexiblen Linux.
- minimale Baugruppengröße.
- Auswahl einer beliebigen Kernel-Version.
buildroot.org
3. Verwenden Sie Ihr Bundle:Dafür brauchen wir:
- Cross-Compiler (z. B. Linaro);
- Bootloader (z. B. U-Boot);
- Kernel;
- RootFs (z. B. Busybox).
Also lass uns gehen.
Damit wir lokal auf unserer Maschine sammeln können, benötigen wir einen Cross-Compiler, zum Beispiel Linaro. Der Cross-Compiler hilft bei der x86-Architektur, unsere Distribution für die Ziel-ARM-Plattform zusammenzustellen.
www.linaro.org
Als nächstes müssen Sie einen Bootloader erstellen.
Bootloader (U-Boot) - Der beliebteste Bootloader für ARM ist U-Boot. Die Hauptaufgabe des Bootloaders besteht darin, den Linux-Kernel-Kernel zu booten. Sie können beispielsweise auch Barebox oder eine andere verwenden.
www.denx.de/wiki/U-Boot

Weiter. Wir müssen den Kernel erstellen, an der Ausgabe müssen wir das Kernel-Image und den Gerätebaum für unsere Zielplattform abrufen.
www.kernel.org
RootFs ist das Root-Dateisystem, das der Kernel nach dem Booten bereitstellt. Ich empfehle die Verwendung von Busybox.

Busybox.net
Fazit
Ich sage nicht, dass es schlechte oder gute Ansätze gibt. Jeder hat seine eigenen Vor- und Nachteile. Es hängt von Ihrer Aufgabe ab und welches Ergebnis Sie erzielen müssen.