| 11.6.2005 | Treiber kompilieren |
|
|
|
Treiber vom HardwareherstellerManche Hardware kommt mit Linuxtreibern, die der Hersteller entwickelt hat, die aber nicht im Linux-Kernel drin sind. Das kann verschiedene Gründe haben. Je nachdem, welches der Grund ist, kann man dem Treiber trauen oder auch nicht. Treiber sind eine kritische Stelle im Linux-Kernel. Durch schlechte oder fehlerhafte Treiber kann Linux instabil werden. Deshalb sollte man, wenn irgend möglich, nur die Treiber verwenden, die im Kernel enthalten und - sozusagen - von kernel.org abgesegnet sind. Die wurden im Lauf der Zeit auf allen in Frage kommenden Rechnerarchitekturen (nicht nur auf dem PC) getestet. Übrigens ist auch Microsoft sehr bemüht, schlechte Treiber aus dubiosen Hardwareschmieden von Windows fernzuhalten. Nicht jeder Absturz von Windows ist tatsächlich die Schuld von Microsoft, viele gehen auch auf das Konto von schlechten Hardwaretreibern. Gründe warum der Treiber in Linux fehlt
Die nächste Kernelversion enthält den fraglichen TreiberDem kann man trauen. Die Entwickler von Linux-Distributionen laufen alle der Zeit mehr oder weniger hinterher, und wenn ein Treiber zu neu ist für die Linuxversion, die man hat, ist das Selbstkompilieren eine Möglichkeit, die entsprechende Hardware doch schon zu verwenden. Treiber in Zusammenarbeit mit kernel.orgDas betrifft z.B. den proprietären Riva-Grafikkartentreiber. Der kommt als Binärcode mit einem Wrapper im Sourcecode. Bei den meisten Leuten läuft er, mir persönlich ist er suspekt. Ich frage mich: Was haben die Burschen zu verbergen? Haben sie kein Patent auf ihre Hardwaretechnik? Haben sie keins bekommen? Oder hat jemand anders das Patent? Treiber als Open-Source-ProjektDas betrifft z.B. einen Hersteller von Peripheriekarten zur Prozeßsteuerung. Den Sourcecode muß man sich natürlich erstmal ansehen, ob er einleuchtend ist und eine positive Ausstrahlung hat. Aber im Prinzip ist sowas eine gute Sache. Je offener der Sourcecode, umso schneller kann er reifen. Treiber im Sourcecode vom HerstellerDas betrifft z.B. einige Billighersteller in Taiwan. Den Sourcecode muß man sich noch genauer ansehen als den im vorigen Absatz. Aber besser Sourcecode als Binärkram. Treiber als BinärcodeFinger weg von solcher Hardware. Das betrifft z.B. ISDN-Karten von AVM ("Fritzcard"). Bei den meisten Leuten laufen solche Treiber, bei einigen nicht, andere schimpfen auf Linux und daß es abstürze, genau wie Windows. Solche Treiber sind Dreck. Wenn man versehentlich solche Hardware gekauft hat, sollte man sie bei Ebay reinsetzen, oder vielleicht wieder zu Windows wechseln... Wie man einen Treiber kompiliertMan braucht
Kernel-Source bzw. Kernel-Header, sowie der gcc, sind als Pakete in den Distributionen enthalten. Man muß nicht das ganze Kernel neu kompilieren, man muß nur dafür sorgen, daß der Compiler die Header-Dateien des Kernels "sehen" kann. Die Kernelversion bekommt man mituname -a Ausgabe sei z.B. Linux lex 2.4.19 #6 Thu May 19 02:06:33 CEST 2005 i686 athlon i386 GNU/Linux Also braucht man linux-2.4.19.tar.bz2. Wie und wo man es holt, steht auf der Seite kernel.html Wenn man dagegen ein Kernel-Image installiert hat, sollte man in seiner Paketverwaltung nachsehen, wie das Paket genau heißt, und dann die passenden Kernel-Header installieren. Wenn man nicht weiß, ob man ein Kernel-Image installiert hat, dann hat man eins. Die andere Möglichkeit wäre nämlich, daß man das Kernel selbst kompiliert hat, und das wüßte man. Kernel-Source oder Kernel-Header liegen üblicherweise in/usr/src/... Man hat dann z.B. folgendes Directory: /usr/src/kernel-header-2.4.18-5 und außerdem die Quelldatei /usr/src/rtl8150.c Dann kompiliert man z.B. mit
Das erzeugt z.B. eine Datei /usr/src/rtl8150.o Man lädt den Treiber mitmodprobe /usr/src/rtl8150 oder man schreibt die Anweisung(en) zum Laden des Treibers in eine Datei in /etc/rc.boot/meintreiber oder an einer ähnlichen Stelle, so daß sie beim Booten ausgeführt wird. So eine Datei macht man ausführbar z.B. mit chmod +x /etc/rc.boot/meintreiber |
| abatz.de | Jörn Abatz - Technische Software | Impressum |