Treiber übernehmen typischerweise Aufgaben, die mit der Ansteuerung von Hardware zu tun haben.
Auf der einen Seite spricht der Treiber also mit der Hardware (die außer ihm keiner versteht) und auf der anderen Seite mit dem Betriebssystem (Kernel), wobei die Schnittstelle auf dieser Seite standardisiert und für alle Geräte der gleichen Klasse gleich ist.
Klassischerweise ist die Programmierung eines Treibers die Aufgabe des Hardwareherstellers, da Treiber gerätespezifisch sind und der Hersteller seine Hardware am besten kennt.
Leider verkaufen z.Zt. noch sehr wenige Hardwarehersteller ihre Geräte mit Linux-Treibern. Häufig werden Treiber von der Linux-Community erstellt, das geht aber nur, wenn der Hersteller die nötigen Informationen über die Hardware herausrückt. Außerdem ist das meiner Meinung nach eine Ausbeutung von Freiwilligen, die vom Kaufpreis der Hardware nichts abbekommen.
Im Fall von Linux werden Treiber in Form von KernelModulen realisiert.
siehe auch: Gerätetreiber