PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Linux Drivers vs Windows Drivers



giotis
30.10.02, 12:46
Warum Liefern die Hardware Hersteller binäre Treiber nur für Windows und nicht für Linux,
und wenn es Treiber Linux gibt warum müssen sie in Source vorliegen und in Windows nicht?

winni
30.10.02, 12:52
treiber müssen meines wissens unter linux nicht in sourcen vorliegen.
die grafiktreiber von nvidia z.b. liegen soweit ich weiss nur in binärer form vor, was nvidia immer wieder vorgeworfen wird.


greez winnie

varg
30.10.02, 13:08
>liegen soweit ich weiss nur in binärer form vor, was nvidia immer wieder vorgeworfen wird.

und das zu recht!

Pingu
30.10.02, 13:10
Bei Linux ist das Problem, wenn ein Treiber nur im Binary zur Verfügung steht, dann gilt das Binary genau für eine bestimmte Kernelversion auf einer bestimmten Plattform. Nach Murphy ist aber genau die Kombination, die man braucht, gerade nicht verfügbar. Außerdem bedeuted dies für den Hardwarehersteller einen sehr großen Service Aufwand. Denn jedesmal, wenn eine neue Kernelversion kommt, muß er das Binary für "alle" Plattformen neu machen.
Wenn der Treiber dagegen in Source zur Verfügung steht, dann kann ihn jeder für seine Kombination selber kompilieren.

-= Pingu =-

PS: Auch AVM stellt nur Binaries zur Verfügung. Oder haben die das jetzt geändert?

msi
30.10.02, 13:13
Wenn die sourcen der Treiber für linux nicht offen liegen, kannst du auch die Sicherheit
deines Open Source Systems vergessen, denn gerade da es ein Modul im Kernel
ist kann es leicht das gesamte System crashen lassen oder Sicherheitslücken öffnen.

Markus

ogott
30.10.02, 13:15
niemand verpflichtet hersteller dazu treiber offenzulegen. es verpflichtet sie ja nicht mal jemand dazu welche zu schreiben (wär natürlich unsinnig, wenn sie keine rausbringen würden).
nur weil ein treiber unter linux verfügbar ist, heisst das noch lange nicht, dass die sourcen öffentlich sein müssen. das hängt immer von der lizenz ab, unter der eine software vertrieben wird (treiber sind ja nix anderes als software).
z.b. bei der GPL müssen AFAIK die sourcen offen sein und jeder kann sie verwenden. nur wenn du die sourcen von jemand anderem in einem eigenen programm verwendest, muss dieses auch open source werden.

und wieso hersteller keine treiber für linux entwickeln? genau die gleiche frage, warum es sowenig software (im vergleich zu kommerzieller win32 software) für linux gibt oder warum spielehersteller ihre spiele nicht für linux protieren. in ihren augen rentiert es sich einfach nicht und das wird sich auch nicht ändern, bis es mehr linux user gibt!

ogott

giotis
30.10.02, 13:23
Soviel ich weis liegen die Treiber von nvidia in Source Code, nur für einige Distris gibt es binäre Pakete, ich zum Beispiel benutze debian und musste sie selber übersetzen.

Was ich eigentlich wissen wollte war, bei Linux sind doch alle Treiber im Kernel integriert ist es bei Windows auch so? Und wenn ich bei Windows einen neuen Treiber installiere von einem X Hardware Hersteller wird der auch in den Kernel integriert? Und wenn ja wurde er auch so wie zb es bei alsa oder nvidia bei Linux der Fall ist gegen einen bestimmten Kernel übersetzt? Wobei der Hersteller den Windows Kernel Code haben muss?

ogott
30.10.02, 13:27
das mit den nvidia treibern ist nicht wirklich open source. der treiber selbst ist binär. das, was du kompilieren musst hat was mit den modulen zu tun, da kenn ich mich nicht so genau aus. das .tar.gz file musst du halt dann verwenden, wenn du nicht eine der distributionen hast, die direkt "unterstüzt" wird. das hat mehr mit den richtigen pfaden usw. zu tun.

