Linux am LSG |
|
|
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 |