Embedded Linux

Meistern der technischen und rechtlichen Herausforderungen

Bei der Aufgabe, ein embedded Linux-System zu erstellen fühlt man sich leicht von der Fülle an möglichen Varianten und verfügbaren Paketen erschlagen. Doch was benötige ich wirklich, um die gestellten Anforderungen zu erfüllen? Und wie kann ich diese Anforderungen unter Zuhilfenahme von Open-Source-Software erfüllen?

Welche rechtlichen Herausforderungen (Cyber Resiliance Act - RSA sowie License Compliance) bestehen an das Produkt? Wie kann ich diese mit einem yocto-Workflow sowie Open-Source-Software-Tools meistern?

Dieser Kurs zielt darauf ab, einerseits einen Leitfaden für den Entwurf und das Design des Zielsystems zu geben. Und andererseits die verfügbaren Tools vorzustellen und ihren zielgerichteten Einsatz bei einem Embedded-Linux-System zu vermitteln.

Praktische Fähigkeiten werden in diesem Kurs durch den Aufbau eines Embedded-Linux-Systems, beginnend mit dem Bootloader bis zum Kernel inklusive Root-Filesystem in Form einer den Kurs begleitenden Übung erworben. Dabei wird ein in der Industrie eingesetztes ARM-basiertes Board von der reinen Hardware ohne Software bis zum fertigen Embedded-Linux-System aufgebaut.

Jedem Teilnehmer steht ein Board während des Kurses für die Übung zur Verfügung. Die Übungen sind so plattformneutral gestaltet, dass die erlernten praktischen Fähigkeiten leicht in eigene Projekte transferiert werden können. Es werden ausschließlich öffentlich zugängliche Open-Source-Komponenten, welche über alle gängigen Architekturen hinweg verfügbar sind, eingesetzt.

Der Kurs gliedert sich in vier Teile:

  • Komponenten und Design von Embedded-Linux
  • Aufbau eines Embedded-Linux-Systems
  • Rechtliche Anforderungen an Embedded-Linux
  • Embedded-Linux anpassen und optimieren

Der Teilnehmer lernt die notwendigen Fähigkeiten, um eigenständig ein Embedded-Linux-System unter den aktuellen rechtlichen Rahmenbedingungen zu erstellen. Die gezeigten Tools stehen beispielhaft und das erlernte Wissen kann leicht auf andere Tools transferiert werden.

Trainer und Dozenten

Andreas Klinger ist selbständiger Trainer und Entwickler. Als Spezialist für Linux beschäftigt er sich mit dem internen Aufbau des Kernels und vor allem mit dessen Einsatz in linuxbasierten Embedded-Systemen.

Er hat zahlreiche Commits zum Linux-Kernel, Zephyr-RTOS sowie weiteren Open-Source-Projekten beigetragen

Als Autor von Fachartikeln und als Referent auf Kongressen vermittelt er Open-Source Software-Technologien.

Voraussetzungen

Der Teilnehmer benötigt solides Grundwissen in der Benutzung der Linux-Shell, um dem Kurs folgen zu können. Teilnehmer ohne Linux-Erfahrungen können dazu die Schulung Linux für Entwickler oder Linux Grundlagen vorbereitend besuchen.

Inhalt

Komponenten und Design von Embedded-Linux

  • Unterschied zwischen Embedded-Linux und Server-Distributionen
  • Entwicklungssystem, Cross-Development-Toolchain
  • Aufgaben des Bootloaders, U-Boot, barebox und grub
  • Anpassungen im Bootloader an individuelles Board
  • Erstellung von Flash-Image für das Target
  • Linux-Kernel konfigurieren, patchen, erstellen und installieren
  • boardspezifische Anpassungen am Kernel durchführen
  • Device-Tree (DT) verstehen und anpassen
  • DT-Overlays, Aufgaben des Bootloaders
  • Vom DT-Binding zum Kernel-Treiber, dessen Konfiguration und Dokumentation

Aufbau des Embedded-Linux-Systems

  • Root-Filesystem-Aufbau, notwendige Bestandteile
  • Buildsystem für die Generierung: yocto
  • Bibliotheken: glibc, uClibc und musl
  • Init-Dämonen: System-V-Init, Busybox-Init, systemd
  • Software-Paket-Auswahl für Entwicklung und Produktivsystem
  • Adaptionen am Zielsystem und dessen Generierung
  • Linux-Security: DAC, ACL, Capabilities, Linux-Security-Modules (LSM)

Rechtliche Anforderungen an Embedded-Linux

  • License-Compliance, Umsetzung mit OSS-Tools
  • Cyber Resiliance Act (CRA)
  • Maintainer, Open Source Software Steward, Manufacturer
  • Security by Design, Software Bill of Material (SBOM)
  • CVE-Monitoring, Vulnerability-Scanning
  • Update-Mechanismen, Over-The-Air-Update (OTA), RAUC
  • Reproduzierbarer Buildvorgang
  • Toolunterstützung im yocto-Workflow

Embedded-Linux anpassen und optimieren

  • Raw-Flashes (NAND, NOR): JFFS2, UBIFS
  • FTL-Flash mit Controller (eMMC, SD-Card, ...)
  • Linux-Dateisysteme: ext4, btrfs, squashfs, nfs
  • Erhöhung der Flash-Lebensdauer, RO-RFS, overlayfs
  • Reaktion auf Power-Cut-Szenarien, Kontrolle von FS-Caches
  • Bootstrategien und Bootzeitoptimierung
  • Buildtools im Vergleich: yocto und buildroot
  • Bewertung von Board-Support-Packages (BSP)

Kurszeiten

Wer möchte, reist bis 22 Uhr am Vortag an und nutzt den Abend bereits zum Fachsimpeln am Kamin oder im Park.

An Kurstagen gibt es bei uns ab 8 Uhr Frühstück.

Unsere Kurse beginnen um 9 Uhr. Dieser Kurs endet am letzten Tag um 16:00 Uhr.

Neben den kleinen Pausen gibt es eine Stunde Mittagspause mit leckerem, frisch in unserer Küche zubereitetem Essen.

Nach der Schulung anschließend Abendessen und Angebote für Fachsimpeln, Ausflüge uvm. Wir schaffen eine Atmosphäre, in der Fachleute sich ungezwungen austauschen. Wer das nicht will, wird zu nichts gezwungen und findet auch jederzeit Ruhe.