unter linux sind die treiber übrigens nicht (immer) alle im kernel. es gibt module. und die sind im prinzip das selbe wie treiber (mit dem markanten unterschied, dass man unter linux nich rebooten muss, um ein neues / anderes modul zu laden / zu entfernen).

unter windows haben die treiberhersteller genausowenig den windows sourceocde wie jeder andere mensch auf der welt. dort gibts den kernel und die treiber. die treiber können die hardware hersteller selbst programmieren, aber in den kernel gerät da nix.


ogott

bernie
30.10.02, 13:32
Hi,
Original geschrieben von varg
>liegen soweit ich weiss nur in binärer form vor, was nvidia immer wieder vorgeworfen wird.
und das zu recht! Finde ich nicht,.. schliesslich steckt extrem viel Know-How in den Treibern, warum sollte man das einfach so offen legen? Man sollte sich lieber freuen, dass es überhaupt Linux-Treiber gibt.

Ciao, Bernie

DerLipper[TuX]
30.10.02, 13:36
Das "Treiber"-Konzept von Windows mit dem von Unices zu vergleichen entspricht schon wieder Äpfeln und Birnen. Es gibt da schon größere prinzipielle Unterschiede, die sich stark auf das Design auswirken. Und nicht jeder Win-User hat ein DDK von M$ auf dem Rechner, für das er erstmal ein paar € auf den Tisch legen muss, damit er überhaupt Treiber-Sourcen übersetzen könnte. Also bitte informiert euch wenigstens mal ein bischen über die Hintergründe bevor hier gefährliches Halbwissen die Runde macht :D
O.K. Selbiges gilt natürlich auch für mich selbst :D (Nobody's perfect - my name is Nobody ;))

giotis
30.10.02, 13:41
>unter linux sind die treiber übrigens nicht (immer) alle im kernel. es gibt module. und die sind im prinzip das selbe wie treiber (mit dem markanten unterschied, dass man unter linux nich rebooten muss, um ein neues / anderes modul zu laden / zu entfernen).


Wenn ich es also richtig verstanden habe wird zb aus dem binären nvidia Treiber nur ein neues Kernel Modul übersetzt?

>DerLipper[TuX]....
Könntest du einige Info Quellen nennen?

varg
30.10.02, 13:46
>warum sollte man das einfach so offen legen?

mmh,

weil nvidia es wohl nicht auf die reihe bekommt alternative OSe mit treibern zu bedienen :eek:

cu

patrick

Pingu
30.10.02, 13:48
PS: Wenn Dich das ganze Thema mehr interessiert: http://www.oreilly.com/catalog/linuxdrive2/chapter/book/index.html
Bin auch gerade am lesen.

-= Pingu =-

DerLipper[TuX]
30.10.02, 13:56
Original geschrieben von giotis
>unter linux sind die treiber übrigens nicht (immer) alle im kernel. es gibt module. und die sind im prinzip das selbe wie treiber (mit dem markanten unterschied, dass man unter linux nich rebooten muss, um ein neues / anderes modul zu laden / zu entfernen).


Wenn ich es also richtig verstanden habe wird zb aus dem binären nvidia Treiber nur ein neues Kernel Modul übersetzt?

>DerLipper[TuX]....
Könntest du einige Info Quellen nennen?

1.
Ja, indem du das Makefile von NVIDIA ausführst, wird ein zu deiner Kernelkonfiguration passendes NVIDIA Treibermodul fertig gestellt. Es werden da iirc 3 c-files kompiliert und ne lib drangehängt, so daß eine fertige NVdriver Datei entsteht. Die Library bzw. die schon fertigen object-Files enthalten die wichtigsten Routinen des NVdriver Moduls (bzw. die NVIDIA Geheimnisse ;-))

