Open Source im professionellen Einsatz
Linux-Magazin 08/2014
© psdesign1, Fotolia

© psdesign1, Fotolia

Kernel- und Treiberprogrammierung mit dem Linux-Kernel – Folge 75

Kern-Technik

,

Ubuntu bringt von Haus aus Kernel mit, die für die meisten Einsatzzwecke taugen. Die aktuelle Version 14.04 der Distribution eignet sich aber auch für erste eigene Versuche mit dem Konfigurieren, Übersetzen und Installieren des Linux-Kerns.

539

Der jüngste Ubuntu-Spross, die Nummer 14.04, setzt einen Linux-Kernel in der Version 3.13 ein, allerdings um Treiber aus Kernel 3.14 ergänzt ([1], [2]. Da es sich um eine Release mit Longterm-Support (LTS) handelt, kann der Kernel mehrere Jahre im Einsatz sein. Die Ubuntu-Firma Canonical hat sich aus diesem Grunde auch bereit erklärt, die weitere Pflege dieser Kernelversion zu übernehmen.

Vorgefertigt

Die von Ubuntu eingesetzten Kernel sind eierlegende Wollmilchsäue, die sowohl auf karg als auch auf üppig ausgestatteten Maschinen rund laufen. Wer aber sein System optimieren möchte, einen superaktuellen Treiber benötigt, die jeweils neuesten Kernel testen will oder mit seinem Betriebssystemkern einfach nur rumspielen möchte, muss selbst Hand anlegen.

Zum Spielen oder Optimieren ist nicht unbedingt ein neuer Kernel zu übersetzen. Viel lässt sich bereits durch eine zielgerichtete Konfiguration bewirken. Ausgangspunkte dafür bilden die virtuellen Verzeichnisse »/proc/« und »/sys/« sowie die Übergabe von Kernelparametern beim Hochfahren.

Über das Lesen und vor allem das Schreiben der in den virtuellen Verzeichnissen zu findenden Dateien lässt sich das System auf die jeweilige Plattform anpassen. Mit Superuser-Rechten ausgestattet kann der Anwender so beispielsweise den I/O-Scheduler durch Lesen und Schreiben der Datei »/sys/block/sda/queue« austauschen ([4], [5]).

Kernelparameter wie etwa »threadirqs« zum Aktivieren von Threaded Interrupts (sie erlauben unterschiedliche Prioritäten für Interrupts) setzt man in der Datei »/etc/default/grub« über die Variable »GRUB_CMDLINE_LINUX« :

GRUB_CMDLINE_LINUX="threadirqs"

Wer diese Datei ändert, muss allerdings anschließend in einer Konsole als Superuser »update-grub« aufrufen.

Auch zum Kompilieren von Kernelmodulen wie beispielsweise Treibern ist kein selbst generierter Kernel erforderlich. Die hierfür benötigten Headerdateien sind ebenso unter »/usr/src/« vorhanden wie die zugehörige Kernelkonfiguration. Ist ein Kernelmodul zu backen, reicht also bei korrektem Makefile erfreulicherweise ein Aufruf von »make« aus.

Treiber kompilieren

Wer ein Modul oder einen Treiber aus einem neueren Kernel braucht, sollte vorab unter http://kernel.ubuntu.com/~kernel-ppa/mainline/?C=N;O=D nachsehen (Abbildung 1). Canonical generiert regelmäßig Pakete mit dem aktuellen Linux-Quellcode und legt sie sortiert auf dem Server ab. Die Pakete sind für die jeweils aktuelle Entwicklerversion von Ubuntu kompiliert.

Abbildung 1: Die Linux-Distribution Ubuntu stellt auf ihren Servern aktuelle Kernelpakete zur Verfügung.

Für Trusty Tahr finden sich Kernel der Version 3.14 und die ersten beiden RCs von 3.15, ab dann begann die Entwicklung von Ubuntu 14.10. Andererseits lassen sich mit »dpkg -i Paketname« auch Pakete installieren, die ursprünglich für eine andere Version gedacht waren. Dazu lädt man die Paketdateien per Browser oder mit dem Kommandozeilen-Programm »wget« herunter.

Zwei Pakete sind erforderlich: Eines für den eigentlichen Kernel und eines für die Header, damit sich auch außerhalb der normalen Kernelquellen installierte Treiber (beispielsweise von Virtualbox) kompilieren lassen. Die Namen der Pakete sind sehr ausladend:

http://kernel.ubuntu.com/~kernel-ppa/mainline/v3.15-rc3-utopic/linux-headers-3.15.0-031500rc3-generic_3.15.0-031500rc3.201404280035_amd64.deb

Der eigentliche Paketname (Eintrag nach der Pfadangabe) reicht bis zum Unterstrich, im Beispiel also »linux-headers-3.15.0-031500rc3-generic« . Danach folgt eine Versionsangabe, deren letzter Teil schließlich die Plattform repräsentiert, hier einen 64-Bit-PC (»amd64« ).

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 4 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Linux-Magazin kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Kern-Technik

    Mit dem flexiblen Bootloader U-Boot, einem Tftp-Server, angepasstem Kernel und Userland sowie etwas Konfiguration booten eingebettete Systeme wie der Raspberry Pi vom Netz.

  • Kern-Technik

    Viele Schreibzugriffe und hartes Stromabschalten mögen Flashspeicher gar nicht gerne. Wer der SD-Karte seines Raspberry Pi ein langes Leben schenken und Anwendungen und Anwender trotzdem nicht reglementieren will, garniert sein Himbeertörtchen mit einem Overlay-Filesystem. Hier die Backanleitung.

  • Kern-Technik

    RAM- und Temp-Filesysteme sparen Code, Hauptspeicher und Rechenzeit. Beste Voraussetzungen, um damit Linux beim Booten auf die Sprünge zu helfen.

  • Kern-Technik

    Viele Linuxer wissen nicht um die Gefährlichkeit von Kernelmodulen, deren Herkunft und Integrität nicht 100-prozentig gesichert ist. Noch weniger bekannt ist, dass sich eigene Systeme mit signierten Kernelmodulen gegen Codemanipulationen schützen lassen – vorausgesetzt man macht es richtig.

  • Kern-Technik

    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.

comments powered by Disqus

Stellenmarkt

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.