GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So erstellen Sie Ihre eigene Linux-Distribution mit Yocto

Linux ist zu einem zuverlässigen Dienstprogramm zum Erstellen von Betriebssystemen für eingebettete Systeme geworden. Die Lernkurve für eingebettete Entwicklungsdienstprogramme kann jedoch ziemlich herausfordernd sein. Viele Menschen, die diese komplexen Tools verwenden, haben viel Zeit damit verbracht, sie zu verstehen und zu beherrschen, und Yocto ist da nicht anders. Damit können Sie eine benutzerdefinierte minimale Linux-Distribution für Ihr Embedded-System-Projekt entwickeln.

Dieser Beitrag gibt Ihnen eine Schritt-für-Schritt-Anleitung für die ersten Schritte mit Yocto, um eine minimale Linux-Distribution zu erstellen.

Das Yocto-Projekt

Yocto ist ein Open-Source-Kooperationsprojekt, das darauf abzielt, Werkzeuge, Vorlagen und Prozesse zu erstellen, die für die Entwicklung benutzerdefinierter Linux-basierter Systeme für eingebettete Systeme trotz der zugrunde liegenden Hardwarearchitektur erforderlich sind. Yocto wurde im März 2011 als Zusammenarbeit von 22 Organisationen gestartet, darunter OpenEmbedded, das als Build-System fungiert.

Die Ausgabe des Yocto-Projekt-Builds besteht aus drei Hauptkomponenten:

  • Ziellaufzeit-Binärdateien: Diese enthält alle Hilfsdateien, die zum Deployment von Linux auf dem Zielsystem benötigt werden. Andere Dateien beinhalten Bootloader, Kernel, Kernel-Module, Root-Dateisystem-Image.
  • Paket-Feed: Dies bezieht sich auf die Softwarepakete, die für Ihr System benötigt werden. Sie können auch den Paketmanager auswählen, den Sie für Ihr System benötigen – deb, dnf, ipk usw. Sie können solche Pakete in die Target-Laufzeit-Binärdateien aufnehmen oder sie später zu dem bereits bereitgestellten System hinzufügen.
  • Ziel-SDK: Dies sind die Bibliotheken und Header-Dateien, die das auf dem Ziel installierte System anzeigen. Sie werden hauptsächlich von App-Entwicklern verwendet, um sicherzustellen, dass sie die richtigen Bibliotheken gemäß dem System verknüpfen.

Warum verwenden wir keine vorhandene Distribution?

Anfangs nutzten eingebettete Systeme handelsübliche Distributionen und versuchten, sie an ihre Bedürfnisse anzupassen. Dazu gehörte das Entfernen unnötiger Pakete zur Speicheroptimierung und Erhöhung der Sicherheit. Tote Software kann ein System anfällig für verschiedene Angriffsvektoren machen. Trotz dieser Vorteile stellte die Verwendung bestehender Distributionen einige Herausforderungen dar.

Einer ist, dass der gesamte Prozess des Zerlegens von Paketen nicht einfach war. Das Entfernen einiger Pakete könnte Abhängigkeiten von verschiedenen anderen Paketen zerstören, die für Sie nützlich sein könnten. Außerdem wurden einige Pakete in den Boot- und Laufzeitprozess integriert, was ihre Entfernung mühsam machte.

Daher führte die vorhandene Distribution oft zu unnötigen Verzögerungen oder zu einem System, das nicht alle erforderlichen Standards erfüllte.

Fangen wir an.

Erstellen Ihrer eigenen Linux-Distribution mit Yocto

Schritt 1:Anforderungen an Hardware und Betriebssystem

  • Mindestens 4 GB RAM (je höher, desto besser)
  • Neuestes Ubuntu-Betriebssystem (20.04 LTS) oder ein anderes Linux-Betriebssystem:
    • Fedora
    • openSUSE
    • CentOS
    • Debian
  • Mindestens 100 GB freier Festplattenspeicher (eine größere Größe garantiert eine bessere Leistung). Yocto kann sehr ressourcenintensiv sein, abhängig von Ihrem angestrebten Endprodukt.

Wenn Sie ein macOS- oder Windows-Benutzer sind, verwenden Sie Virtualisierungssoftware wie VMware oder Virtualbox, um eine Linux-Distribution auszuführen. Alternativ können Sie sich für einen Multiboot entscheiden.

Schritt 2:Richten Sie den Host ein

Lassen Sie zunächst die erforderlichen Abhängigkeiten in unserem Hostsystem installieren. Für diesen Beitrag verwende ich die Ubuntu-Distribution. Wenn Sie eine andere Distribution verwenden, lesen Sie bitte die Schnellstartanleitung von Yocto Project und sehen Sie, welche Abhängigkeiten installiert werden müssen.

Starten Sie das Terminal und führen Sie die folgenden Befehle aus:

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

Schritt 3:Yocto Poky klonen

Wenn die Abhängigkeiten installiert sind, können wir mit dem Herunterladen von Yocto fortfahren. Wir werden das Yocto-Repository von der Yocto Project-Website klonen. Führen Sie den folgenden Befehl aus, der die neueste Version (den „Sumo“-Zweig) herunterlädt. Wir werden ein Verzeichnis im Home-Ordner erstellen, um unser Yocto-Projekt für einfachen Zugriff und Konsistenz zu erstellen.

mkdir ~/yocto
mkdir ~/yocto/Project-One/
cd ~/Yocto/Project-One/
git clone -b sumo git://git.yoctoproject.org/poky.git

