Schulungsübersicht
Einführung
- kurze Geschichte von GNU/Linux
- Lizenzierung
- Kernel-Versionierung
- Release-Zyklus
- Kernel-Bäume
- Mainline
- Kernel vs. Userspace
- Mechanismus vs. Politik
- Kernel-Treiber-Alternativen
- RTOS vs. Linux
Speicher Management
- Virtueller Speicher vs. physischer Speicher
- Speicherzuweisung im Kernel
- Seiten
- Zonen
- API
- Slab
Kernel-Patch
- Lebenszyklus
- git
- Kernel-Quelle
- Patch erstellen
- Patch prüfen
- Patch reparieren
- Patch ausliefern
- geprüfter Code
Kernel-Module
- Kernel-Quellen holen
- konfigurieren/erstellen/installieren
- Gerätetreiber (statisch gelinkt, zur Laufzeit geladen)
- Einleiten/Beenden
- Lizenzierung
- SYMBOL GPL EXPORTIEREN
- makefile außerhalb des Baumes
- Modul-Init-Tools
- Modul im Kernelbaum
- Kconfig
- Parameterübergabe
- spärlich
Char-Treiber
- Architektur
- Benutzer/Kernel-Schnittstelle
- E/A-Subsystem
- VFS
- sysfs (Geräte, Bus, Treiber, Klassen),
- kObjekt/ktype/kset
- Linux-Kernel-Treibermodell
- Gerätedateien
- char-Treiber
- Initialisierung
- Registrierung
- öffnen, freigeben
- cdev, cdev add, cdev del,...
- Haupt-/Nebennummern
- udev, udevmonitor, udevadm
Erweiterte Charachter-Treiber-Operationen
- ioctl
- entsperrt ioctl
- compat ioctl
- Benutzerraum-API
- Kernelbereich-API
- Prozess-Lebenszyklus
- Schlafen/Blockieren
- Schlafen/Aufwachen
- Warteschlange
- donnernde Herde
- abfragen/auswählen
Kernel-Debugging
- Fehlerbehebung
- Fehlersuche
- Fehlersuche im Kernel
- Binärsuche mit git
- Debugging-Unterstützung vom Kernel
- printk syslogd, klogd, loglevels, Ratenbegrenzung, Debug-Levels, selektive Subsysteme debuggen
- Debugging durch Abfrage von debugfs
- Debuggen von Oops, Behauptung von Oops
- Magischer SysRq-Schlüssel
- kgdb/kdb
- JTAG
Rückverfolgung
- gcov
- lcov
- oprofil
- ftrace
- nop tracer
- Funktionstracer
- Schedule Switch Tracer
- Funktionsgraphenverfolgung
- dynamischer Tracer
- trace-cmd/kernelshark
- perf
- LTTng
Unterbrechungen
- Interrupts vs. Polling
- Unterbrechungen
- Programmabschnitte
- Wiederholbarkeit
- Ereignisse
- Interrupt-Handler
- gemeinsame Unterbrechungsbehandlungsroutine
- Unterbrechungsablauf
- Unterbrechungssteuerung
Arbeit aufschieben
- obere/untere Hälften
- softirqs
- tasklets
- Arbeitsvorräte
- Threaded Interrupts
Gleichzeitigkeit
- kritischer Bereich/Abschnitt
- atomar
- Wettlaufbedingung
- Synchronisierung
- Sperren
- Locking-Lösungen
- Deadlock
- Konkurrenzkampf
- Was soll gesperrt werden?
- Was kann verwendet werden?
- atomare Operationen
- Spinlocks
- Leser-Schreiber-Spinlocks
- Semaphor
- Binärer Semaphor
- Mutex
- Leser-Schreiber-Semaphor
- Abschlussvariablen
- sequentielle Sperren
- Vorkaufsrecht deaktivieren
- Ordnung und Barrieren
Zeit
- HZ
- Jiffies
- große/kleine Verzögerungen
- Kernel-Timer
Hardware-E/A
- E/A-Anschlüsse
- E/A-Speicher
- Wie geht man mit Seiteneffekten beim Zugriff auf Register um?
Benutzer-Kernel Communication
- put(get)_user()
- kopieren nach(von)_Benutzer()
- Kernel-E/A
- Speicher-Zuordnung
- procfs
- sysfs
- debugfs
- relayfs
- netlink
- ioctl
Portabilität
- Wortgröße
- undurchsichtige Typen
- Zeichen mit/ohne Vorzeichen
- Datenausrichtung
- Integralförderung
- Code-Wiederverwendung
- Endianess
- Systemtick
- Seitengröße
- Anweisungsreihenfolge
- SMP/Preemption/hoher Speicher
Wenn nicht anders vermerkt, stehen der Inhalt und diese Kursübersicht unter der Lizenz Attribution-NonCommercial-ShareAlike 4.0 International (CC BY-NC-SA 4.0).
Voraussetzungen
- Grundlegende Vertrautheit mit der Verwendung eines GNU/Linux-Systems als Endbenutzer
- Grundlegende Vertrautheit mit einer Kommandozeilen-Shell
- Grundlegende Kenntnisse im Bereich Benutzeroberfläche/Anwendungsentwicklung
- Fortgeschrittene C-Programmierkenntnisse
- Sie sollten bereits an Embedded GNU/Linux Systems Architecture teilgenommen haben (dringend empfohlen!) und/oder ein gutes Verständnis der dort beschriebenen Themen haben.
Erfahrungsberichte (5)
Edward ist ein großartiger Vermittler
Zibusiso Ncube - Agricatural Research Council
Kurs - Ionic 4 and Angular for Developers
Maschinelle Übersetzung
Vielleicht wären mehr Übungen zum Lernen besser, aber die Zeit war zu kurz.
Gianpiero Arico' - Urmet Spa
Kurs - Embedded Linux Systems Architecture
Maschinelle Übersetzung
Miguel's knowledge of the subject was extensive. He made the training easy to understand and the flow was balanced; adding on to each section with new features as needed. He covered everything that was asked and answered each and every question thoroughly. It was a very pleasant experience.
Paul Coaton - SEMPCheck Services
Kurs - Flutter Development Bootcamp with Dart
That the trainer adapts to our needs
Eduardo Fontecha - ORMAZABAL PROTECTION & AUTOMATION S.L.U.
Kurs - The Yocto Project - An Overview - hands-on
The trainer was enthusiastic, kind, and loved the topic