STM32MP157 und Buildroot: Erstellung einer simplen Linux-Distribution

Wenn du jemals ein Linux-System für ein STM32MP157 Evalboard aufsetzen wolltest, bist du hier genau richtig! Diese Anleitung zeigt dir, wie du mit Buildroot schnell und effizient eine lauffähige Linux-Distribution erstellst – so schnell, dass du in kürzester Zeit ein einfaches helloWorld.sh Skript ausführen kannst.


Warum Buildroot und STM32MP157?

Buildroot ist ein leichtgewichtiges Tool, das speziell dafür entwickelt wurde, Embedded-Linux-Systeme schnell und einfach zu erstellen. In Kombination mit dem STM32MP157, einem leistungsstarken Evalboard, kannst du eine minimalistische, stabile und anpassbare Linux-Distribution aufsetzen – ohne dabei in der Komplexität von Yocto oder anderen Tools zu versinken.

Kurz gesagt: Für Einsteiger, die schnell Ergebnisse sehen wollen, ist dies die ideale Lösung.


Was brauchst du?

  • Ein STM32MP157 Evalboard (Ich verwende das STM32MP157F-DK2).
  • Einen PC mit Linux (Ich verwende Xubuntu).
  • MicroSD-Karte (mindestens 8 GB)
  • Micro-USB-Kabel
  • Externes Netzteil
  • Internetzugang

Schritt 1: Installiere die notwendigen Tools

Auf deinem Linux-PC müssen einige Pakete installiert sein. Öffne ein Terminal und führe die folgenden Befehle aus:

sudo apt update
sudo apt install -y build-essential git wget cpio unzip python3

Zusätzlich empfehle ich, make und gcc in der neuesten Version zu verwenden, um Kompatibilitätsprobleme zu vermeiden.

$ make --version 
GNU Make 4.3
$ gcc --version
gcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0

Schritt 2: Lade Buildroot herunter

Bevor wir nun Buildroot herunterladen, macht es noch Sinn kurz einen Blick in die Doku zu werfen: https://buildroot.org/docs.html

Nun wechsel in ein Verzeichnis deiner Wahl und klone das Buildroot-Repository:

git clone https://gitlab.com/buildroot.org/buildroot.git
cd buildroot
git checkout 2024.02.8

Oder lade die neueste stabile Version direkt herunter:

wget https://buildroot.org/downloads/buildroot-<version>.tar.gz
tar -xzf buildroot-<version>.tar.gz
cd buildroot-<version>

Schritt 3: Konfiguriere Buildroot für das STM32MP157

Bevor wir mit dem Konfigurieren starten, lass uns kurz ins Buildroot Verzeichniss schauen:
Buildroot heruntergeladen und nun?

Buildroot macht es dir leicht, da es für viele Boards bereits vordefinierte Konfigurationen gibt. Für das STM32MP157 gibt es ein vorkonfiguriertes Skript:

$ make stm32mp157c_dk2_defconfig
#
# configuration written to /home/marcel/development/tmp/buildroot/buildroot/.config
#

Dieser Befehl legt die grundlegenden Einstellungen für dein Board fest.


Schritt 4: Passe die Konfiguration an

Jetzt kannst du die Konfiguration weiter anpassen. Führe dazu das Buildroot-Konfigurationstool aus:

make menuconfig

Da wir ein minimales System bauen, müssen wir an der Konfiguration nichts ändern. Du kannst aber folgendes überprüfen:

  1. Toolchain: Stelle sicher, dass die passende Toolchain ausgewählt ist (normalerweise ARM Cortex-A7 kompatibel).
  2. Filesystem: Ist das Root-Filesystem als ext4 konfiguriert.
  3. Zusätzliche Pakete: Suche nach BusyBox und stelle sicher, dass es aktiviert ist.

Speichere ggf. die Änderungen und verlasse das Menü.


Schritt 5: Baue dein Linux-System

Jetzt kommt der spannende Teil: der Build-Prozess.

make

Dieser Prozess kann je nach Systemleistung einige Minuten dauern.

Am Ende erhältst du alle benötigten Dateien, inklusive eines Linux-Kernels und eines Root-Filesystems. Zudem das für uns notwendige SD-Karten Image sdcard.img.


Schritt 6: Flashe dein Image auf das Board

Das fertige Images kannst du über eine SD-Karte auf das STM32MP157 laden. Dazu kopiere die Dateie wie folgt:

sudo dd if=output/images/sdcard.img of=/dev/mmcblk0 bs=1M

Hinweis: Überprüfe mit lsblk ob die SD-Karte vom Hostsystem erkannt wurde und unmounte sie ggf. mit umount


Schritt 7: Hello World auf deinem STM32MP157

Jetzt wollen wir nun unser helloWorld.sh Skript erstellen und testen

$ echo '#!/bin/sh' >> helloWorld.sh
$ echo 'echo "Hello World"' >> helloWorld.sh 
$ chmod 755 helloWorld.sh 
$ ./helloWorld.sh 
Hello World

Cool, das Linux-System ist aufgesetzt und das Skript kann ausgeführt werden.


Warum ist das die schnellste Methode?

Mit Buildroot sparst du dir stundenlange Konfigurationsarbeit, da es für das STM32MP157 bereits optimierte Einstellungen gibt. Der einfache Workflow macht es besonders einsteigerfreundlich – und trotzdem flexibel genug für fortgeschrittene Anpassungen.


Comments

Schreiben Sie einen Kommentar

Ihre E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert