Artikelserie "Kern Technik" im Linux Magazin Quelltexte: https://ezs.kr.hsnr.de/TreiberBuch/Artikel/ Die Datei "kerntechnik-2012.pdf" enthält die Folgen 1-61. Ausserdem "Linux-Kernel 3.0" (9/2011) und "Runtime-Powermanagement" (3/2012). * 8/2003, #1 Build System * 9/2003, #2 Zeichentreiber * 10/2003, #3 Hardware, PCI * 11/2003, #4 Interrupts, Kernel Threads * 12/2003, #5 Locking * 1/2004, #6 Sysfs * 2/2004, #7 Procfs * 3/2004, #8 Block Devices, Ramdisk * 4/2004, #9 USB * 5/2004, #10 Module * 6/2004, #11 Funktionen des Kernels * 7/2004, #12 Software Qualität im Kernel * 8/2004, #13 Systemaufrufe * 9/2004, #14 Systemaufrufe im Kernel verwenden * 10/2004, #15 TCP/IP im Kern nutzen * 11/2004, #16 UDP im Kern nutzen * 12/2004, #17 Netzwerktreiber, virtuelle Geräte * 2/2005, #18 Asynchroner I/O * 3/2005, #19 I/O Scheduler, sysfs * 4/2005, #20 Anticipatory und CFQ IO Scheduler * 6/2005, #21 Buddy und Slab Allocator * 8/2005, #22 Kprobes, Jprobes * 10/2005, #23 Virtuelle Filesysteme * 11/2005, #24 Filemonitoring, Inotify * 12/2005, #2j Booten, Kexec * 2/2006, #26 Locking, Per-CPU Variablen * 4/2006, #27 Zeit im Kernel * 6/2006, #28 64-Bit * 9/2006, #29 Relay Subsystem * 11/2006, #30 Zufallszahlen * 1/2007, #31 High-resolution timer * 3/2007, #32 mmap * 5/2007, #33 Multi-CPU Scheduling * 7/2007, #34 Realtime preemption * 9/2007, #35 Kopieren ohne CPU * 11/2007, #36 Userspace Treiber UIO * 1/2008, #37 Firmware Subsystem * 3/2008, #38 Address Space Randomisation * 5/2008, #39 RAM-Fs und Temp-Fs * 7/2008, #40 Netlink Interface * 9/2008, #41 Multicore: Prozesse auf CPUs * 11/2008, #42 Power Management * 1/2009, #43 Ein kleiner, aber wichtiger Teil des Linux-Kernels ist in Assembler geschrieben. Der Inline-Assembler integriert die Maschinenbefehle dabei harmonisch in C-Funktionen. Bleibt, den Code zu verstehen. * 3/2009, #44 Manche Applikationen müssen verhindern, dass die CPU bestimmte Codesequenzen mehrfach betritt. Dazu aktivieren sie Realtime-Mutexe im Kernel. Die sind nicht nur besonders effizient, sondern beherrschen auch die für Echtzeitanwendungen wichtige Prioritätsinversion. * 5/2009, #45 Wenn sonst nichts mehr hilft, sorgen automatisierte Neustarts für kurze Downtimes. Um Watchdogs optimal zu nutzen, brauchen Entwickler Kenntnisse über Aufbau und Anwendung der Treiber. * 7/2009, #46 Das Notifier-Subsystem ist die Nachrichtenzentrale des Linux-Kernels. Nur wenig Code ist nötig, um Entwickler mit den neusten Informationen zu versorgen. * 9/2009, #47 Sicherheitsbewusste Kernelhacker beäugen skeptisch Netzwerkapplikationen, die in den Kernel wandern sollen. Manchmal gibt\'s dafür aber gute Gründe - Performance etwa. * 11/2009, #48 Einen Treiber in den Kernel einzubinden ist leider wenig intuitiv. Deshalb gibt es hier ein Grundgerüst als Ausgangspunkt. Es zeigt, wie der Kernel dem Treiber Gerätenummern zuweist und der Gerätedateiverwalter Udev eigenständig die zugehörigen Gerätedateien anlegt. * 1/2010, #49 Vorgefertigte Codestücke helfen dabei, die Komplexität von Treibercode zu beherrschen. Makros und Muster unterstützen Treiberentwickler bei kritischen Abschnitten und dem Powermanagement. * 3/2010, #50 Zum Jubiläum: Pinguine, die ins Gefängnis kommen, und Anleitungen, die Programmierer verbrennen sollten: Der Linux-Kernel bietet auch Nicht-Entwicklern allerlei Kurzweiliges. * 5/2010, #51 Zum Schutz kritischer Abschnitte haben Mutexe im Linux-Kernel Semaphore verdrängt. Hauptgrund ist die bessere Performance. Das patentierte Lock-Debugging dagegen ist ein Abfallprodukt. * 7/2010, #52 Simulierende Module ermöglichen es, auf Hardware zuzugreifen, die gar nicht im Rechner eingebaut ist. Dreh- und Angelpunkt dafür ist ein modifizierter Gerätetreiber. * 9/2010, #53 Der Kthreadd ist der Vater aller Kernelthreads. Die von ihm abgeleiteten Codesequenzen erben einen eindeutigen Kontext. Für Entwickler von Vorteil: weniger Arbeit und weniger Fehler im Code. * 11/2010, #54 Der Blockdevice-Layer ist das Arbeitspferd bei Linux, was die Datenbeschaffung angeht - von der Festplatte bis zur Anwendung ist es ein langer Weg. Der I/O-Scheduler behält dabei den Überblick. * 2/2011, #55 Mit ausgefeiltem Ressourcen-Management und eigenen Namensräumen organisiert der Kernel eine effiziente Container-Virtualisierung. Die Unterstützung im Userland könnte jedoch besser sein. * 4/2011, #56 Das Rahmenwerk DKMS ordnet für Anwender und Entwickler Module so, dass sie auch nach einem Kernupdate noch laufen. Als Bonus schnürt das Tool sogar Installationspakete für Distributionen. * 6/2011, #57 Texte mit AES verschlüsseln, Daten komprimieren oder Hashsummen mit MD5 berechnen: Mit dem Crypto-API des Linux-Kernels und etwas Know-how kein Problem! * 8/2011, #58 Der Linux-Kernel bietet seine Verschlüsselungsfunktionen auch zum asynchronen Zugriff an. Ineinander geschachtelte Datenstrukturen und undokumentierte Funktionen machen dem Programmierer allerdings das Leben schwer. Diese Kern-Technik schafft Abhilfe. * 11/2011, #59 Linux plattformübergreifend: Die praktische Skriptsammlung Buildroot erzeugt im Handumdrehen einen Kernel für Embedded-Systeme mit ARM-CPU. Als Nebenprodukt fällt dabei ein komplettes, lauffähiges Linux-System ab, das sich im Emulator Qemu testen lässt. * 1/2012, #60 Den Kern eines laufenden Betriebssystems zu debuggen war und ist problematisch. Doch der Emulator Qemu ermöglicht plattformunabhängiges Kernel- und Modul-Debugging auf Hochsprachen-Niveau. Dank der virtuellen Maschine braucht der Kernelhacker noch nicht einmal einen zweiten Rechner. * 3/2012, #61 Wer schläft, spart. Daher organisiert der Linux-Kernel das kollektive Schlafen der Rechnerkomponenten, bis das komplette System ruht. Er strukturiert Abhängigkeiten baumartig und verwendet ein Phasenmodell. Damit sind bei Bedarf alle Komponenten schnell wieder hellwach. * 5/2012, #62 Für KGDB, den eingebauten Debugger des Linux-Kernels, gibt es die beiden Frontends KDB und GDB. Mit KDB und der richtigen Konfigurationsdatei kann es unter Ubuntu sofort losgehen. Wer Hochsprachen-Debugging mit GDB wünscht, installiert noch Virtualbox, Socat und einen speziellen Kernel. http://www.linux-magazin.de/Ausgaben/2012/05/Kern-Technik * 7/2012, #63 Die Langzeitmessungen des Open Source Automation Development Lab zeigen erstmals: Mit Linux lassen sich Systeme für harte Echtzeitanforderungen realisieren. Die Kern-Technik stellt die Ergebnisse vor und erklärt, wie aus dem Standardbetriebssystem eines für Realzeitanwendungen wird. http://www.linux-magazin.de/Ausgaben/2012/07/Kern-Technik * 9/2012, #64 Der Boot Tracer und Bootchart helfen dabei, den Bootvorgang detailliert zu analysieren. Schon ein paar Maßnahmen später ist das Linux-System spürbar schneller betriebsbereit. * 12/2012, #65 Wer mit Linux zu tun hat, sieht sich realen, virtuellen oder Boot-Konsolen gegenüber, begegnet klassischen, Pseudo- oder auch Controlling-Terminals. Die Kern-Technik bringt Ordnung in die babylonische Sprachverwirrung und zeigt, wie man einen eigenen Terminaltreiber schreibt. * 2/2013, #66 Android führt mit deutlichem Abstand die Hitparade der Smartphone-Betriebssysteme an. Die Kern-Technik beleuchtet, welche Änderungen Google für den Mobileinsatz am Linux-Kernel vorgenommen hat und was es mit Wakelocks, Binder und dem anonymen Shared Memory auf sich hat. * 4/2013, #67 Scheduling ist eine zentrale Aufgabe des Linux-Kernels, der sich dabei um größte Fairness bemüht. Wer aber glaubt, dass damit alle das Gleiche bekommen, der irrt. * 6/2013, #68, Devicetree * 8/2013, #69, Kernel fuer den RPi * 10/2013, #70, GPIO * 12/2013, #71, Bootloader (U-Boot beim RPi) * 2/2014, #72, I2C beim RPi * 4/2014, #73, Ktap Teil 1 * 6/2014, #74, Ktap Teil 2 * 8/2014, #75, Ubuntu 14.04, Treiber selber kompilieren * 10/2014, #76, proc Filesystem * 12/2014, #77, SPI mit dem Raspberry Pi * 2/2015, #78, Bit-Little ARM (Beispiel ODROID-XU) * 3/2015, #79, Earliest Deadline First Scheduling * 5/2015, #80, Performance Monitoring des Kernels beim Raspberry Pi * 7/2015, #81, Interrupts mit dem Raspberry Pi * 9/2015, #82, Signierte Kernel-Module * 11/2015, #83, Kritische Code-Abschnitte mit RCU schuetzen * 1/2016, #84, Asynchrone Code-Sequenzen im Linux Kernel * 6/2016, #86, DMA mit dem RPi * 8/2016, #87, Vergleich von Aufloesung und Genauigkeit der Timer- und Delay Funktionen im Kernel # 10/2016, #88, Kernel-Doku mit Restructured-Text * 12/2016, #89, RPi 3 mit 64-Bit * 2/2017, #90, Precision Time Protocol * 4/2017, #91, Overlay Filesysteme * 8/2017, #93, Dynamische Device-Trees beim RPi * 1/2018, #95, Kernelthreads * 3/2018, #96, Kernelthreads * 5/2018, #97, Meltdown * 9/2018, #99, Virtuelles Filesystem "pstore" * 11/2018, #100, Zeitreise in die Kernel-Technik Beiträge * 1/2019, #101, Moderner GPIO Zugriff mit gpiolib * 3/2020, #108, Pulsweitenmodulation beim Raspberry Pi * 5/2020, #109, Async-IO reloaded: Io_uring * 7/2020, #110, Cgroups V2 * 9/2020, Keine Kern-Technik * 11/2020, #112, Gerätetreiber als Kernel-Modul * 1/2021, #113, Zeitverwaltung im Linux Kernel * 3/2021, #114, Virtueller Plattformbus * 5/2021, #115, Industrial I/O * 7/2021, #116, Industrial I/O * 9/2021, #117, Die Sensoren BME280 und HC-SR04 am Industrial I/O Bus beim Raspberry Pi 4 * 11/2021, #118, Aufbau von Blockgeraetetreibern * 1/2022, #119, RISC-V kennenlernen mit QEMU * 3/2022, #120, RPi4 ueber Netzwerk booten * 5/2022, #121, Update Verfahren * 7/2022, #122, RAUC * 9/2022, #123, RT Preempt Patch auf Raspberry Pi 4 * 1/2023 #125, Kernel Scheduler * 5/2023 #127, Die Nolibc im Kernel * 9/2023 #129, Kernel Nachrichten, printk() * 11/2023 #130, 64-Bit Architektur, /proc Verzeichnis * 1/2024 #131, Proc Filesystem * 3/2024 #132, Geraetedateien