2. Infos
try /usr/src/linux/Documentation/*.* :D

Desweiteren http://msdn.microsoft.com

HTH

ogott
30.10.02, 14:03
@ DerLipper[TuX]: ich wollt ja eigentlich auch nicht sagen, dass modules unter linux und treiber unter windows das gleiche sind, ist nur ein bisschen blöd rausgekommen. aber das, was unter windows treiber sind, entspricht unter linux wohl am ehesten den modulen. das wollt ich sagen.

hä?

ogott

Catonga
31.10.02, 03:46
Es gibt gute Gründe einen Treiber für Linux im Source Code zur Verfügung zu stellen.

Durch dieses Verfahren schleppt man z.b. keine Altlasten (oder noch schlimmer Bugs) mit,
man könnte z.b. bei Linux sehr wohl eine einheitliche Treiberschnittstelle genau wie bei Windows
einführen, das würde das verwenden von Binärtreibern erleichtern und hätte
für Hardwarehersteller ein paar gute Vorteile, im
gesamten aber überwiegen aber die Nachteile.


Bei Windows läuft das z.b. so, für die Windows Treiber gibt es meines Wissens nach
unter Windows fest definierte Schnittstellen, das heißt die Treiber
werden so geschrieben das sie mit diesen Schnittstellen zusammenarbeiten
und die Schnittstellen werden auch nicht geändert, würde man dies
tun, dann würden unter Umständen die Treiber nämlich nicht mehr funktionieren.
Also läßt man die Schnittstellen so wie sie sind und paßt die Treiber so an, bis sie mehr oder
weniger vernünftig funktionieren.

So weit so gut, wenn jetzt aber in der Schnittstelle ein Fehler gefunden wird,
dann kann man den Bug in der Schnittstelle nicht reparieren, da man dadurch ja
inkompatibel zu bestehenden Windows Treibern werden würde, also bleibt der Bug drin
und für den Treiber wird ein sogenannter Workaround geschrieben, der den Bug einfach
umschifft.

Irgendwann findet man einen weiteren Bug, auch der kann nicht mehr gefixt werden,
da man ja die kompatilität nicht verlieren will
irgendwann sieht dann die Windows Schnisttstelle wie ein löchriger Käse aus,
und wer sich in dem löchrigen Käse nicht zurechtfindet, der schreibt dann
halt zwangsläufig einen Treiber der irgendwann abstürzt, da er auf einen Bug (Käse Loch)
stößt, wo es dann nicht mehr weiter geht.

Das Problem gibts bei Linux normalerweise nicht, und genau deswegen ist es so wichtig, daß die
Treiber im Source Code vorliegen, weil wenn man nur Binär Treiber hat, dann kann einem
unter umständen das gleiche wie bei Windows passieren, bzw. der Rest der Linux User zieht mit
einem gefixten Kernel und Source Treibern weiter und man selber muß bei nem
alten Kernel stehen bleiben bei dem der eigene Binärtreiber für die eigene Hardware noch funktioniert.


Deswegen:
Source Treiber hui
Binär Treiber pfui


Im moment mag das mit den Nvidia Treibern ja ganz gut laufen, aber was passiert wenn
von XFree 4 auf XFree 5 umgestiegen wird, dann müßte man nämlich auch dieses closed source
Modul unter umständen ändern.
Letzteres ist in 2 Fälllen nicht mehr Möglich:
A) Nvidia beendet den Linux Treibersupport für alte Grafikkarten, das gilt insbesondere dann,
wenn das Unified Driver Model von Nvidia irgendwann mit neuen Grafikkarten nicht mehr funktioniert.
B) NVidia geht bankrott und mit dem Untergang von Nvidia werden die Treiber Sourcen begraben.

oracle2025
31.10.02, 07:29
@Catonga

Sehr gute und ausführliche Darstellung, genauso meine Meinung.

Trotzdem befürchte ich das meine nächste Graka eine nVidia sein wird, obwohl es mir irgendwie wiederstrebt.

andere, ziemlich abgedrehte utopische Idee, wie wär's mit einem vollkommen Plattformunabhängigen Treiber format, das auf XML aufbaut, und die Hardware eigenschaften eines Gerätes beschreibt, sodass sich automatisch die passenden Quellcodes für entsprechende Linux-Kernel, Windows, BeOS, *BSD Treiber daraus erzeugen lassen

wird vermutlich auf die schnelle nicht für komplexe Hardware wie Grakas oder Soundkarten funktionieren, aber für die ferne Zukunft wärs doch eine recht eine gute Sache.

oder möglicherweise eine Kombination aus Sourcecode und abstrakter/plattformunabhängiger Beschreibung

bernie
31.10.02, 08:55
@ Catonga

Wenn es die Treiber/Hardware Hersteller schaffen ihre Software auf die geänderte Schnittstelle von Win9x zu NT+ anzupassen, werden sie es wohl auch schaffen von Xfree4 auf XFree5 umzusteigen. Ich seh da kein Problem. Keiner regt sich unter Windows auf wenn Treiber nur als binaries vorliegen, und unter Linux schon? Angeblich soll in 2.6 der Support für Binary Treiber verbessert werden. Und genau das könnte Linux zum Durchbruch verhelfen.

@ oracle2025

Hi, das mit dem XML ist wohl nicht ganz machbar denke ich. Hast du schon mal versucht einen CPLD mit VHDL zu beschreiben? Das ist eine unglaubliche Arbeit. So High-Level kann man eine Grafikkarte nicht beschreiben, als das XML Sinn machen würde. Mit den programmierbaren Pixel/Vertex Einheiten (und was weiss ich noch alles) wird das nicht machbar. Ausserdem sprechen die Treiber die Hardware auf einer so tiefen Ebene an, dass nVidia diese Spezifikationen auch nicht hergeben wird, da man ja sonst sehen würde wie sie ihre Hardware bauen.

Ciao, Bernie

Catonga
31.10.02, 18:05
Original geschrieben von bernie
@ Catonga

Wenn es die Treiber/Hardware Hersteller schaffen ihre Software auf die geänderte Schnittstelle von Win9x zu NT+ anzupassen, werden sie es wohl auch schaffen von Xfree4 auf XFree5 umzusteigen. Ich seh da kein Problem. Keiner regt sich unter Windows auf wenn Treiber nur als binaries vorliegen, und unter Linux schon? Angeblich soll in 2.6 der Support für Binary Treiber verbessert werden. Und genau das könnte Linux zum Durchbruch verhelfen.


Nun, es geht nicht darum ob die Hersteller das schaffen können, sondern darum ob sie es schaffen wollen.

Das das technisch kein Problem ist, das ist klar, aber ob dies aus Sicht der Firma marketingtechnisch einen Sinn macht liegt auf einem anderen Blatt.


Wenn z.B. XFree 5 erst in 2 oder 3 Jahren kommt,
wer sagt denn dann, daß NVidia die Linux Treiber für eine 6 Jahre alte TNT 2 Karte
nach XFree 5 portieren möchte.
Das ist doch das große Problem an der ganzen Sache.
Man bekommt ja von NVidia nichtmal vernünftige Linux 3d Treiber für eine Riva128 Grafikkarte.


Unter Windows regen sich die Leute erst dann auf, wenn sie festellen,
das ihre Hardware von Windows 3.1 Zeiten nicht mehr mit Windows XP funktioniert.
Und mal ehrlich, soll man sich wegen einem neuen Betriebsystem extra einen neuen Scanner oder ähnliches kaufen, wenn der alte noch wunderbar läuft?

gfc
31.10.02, 18:12
Original geschrieben von Catonga

Unter Windows regen sich die Leute erst dann auf, wenn sie festellen,
das ihre Hardware von Windows 3.1 Zeiten nicht mehr mit Windows XP funktioniert.
Und mal ehrlich, soll man sich wegen einem neuen Betriebsystem extra einen neuen Scanner oder ähnliches kaufen, wenn der alte noch wunderbar läuft?

ich hab meinen geliebten HP 4400c Scanner verkauft und dafür nen Epson 1650 gekauft...

wieso? weil dieser unter Linux läuft.. man braucht nur guten willen....