Linux am LSG

 Powered by SuSE Linux

  Administration / Linux / Treiber  
  Linux basiert auf einem monoliten Betriebssystemkern, das heißt das alle Treiber im Kern sein müssen. Ursprünglich war dies auch wirklich so, heute kann man "Treiber" in Form von Kernelmodule auch zur Laufzeit nachladen. Diese Kernelmodule sind meistens zusammen mit den Kernels kompiliert. Diese Module bekommt man im Prinzip auf zwei Arten: Man erhält den Quellcode und kompiliert ihn gegen die Kernelsourcen bzw. patcht den Kernel gegen den Code und kompiliert ihn komplett neu. Der zweite Weg ist es, dass man die Module fertig kompiliert bekommt. Dies ist der schlechteste Weg, da solche Module oft nicht zum Kernel passen, der aktuell eingesetzt wird. Funktionieren tut dies mit den sog. Standardkerneln.

Mir sind in Zwischenzeit aber keine Module mehr bekannt, die nicht im Quellcode liegen.

Der häufigste Fall von neuen Treibern sind die Kernelpatches. Diese einzuspielen ist im Normalfall kein großes Problem.

Gepatcht wird der Kernel mit einem Programm namens Patch. Die wichtigsten Parameter sind -pX und -i Filename. Mit -i gibt man den Namen des Patches an. Mit -p legt man den Directory Leven fest, wobei X eine Zahl zwischen 0 und 2 ist. Und so patcht man. Zuerst in das Kernelverzeichnis oder das darrüberliegende wechseln. Danach mit Patch -i ../Pfad zur .dif (diff) Datei -p0 oder -p1 | tee -a ~/patch.txt den Patch durchführen. Kommt dabei die Frage ... File to patch:_ hat man einen falschen -p Level verwendet. In der Datei ~/patch.txt kann man sich anschließend davon überzeugen, das alle "Hunks" funktionierten. Sollte dies nicht der Fall sein, muss man die angegebenen Dateien manuell patchen. Wenn es gut geht scheiterte zum Beispiel eine #Include Zeile daran, dass bereits eine andere in Quelltext gestanden ist