Open Source im professionellen Einsatz

Newsletter abonnieren
Seite durchsuchen

HEFTARCHIV | NEWS | E-BIBLIOTHEK | VIDEO | BLOGS | WHITEPAPER | EVENTS | ACADEMY | ABO | SHOP

user friendly

  Home  »  Heft & Abo  »  Heftarchiv  »  2003  »  08  »  Kern-Technik  

RSS-Feed der aktuellen News von Linux-Magazin Online Folgen Sie Linux-Magazin Online auf Twitter
Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark

Kernel- und Treiberprogrammierung mit dem künftigen Kernel 2.6

Kern-Technik

von Eva-Katharina Kunst, Jürgen Quade
Erschienen im Linux-Magazin 2003/08

Die neue Serie "Kern-Technik" untersucht den kommenden Linux-Kernel 2.6 und seine Bestandteile. Wer Treiber programmieren, Kernelfunktionen verändern oder einfach die Vorgänge im Inneren von Linux verstehen will, der findet hier einen praktischen Einstieg.

Kernel- und Treiberprogrammierung ist das Thema der neuen Kern-Technik-Serie: Wie schreiben künftige Kernel-Gurus ihr erstes Modul, etwa einen zeichenorientierten Gerätetreiber für Kernel 2.6? Welche Anpassungen sind erforderlich, um einen 2.4-Treiber auf 2.6 zu portieren? Wie realisiert der neue Kernel Hardwarezugriffe? Und welche Werkzeuge und Techniken sind zur Treiberprogrammierung nötig?

An kurzen, abgeschlossenen Beispielen beschreiben die Artikel Technik, Hintergründe und Anwendung. Wer C kennt, mit Betriebssystemen vertraut ist und Basiskenntnisse über Computerhardware besitzt, kann sofort mit den aktuellen Kernelquellen loslegen. Die Struktur der Module, das Kernel-Build-System[3] sowie das Laden und Entladen von Modulen unter der Kernelgeneration 2.6 sind das Thema der ersten Folge.

Module sind die übliche Form bei Kernelerweiterungen. Sie lassen sich zur Laufzeit laden und wieder entladen. Der entscheidende Vorteil: Das Modul belegt - im Gegensatz zu einer statisch eingebundenen Komponente - nur dann kostbare Ressourcen im Kernel, wenn es unbedingt erforderlich ist.

Code im Kernel

Vorab eine Warnung: Die Beispiele in dieser Artikelserie sind Kernel-Code, also Code, der Zugriff auf sämtliche Systemressourcen hat. Anders als bei einer Anwendung ist es sehr einfach möglich, das gesamte System - nicht nur eine Applikation - zum Absturz zu bringen. Programmierer sollten daher sehr sorgfältig vorgehen, auf so manchen Reboot müssen sie sich dennoch einstellen.

Beim Programmieren sind kaum Unterschiede zwischen dem Entwickeln von Anwendungssoftware und Kernelerweiterungen (zum Beispiel Treiber) festzustellen. Bemerkenswert ist, dass der Entwickler kein eigenständiges Stück Software schreibt, sondern eine zusätzliche Komponente für ein bestehendes und sogar laufendes Programm, den Kernel. Da muss der schnelle Griff zu Funktionen aus der C-Standardbibliothek unterbleiben. Gleitkomma-Operationen sind generell tabu.

Die Kernelentwickler haben viel getan, um die Unterschiede zwischen Kernel- und Anwendungsprogrammierung unsichtbar werden zu lassen. Dass Funktionsaufrufe vielfach Makros sind oder sich dahinter gar Assembler-Code verbirgt, erfährt der Entwickler erst, wenn er in Kernelcode und Headerdateien stöbert. Zum Programmierstil sei auf das sehr lesenswerte Dokument "Linux kernel coding style"[4] verwiesen; es ist auch in den Kernelquellen unter »Documentation/CodingStyle« zu finden. Insbesondere der Anfang könnte dem einen oder anderen ein Lächeln entlocken. Dass im Kernel Goto-Aufrufe erlaubt und sogar erwünscht sind, mag befremdlich wirken - eine spätere Folge wird dazu mehr erklären.

Starthilfe

Um loslegen zu können, müssen ein aktueller Entwicklerkernel und neue Modutils installiert sein (siehe Kasten "Entwicklerkernel installieren"). Neben dem Kernelimage benötigt jeder Programmierer den zugehörigen Quellcode und - das ist bereits neu - auch die Kernelkonfiguration. Ein heikler Punkt, denn bisher genügten Headerdateien und ein selbst geschriebenes Makefile. Die Konfiguration ist der Preis, der für die außergewöhnliche Skalierbarkeit und Portierbarkeit zu zahlen ist: Der Compiler benötigt unterschiedliche Flags, abhängig davon,

  • für welche Plattform er den Kernel übersetzen
    soll,
  • ob der Kernel für eine Ein-Prozessor- oder eine
    Mehr-Prozessor-Maschine gedacht ist und
  • ob innerhalb des Kernels Unterbrechungen (Preemption)
    zugelassen sind.

Dieses Wissen ist im so genannten Kernel-Build-System hinterlegt. Diese in 2.5 komplett überarbeitete Systemkomponente ist für das Generieren des Kernels und seiner Module zuständig. Um sich darin einzuklinken, muss das Makefile den Pfad zu den konfigurierten Kernelquellen kennen. Linus Torvalds hat festgelegt, dass die Quellen über das Module-Verzeichnis zu finden sein sollen: »/lib/modules/ Version/build/«. Meist ist dies ein Symlink auf das bekannte Directory »/usr/src/linux- Version«.

Diesen Artikel druckenDiesen Artikel weiterempfehlen Diesen Artikel kommentieren Newsletter abonnieren
Share/Bookmark
Ähnliche Artikel
Neu im Rennen Desktop-Emulatoren im Überblick
Reifeprüfung 15 Jahre Linux: Mehr Grund zum Blick auf das Heute
Kern-Technik Kernel- und Treiberprogrammierung mit dem Kernel 2.6 – Folge 31
Was ist schon real? PCI-Devices des Hosts an die Kernel Virtual Machine (KVM) durchreichen
Mit Schutzmantel Gekapselt und überschaubar: Minix 3 strebt nach Sicherheit
Kernarbeitszeit Vorbereitung auf die LPIC-1 Prüfung: Teil 7
Whitepaper
Usage Landscape Enterprise Open Source Data Integration

Die Nachfrage nach Datenintegrationslösungen für Unternehmen ist zunehmend gestiegen und vor allem das Interesse an Open Source Technologien wird immer größer. Doch wie und von wem werden Open Source Datenintegrationslösungen genutzt und welches Nutzungsverhalten lässt sich daraus ableiten? Das vorliegende White Paper präsentiert die Erfahrungswerte von über 1000 Open Source Nutzern und liefert fundierte Antworten auf diese Fragen.

Download PDF (Registrierung erforderlich)
Daten Migration - Eine Publikation von Bloor Research

Datenmigrationsprojekte überschreiten häufig das Budget, neigen zu Verzögerung und werden unter Umständen komplett abgebrochen. Bloor Research ist eines der weltweit führenden IT-Forschungs-, Analyse- und Beratungsunternehmen und wird in dem vorliegenden White Paper die wichtigsten Aspekte dieser Problematik näher beleuchten. Ferner werden praktische Empfehlungen für erfolgreiche Migrationsprojekte gegeben, die Sie auf Ihr nächstes Projekt übertragen können.

Download PDF (Registrierung erforderlich)
Kommentare (0)