Wenn Sie eine Fehlermeldung wie „git command not found“ erhalten, Das bedeutet, dass Sie Git nicht in Ihrem System installiert haben. Führen Sie den folgenden Befehl aus, um es zu installieren.

sudo apt install git

Schritt 4:Initialisieren Sie die gebaute Umgebung.

Um mit Yocto zu beginnen, müssen wir die „Build-Umgebung“ initialisieren. Führen Sie die folgenden Befehle aus. Der erste ändert das Verzeichnis in den Ordner, den wir gerade geklont haben. Der zweite Befehl initialisiert die „Build-Umgebung“.

cd ~/Yocto/Project-One/poky
source oe-init-build-env build

Sobald die Initialisierung abgeschlossen ist, haben wir ein Build-Verzeichnis und eine Konfigurationsdatei. Das Build-Verzeichnis ist der Ort, an dem die gesamte Systemerstellung stattfindet, und hostet die Bilddateien, nachdem der Prozess abgeschlossen ist. Tatsächlich zeigt das Terminal nach der Initialisierung automatisch auf den Build-Ordner. Sie können das im Bild oben sehen.

Schritt 5:Konfigurieren

Wenn Sie einen ls-Befehl im /build-Verzeichnis ausführen, sehen Sie einen /conf-Ordner, der alle unsere Konfigurationsdateien enthält. Navigieren Sie mit dem folgenden Befehl in diesen Ordner:

$ cd ~/Yocto/Project-One/poky/build/conf/
$ ls

Wenn Sie den Befehl ls im Ordner conf ausführen, sollten Sie die Datei local.conf sehen. Diese Datei gibt die Details des Zielcomputers und des SDK für die gewünschte Zielarchitektur an.

Öffnen Sie diese Datei zum Bearbeiten mit dem folgenden Befehl:

$ sudo nano local.conf

Aus dem Bild unten ist die Ziel-Build-Maschine „qemux86-64.“

Kommentieren Sie nun die folgenden Zeilen aus, wie in der Abbildung unten gezeigt. (Mit auskommentieren meinen wir -Entfernen Sie das ‚#‘-Zeichen)

DL_DIR ?= "${TOPDIR}/downloads"
SSTATE_DIR ?= "${TOPDIR}/sstate-cache"
TMPDIR ?= "${TOPDIR}/tmp"
PACKAGE_CLASSES ?= "package_rpm"
SDKMACHINE ?= "i686"
EXTRA_IMAGE_FEATURES ?= "debug-tweaks"

Bevor wir mit dem Kompilieren fortfahren, fügen Sie die folgenden Zeilen am Ende der Datei „local.conf“ hinzu.

BB_NUMBER_THREADS = "X"
PARALLEL_MAKE = "-j X"

Ersetzen 'X' mit der doppelten Anzahl Prozessoren/CPU in Ihrem Computer. Wenn Sie also vier Prozessoren haben, hätten Sie Anweisungen wie diese:BB_NUMBER_THREADS =„8“ PARALLEL_MAKE =„-j 8“

Um die Anzahl der CPUs in Ihrem Computer anzuzeigen, führen Sie den folgenden Befehl aus:

lscpu

Schritt 5:Kompilierungs- und Erstellungsprozess

Um mit dem Erstellen des Images zu beginnen, führen Sie den folgenden Befehl in Ihrem /build-Verzeichnis aus.

bitbake core-image-sato

Dadurch wird das Herunterladen und Kompilieren von Paketen für das Zielsystem gestartet. Bitte führen Sie den obigen Bitbake-Befehl nicht mit Root-Rechten aus, da dies einen Fehler auslöst. Bei einem erstmaligen Build kann der Vorgang bis zu mehreren Stunden dauern (sogar mehr als 2). Manchmal kann es bei Bitbake zu einem Fehler kommen. Keine Panik; Führen Sie den obigen Befehl erneut aus. Der Fehler kann darauf zurückzuführen sein, dass eine bestimmte Website ausfällt oder eine Ressource fehlt.

Die resultierenden Binärbilder werden im /build-Verzeichnis unter poky/build/tmp/deploy/images/qemux86.

gespeichert

Schlussfolgerung

Während Yocto in einer einzigen Sitzung ziemlich schwer zu beherrschen sein kann, ist es ein großartiges Dienstprogramm, um mit der Erstellung einer benutzerdefinierten Linux-Distribution für Ihr Projekt zu beginnen. Ich hoffe, dieser Beitrag hat Ihnen eine detaillierte Anleitung gegeben, wie Sie mit dem gesamten Prozess der Erstellung einer benutzerdefinierten Linux-Distribution beginnen können.


Linux
  1. Erstellen Sie Ihren eigenen Video-Streaming-Server mit Linux

  2. So erstellen Sie eine Datei in Linux mit Terminal/Befehlszeile

  3. So sichern Sie Ihr gesamtes Linux-System mit Rsync

  4. So erstellen Sie ein physisches Volume unter Linux mit LVM

  5. So erstellen Sie einen Linux-Benutzer mit Ansible

So erstellen Sie 100% CPU-Last auf einem Linux-System

So aktualisieren Sie das openSUSE-Linux-System

So erstellen Sie Ihren eigenen IPsec-VPN-Server unter Linux

So überprüfen Sie Ihre Serverlast im Linux-System

So erstellen Sie Ihr eigenes VPN – Detaillierte Anweisungen

Wie kann man ganz einfach seine eigene Linux-Distribution erstellen?