Linux von innen: System Calls, Prozesse, IPC und Speicherverwaltung mit C programmieren.
Hands‑on Labs mit POSIX‑APIs, File I/O, Signals, Pipes und Shared Memory.
Scheduling, Threads und Synchronisation im Detail erkunden.
Praktische Erfahrung sammeln durch Programmierung und Tests von User‑Space‑Apps (~70% Labs).
Nutzen: Starke Grundlage für effiziente, portable Linux‑Anwendungen.
Für wen: konzipiert für Personen mit C‑/Linux‑Grundlagen, die fortgeschrittene Programmier‑Skills wollen.
Am Ende meisterst du Linux‑Internals und baust robuste User‑Level‑Apps.
Curriculum
Einführung in Embedded Linux
- Analyse der Hauptkomponenten eines Embedded‑Linux‑Projekts
Toolchains
- Arten von Toolchains
- Auswahl der C‑Bibliothek
- Komponenten und Tools des Toolchains
- Toolchain‑Build (Fokus ARM)
- Static vs. dynamic linking
- Cross‑Compiling größerer Projekte — ein Beispiel
Bootloader
- Bootloader verstehen
- Einführung in Device Trees
- Das U‑Boot: Installation, Konfiguration, Hauptbefehle
Kernel booten
- Boot auf BeagleBone Black
- Boot auf QEMU
Eine einfache Linux‑Applikation
- Sehr kurzer Einstieg in POSIX IPC
- Aufbau einer einfachen IPC‑Applikation für den Kurs
Debugging und Core Dumps
- Grundlegendes Debugging
- Remote Debugging
- Wichtige GDB‑Befehle
- Analyse von Core‑Files und Kontrolle CPU‑intensiver Anwendungen
Einführung in Yocto
- Yocto installieren
- Konfigurieren, Bauen und Ausführen
- Layers, BitBake und Recipes
- Images anpassen
Kernel‑Programmierung – Vorschau
- Error numbers und Kernel‑Ausgaben
- task_struct Überblick
- Verkettete Listen im Kernel
- OO‑Mechanismen im Kernel
Einführung in Module
- Triviales Beispiel
- Module kompilieren
- Modules vs. built‑in
- Modul‑Utilities
- Automatisches Laden/Entladen
- Symbole exportieren
Einführung in Device Drivers
- Modules und Device Drivers
- Speicherallokation/‑freigabe
- Datenübertragung zwischen User‑ und Kernel‑Space
- Character devices
- Cache‑Nutzung
- Interrupts und Exceptions
- Deferrable functions
Optionale Module
Vorgeschlagene Erweiterungen (optional)
- systemd‑Service Units und Prozess‑Supervision
- Vertiefte IPC: POSIX Message Queues, Shared Memory, Semaphores
- Dateisysteme: /proc und sysfs‑Grundlagen für App‑Entwickler
- Scheduling und Prioritäten (nice/rtprio) in User‑Space
- gdbserver + VS‑Code‑Remote‑Debugging‑Tipps
- perf und kurzes eBPF‑Intro für Troubleshooting
Kursablauf
- Part 1: 09:00–10:30
- Break: 10:30–10:45
- Part 2: 10:45–12:15
- Lunch break: 12:15–13:15
- Part 3: 13:15–15:15
- Break: 15:15–15:30
- Part 4: 15:30–17:30