linux-arch-alpine-minimal embedded iot edge hardware alpine busybox

Embedded Linux Development: IoT & Edge (Artikel 234)

Einstieg in die Embedded-Linux-Entwicklung. Erfahren Sie den Umgang mit minimalen Kerneln, die Steuerung von Hardware-Schnittstellen und den Einsatz von Alpine als Basis für industrielle Appliances.

# Embedded Linux: Das Betriebssystem für die Hardware-Front

TL;DR / Management Summary Embedded Linux ist der unsichtbare Motor unserer Welt – von der Kaffeemaschine bis zum Industriesteuergerät. Im Gegensatz zum Standard-Server (Artikel 191) liegt hier der Fokus auf Echtzeitfähigkeit, minimale Bootzeit und dem direkten Zugriff auf Hardware-Register (GPIO, I2C, SPI). Wir nutzen Alpine Linux als idealen Kompromiss zwischen der Komplexität von Yocto und der Starrheit von Debian, um robuste Edge-Gateways zu bauen.


# 1. Einführung & Architektur

Die Nähe zur Hardware.

Ein Embedded-System verzichtet oft auf alles, was ein Mensch zur Interaktion braucht (Tastatur, Monitor) und konzentriert sich auf Sensoren und Aktoren.

# Der Embedded Stack (Mermaid)

graph TD
    A[Hardware: SOC / FPGA] --- B[Bootloader: U-Boot / Barebox]
    B --- C[Kernel: Custom / RT-Patch]
    C --- D[Root Filesystem: initramfs / SquashFS]
    D --- E[Application: BusyBox / Go / C]
    subgraph "I/O Interface"
        E --> F[GPIO: Digital In/Out]
        E --> G[I2C: Sensors]
        E --> H[UART: Debug / Serial]
    end

# 2. Hardware-Zugriff unter Linux

Die Welt der Device-Files.

Unter Linux ist alles eine Datei – auch die Hardware.

# GPIO Steuerung (Der neue Weg: libgpiod)

Vermeiden Sie das manuelle Schreiben in /sys/class/gpio/ (veraltet). Nutzen Sie gpiod:

# Wert eines Pins lesen
gpioget 0 17
# Wert setzen
gpioset 0 18=1

# I2C Sensorik

apk add i2c-tools
# Scannen des Busses nach Geräten
i2cdetect -y 1

# 3. Der schlanke Kernel

Nur das Nötigste kompilieren.

Für Embedded-Geräte bauen wir oft eigene Kernels.

  1. Deaktivieren: Sound-Treiber, Grafik-Stacks, ungenutzte Dateisysteme (CIFS, HFS).
  2. Aktivieren: Watchdog-Timer, Hardware-spezifische I/O-Module.

Tipp: Nutzen Sie den RT-Patch (PREEMPT_RT), wenn Ihr System auf Hardware-Events in garantierten Millisekunden reagieren muss (z.B. Motorsteuerung).


# 4. Day-2 Operations: Watchdogs & Safety

Selbstheilung bei Fehlern.

Ein Embedded-System ist oft schwer erreichbar. Wenn es sich aufhängt, muss es sich selbst neustarten.

# Der Hardware Watchdog

Ein kleiner Timer im Chip. Die Software muss ihn regelmäßig “füttern” (ping). Bleibt der Ping aus, löst die Hardware einen Reset aus.

# Alpine Watchdog Service
apk add watchdog
rc-update add watchdog default

# 5. Troubleshooting & “War Stories”

Wenn der Chip schweigt.

# Story 1: “Der SD-Karten Tod”

Symptom: Ein IoT-Gateway läuft 6 Monate perfekt und bootet dann plötzlich nicht mehr. Die SD-Karte ist schreibgeschützt oder korrupt. Ursache: Zu viele Schreibvorgänge (Logs, Datenbanken) haben die Speicherzellen der billigen SD-Karte zerstört. Lösung: Nutzen Sie den Diskless Mode von Alpine (Artikel 193). Das OS läuft im RAM, Logs gehen nach /dev/null oder auf einen Remote-Server. Schreiben Sie nur bei absoluter Notwendigkeit auf die Disk.

# Story 2: “Das hängende Update (A/B Partitioning)”

Symptom: Ein Remote-Update bricht bei 50% ab. Der Server ist nun “gebrickt” (unbootbar). Ursache: Inplace-Updates auf Embedded-Systemen sind hochgefährlich. Lösung: Nutzen Sie ein A/B System. Der neue Stand wird auf eine inaktive Partition geschrieben. Nur wenn der Schreibvorgang und der Health-Check erfolgreich sind, schwenkt der Bootloader beim nächsten Start auf die neue Partition um.


# 6. Fazit & Empfehlung

  • Wartung: Embedded-Systeme sollten unveränderlich (immutable) sein.
  • Hardware: Nutzen Sie hochwertige “Industrial Grade” SD-Karten oder eMMC-Speicher.
  • Wahl: Alpine Linux ist die beste Basis für schnelle Prototypen, die später in ein professionelles Build-System (Yocto) überführt werden können.

# Anhang: Cheatsheet

Aufgabe Tool / Pfad
GPIO-Tools libgpiod
I2C-Tools i2c-tools
Seriell-Konsole minicom -D /dev/ttyS0
Kernel Logs dmesg -w
Watchdog Config /etc/watchdog.conf
Device Tree /boot/dtbs/
Speicher-Check df -h (Achtung RAM-Disk!)
Prozessor-Takt cpufreq-info