Linux Kernel-Modul Entwicklung (Treiber) mit C
Nach drei Tagen entwickelst du ein eigenes Kernel-Modul mit einem Character Device und testest es mit Debugging
Die wichtigsten Themen
Eigenes Kernel-Modul in C
Character Device mit cdev
KBuild für externe Module
Speicher und Locks im Kernel
Debugging mit ftrace und perf
Code-Review im Mini-Projekt
Überblick Nach drei Tagen entwickelst, kompilierst und testest du ein ladbares Linux-Kernel-Modul in C und erweiterst es zu einem einfachen Character Device. Du bindest den Code mit KBuild an den passenden Kernel an,...
Nach drei Tagen entwickelst, kompilierst und testest du ein ladbares Linux-Kernel-Modul in C und erweiterst es zu einem einfachen Character Device. Du bindest den Code mit KBuild an den passenden Kernel an, gestaltest die Initialisierung und den Cleanup und prüfst Fehlerpfade unter realen Kernel-Bedingungen. Am Ende steht eigener Treibercode statt einer reinen Architekturübersicht.
Kernelspace-Code verzeiht andere Fehler als ein C-Programm im Userspace. Speicherzugriffe, Synchronisation und Rückgabewerte entscheiden darüber, ob ein Modul reproduzierbar lädt oder das System mit einem Oops oder einer Kernel Panic reagiert. Die Schulung verbindet deshalb Kernel-Architektur mit Codeanalyse, Character-Device-Entwicklung und Diagnose über Kernel-Logging, Dynamic Debug, ftrace und perf. Sysfs und Debugfs werden als unterschiedliche Schnittstellen behandelt. Netfilter, eBPF und Rust dienen der fachlichen Abgrenzung, während der Programmieranteil bei C bleibt.
In kleinen Gruppen baust du Schritt für Schritt ein eigenes Modul auf und setzt das Gelernte in einem Mini-Projekt um. Weitere Themen findest du bei den Linux-Schulungen. Für die anschließende Analyse von Kernel-Parametern und Systemverhalten passt das Linux Systemanpassungen Deep Dive. Frage für mehrere Mitarbeiter einen passenden Online-, Präsenz- oder Inhouse-Termin an, auch in München.
Die Themen Abgrenzung von Kernelspace und Userspace · Kernel-Architektur und relevante Subsysteme · Aufbau des Linux-Kernel-Quellcodes · Passende Kernel-Header und Build-Artefakte · Entwicklungsumgebung mit GCC und Make...
Kernel-Architektur und Build-Umgebung
- Abgrenzung von Kernelspace und Userspace
- Kernel-Architektur und relevante Subsysteme
- Aufbau des Linux-Kernel-Quellcodes
- Passende Kernel-Header und Build-Artefakte
- Entwicklungsumgebung mit GCC und Make
- Externe Module mit KBuild bauen
Modulaufbau und Fehlerpfade
- Modulstruktur mit module_init und module_exit
- Modul-Metadaten und korrekte Lizenzangaben
- Abhängigkeiten und Symbolversionierung
- Modulparameter und ihre Einsatzgrenzen
- Laden mit insmod und modprobe
- Prüfen mit lsmod und modinfo
- Entfernen mit rmmod und Cleanup-Routinen
- Logging mit pr_info und pr_debug
- Fehleranalyse mit dmesg und journalctl
Speicher und Synchronisation
- Kernel-Speicher mit kmalloc und kzalloc
- Freigabe mit kfree
- Slab-Allocator und Objektlebensdauer
- Referenzen und kontrollierte Fehlerpfade
- Mutexe und Spinlocks
- Semaphoren und atomare Operationen
- RCU-Grundlagen und Zugriffsmuster
- Race Conditions und Deadlocks
Character Devices und Userspace-Schnittstellen
- Major- und Minor-Nummern
- Geräteknoten und udev-Bezug
- cdev und Gerätelebenszyklus
- file_operations für open und release
- read und write im Treiber
- ioctl und Schnittstellendesign
- copy_to_user und copy_from_user
- Sysfs für Geräteattribute
- Debugfs für Entwicklungsdiagnosen
- Procfs und typische Einsatzgrenzen
- Buffer-Größen und Zugriffsrechte
Interrupts und Kernel-Diagnose
- IRQ-Handler und threaded IRQs
- SoftIRQs und historische Tasklets
- Deferred Work mit Workqueues
- Tracing mit ftrace über tracefs
- Performance-Analyse mit perf
- Dynamic Debug für gezielte Meldungen
- Oops-Auswertung und Kernel Panic
Erweiterungskonzepte und Mini-Projekt
- Netfilter-Hooks für Netzwerkmodule
- eBPF-Hooks und Verifier
- Einsatzgrenzen von eBPF-Programmen
- Rust-Unterstützung im Linux-Kernel
- Abgrenzung von C und Rust
- Planung eines eigenen Kernel-Moduls
- Implementierung und Funktionstests
- Code-Review nach Kernel Coding Style
- Patch-Prüfung mit checkpatch
- Upstream-Workflow und Wartbarkeit
Zielgruppe
- C-Softwareentwickler mit Erfahrung in systemnaher Programmierung
- Embedded-Entwickler für Kernel-nahe Hardwareanbindung
- Linux-Administratoren mit Verantwortung für Module und Treiber
- Security- und Performance-Fachkräfte für Kernel-Analysen
- Fachkräfte für die Pflege eigener Treiber oder die Analyse fremder Module
Das lernst du
- Ein ladbares Kernel-Modul in C eigenständig bauen und testen
- Ein Character Device mit cdev und file_operations implementieren
- Build- und API-Abweichungen früh erkennen, damit Testläufe weniger Nacharbeit verursachen
- Speicher- und Synchronisationsfehler vermeiden, die Oops oder Deadlocks auslösen
- Kernel-Logging, Dynamic Debug, ftrace und perf für die Fehleranalyse einsetzen
- Kernel-Module gegenüber Netfilter, eBPF und Rust-Komponenten abgrenzen
So arbeiten wir
Die cmt-Dozenten verbinden technische Erklärungen direkt mit Code und dem Verhalten des laufenden Linux-Systems. In jedem Themenblock änderst du dein eigenes Kernel-Modul oder stellst eine konkrete Diagnose.
- Live-Demos durch erfahrene cmt-Dozenten
- Hands-on-Labs mit eigenen Kernel-Modulen
- Geführte Analysen von Kernel-C-Code
- Fehlerdiagnose an Build- und Laufzeitproblemen
- Mini-Projekt mit Character Device
- Code-Review nach Linux Kernel Coding Style
Empfohlene Vorkenntnisse
- Gute C-Kenntnisse mit Pointern, Structs und Funktionszeigern
- Routine im Umgang mit Linux auf der Kommandozeile
- Grundkenntnisse in Shell und Make
- Vorbereitung bei Bedarf im Linux / UNIX Shellprogrammierung Grundkurs
- Grundverständnis von Prozessen, Dateisystemen und Geräten
- Keine Erfahrung mit Kernel-Modulen erforderlich
Dein Fahrplan
Kernelspace, Userspace und die Architektur des Linux-Kernels eröffnen den ersten Seminartag. Danach wird eine Build-Umgebung mit passenden Kernel-Headern, GCC, Make und KBuild eingerichtet. Die Teilnehmer erstellen ein externes Modul, laden und prüfen es und untersuchen Fehlerpfade mit Kernel-Logging, dmesg und Dynamic Debug.
Organisatorisches
Lernformate
Unsere Seminare bieten dir maximale Flexibilität: Du kannst zwischen Live-Online und Vor Ort in unseren modernen Schulungszentren im D-A-CH Raum wählen. Beide Formate garantieren dir die gleiche hohe Qualität und interaktive Lernerfahrung.
Schulungsarten
Wir bieten dir verschiedene Schulungsarten: Offene Seminare, Firmenseminare für Teams und Inhouse-Schulungen direkt bei dir vor Ort. So findest du genau das Format, das zu deinen Bedürfnissen passt.
Aktuelle Software
In unseren offenen Kursen arbeiten wir mit der aktuellsten Software-Version. So lernst du direkt mit den Tools und Features, die du auch in deinem Arbeitsalltag verwendest - praxisnah und zukunftsorientiert. Bei Inhouse- und Firmenschulungen bestimmt ihr die Version.
Deine Vorteile
Zufriedenheitsgarantie
Wir sind von unserer Qualität überzeugt. Sollte ein Training einmal nicht deinen Erwartungen entsprechen, bieten wir dir an, den Kurs kostenlos zu wiederholen oder ein anderes Training zu besuchen. Ohne Risiko, ohne Diskussion.
Inklusivleistungen
Deine Teilnahme beinhaltet: Schulungsmaterial, Zertifikat, Verpflegung (bei Präsenzveranstaltungen) und persönliche Betreuung durch unsere Trainer und unser Orga-Team. Alles aus einer Hand - keine versteckten Kosten.
Lernen von Experten
Unsere Trainer sind zertifizierte und erfahrene Profis mit jahrelanger Berufserfahrung. Sie vermitteln dir in den Kursen nicht nur theoretisches Wissen, sondern teilen ihre Erfahrungen aus realen Projekten und helfen dir, das Gelernte direkt in deiner täglichen Arbeit anzuwenden. Das ist kein Werbeversprechen, sondern unser Anspruch. Am besten siehst du das in unseren Bewertungen, z.B. auch bei Google.
Keine Vorkasse
Du zahlst erst nach dem Seminar. Keine Vorkasse, keine Vorauszahlung - so kannst du sicher sein, dass du nur für das bezahlst, was du auch wirklich erhalten hast. Die Rechnung erhältst du erst nach Kursbeginn.
Max. 8 Teilnehmende
Wir setzen auf kleine Gruppen, damit du die Aufmerksamkeit bekommst, die du verdienst. So haben wir mehr Zeit für deine individuellen Fragen und können gezielt auf deine Bedürfnisse eingehen.
Termine & Buchung
Vor Ort
Online
Nicht der passende Termin dabei?
Wir finden eine Lösung: anderer Termin, mehrere Teilnehmer, Inhouse-Schulung oder individuelle Beratung.
Lieber gleich das ganze Team schulen?
Diese Schulung gibt es auch exklusiv für dein Unternehmen, bei euch vor Ort, an unseren Standorten oder Live-Online. Inhalte und Termine nach Maß.
Inhouse-Schulung
Wir kommen zu euch: diese Schulung maßgeschneidert in euren Räumen, für Unternehmen und Behörden.
- Inhalte exakt auf euch zugeschnitten
- Termine nach euren Bedürfnissen
- Günstiger ab mehreren Teilnehmern
- Vertraute Umgebung, kein Reiseaufwand
Firmen-Seminar
Exklusiv für dein Team an einem unserer Standorte oder Live-Online, individuell angepasst.
- Geschlossene Gruppe aus eurem Haus
- Individuelle Terminplanung
- An unseren Standorten oder Live-Online
- Angepasste Inhalte
Fragen und Antworten zu Linux Kernel-Modul Entwicklung (Treiber) mit C
Was ist ein Linux-Kernel-Modul?
Ein Linux-Kernel-Modul ist ein zur Laufzeit ladbarer Codebaustein, der Funktionen im Kernel ergänzt, ohne den Kernel für jede Änderung neu zu bauen. Module laufen im Kernelspace, greifen auf Kernel-APIs zu und benötigen deshalb passende Header, kontrollierte Fehlerpfade sowie besondere Sorgfalt bei Speicherzugriffen und Synchronisation.
Wann nutzt man ein Kernel-Modul statt eBPF oder Netfilter?
Ein klassisches Kernel-Modul eignet sich für Treiber, neue Kernel-Funktionen und eigene Schnittstellen. eBPF nutzt vorhandene Hooks für verifizierte Programme, etwa beim Tracing oder in der Netzwerkanalyse. Netfilter stellt Hooks im Netzwerkpfad bereit. Die Schulung vergleicht diese Ansätze, programmiert den Treiber aber in C.
Welche C- und Linux-Kenntnisse werden vorausgesetzt?
Gute Kenntnisse in C sowie Routine auf der Linux-Kommandozeile werden vorausgesetzt. Pointer, Structs, Funktionszeiger, Speicherverwaltung und Compiler-Ausgaben sollten vertraut sein. Fehlende Shell-Grundlagen kannst du im Linux / UNIX Shellprogrammierung Grundkurs aufbauen.
Welche Kernel-Version und Linux-Distribution werden verwendet?
Gearbeitet wird mit einer abgestimmten Linux-Umgebung, in der der laufende Kernel, die Header und der KBuild-Baum zusammenpassen. Die genaue Kernel-Version und Distribution können vom Termin abhängen. cmt nennt dir die vorgesehene Trainingsumgebung auf Anfrage.
Wird ein eigener Linux-Treiber programmiert und welche Hardware wird benötigt?
Das Mini-Projekt erweitert ein eigenes Kernel-Modul zu einem einfachen Character Device. Ob im jeweiligen Termin zusätzliche Hardware benötigt oder bereitgestellt wird, klärst du mit cmt. Eigene Boards oder Geräte sollten vorab nach Architektur und Schnittstelle abgestimmt werden.
Behandelt die Schulung Kernel Panic und Oops-Meldungen?
Kernel Panic und Oops-Meldungen werden mit Kernel-Logs, Dynamic Debug, ftrace und perf untersucht. Auch Race Conditions und Deadlocks gehören zur Fehleranalyse. Eine breitere systematische Diagnose behandelt das Linux Troubleshooting Training.
Gibt es nach der Schulung einen Teilnahmenachweis?
Den verfügbaren Teilnahmenachweis bestätigt cmt dir mit dem Angebot. Wenn dein Einkauf oder die Personalentwicklung bestimmte Angaben benötigt, nennst du diese bei der Anfrage, damit die Ausgestaltung vor der Buchung geklärt wird.
Kann die Linux-Kernel-Schulung inhouse durchgeführt werden?
Eine Inhouse-Durchführung für mehrere Mitarbeiter kannst du bei cmt anfragen. Teile Kernel-Version, Distribution, Zielarchitektur und gewünschte Treiberthemen mit. cmt prüft daraufhin den Umfang, mögliche Anpassungen und die Konditionen für eure Gruppe.
Weitere häufig gestellte Fragen und Antworten findest du in den FAQs .
Passende Schulungen nach dem Kurs
Unser Qualitätsversprechen: Wissen, das in der Praxis funktioniert
Aus der Praxis für die Praxis
Schluss mit theoretischem Ballast. Wir trainieren dich für reale IT-Herausforderungen, nicht für Multiple-Choice-Tests. Unsere Trainer vermitteln dir genau das Wissen, das am nächsten Montagmorgen im Job wirklich funktioniert.
Individuell statt "Schema F"
Deine Fragen passen nicht ins Standard-Skript? Bei uns schon. Wir verzichten auf starre Lehrpläne und geben deinen konkreten Projekt-Fragen Raum. Unsere Trainer passen die Inhalte flexibel an das an, was dich und dein Team aktuell weiterbringt.
Maximale Freiheit: Remote oder vor Ort
Lerne so, wie es in deinen Alltag passt - ohne Reise-Stress und Zeitverlust. Egal ob remote, hybrid oder präsent vor Ort: Wir garantieren dir ein nahtloses und effektives Lernerlebnis, egal von wo du dich zuschaltest.
Mit Zufriedenheitsgarantie
Wir sind von unserer Qualität überzeugt - und wollen, dass du es auch bist. Sollte ein Training einmal nicht deinen Erwartungen entsprechen, bieten wir dir an, den Kurs kostenlos zu wiederholen oder ein anderes Training zu besuchen. Ohne Risiko, ohne Diskussion.
Über 20.000 Unternehmen und Behörden vertrauen auf uns