Hallo,
die Sache ist die. Die meiste Hardware ist sich sehr ähnlich. Es gibt auf dem Markt für jede Aufgabe nur wenige Chips, die alle Hersteller in unterschiedlichste Geräte verbasteln. Da diese Hersteller aber nicht für jede Generation neue Treiber schreiben wollen, unterscheiden sich die Hardwaregenerationen aus Sicht der Software meist gar nicht bis nur minimal. Zum Beispiel Intel mit seinen "ICH"-Southbridges. Seit sicher 5 Jahren unverändert. Dazu kommen diverse Geräte, die standardisiert sind. So sind zum Beispiel USB-Controller und AHCI-Controller (neuere S-ATA Controller) immer exakt gleich, mit einem Treiber schlägt man alle Geräte tot. Für FreeBSD heißt das, dass man mit wenigen Treibern eine Unmenge Geräte unterstützt.
Nun muss man aber zwei Punkte beachten. Einmal neigen Hersteller dazu Geräte falsch zu implementieren, sie verstoßen gegen Vorgaben der Chiplieferanten. Das führt dazu, dass man teriberseitig anpassen muss, sogenannte Quirks einbauen. FreeBSD geht daher zunehmend den Weg, dem Benutzer Wege zu geben, diese Quirks slebst setzen zu können. Für HDA-Soundkarten kann man es schon, für USB kommt es mit FreeBSD 8.0. Damit vergößert man die Anzahl der unterstützten Hardware einerseits enorm, muss andererseits nicht mehr ständig am Treiber rumfummeln.
Der andere Punkt ist die "Device ID". Jedes Gerät hat eine solche, sie gibt drei Dinge an: Um was für ein Gerät es sich handelt, Soundkarte, Netzwerkkarte, etc. Außerdem den Hersteller und das genaue Produkt. Damit ein Treiber ein Gerät greifen kann, muss er es erkennen. Ein generischer Treiber wie ein AHCI-Treiber sagt "Geräteklasse -> AHCI? Her damit!". Aber spezialsierte Treiber können es nicht. Sie sagen "Geräteklasse -> Netzwerk. Hersteller -> Intel. Typ -> XXX? Kenne ich!". Unterschiedet sich diese Device ID aber, da der Hersteller eine eigene Suppe kocht, erkennt der Treiber das Gerät nicht als unterstützt und weigert sich es zu nutzen, auch wenn es kompatibel wäre. Unter Windows gibt es daher die Möglichkeit eine Treiber zu erzwingen. Unter FreeBSD (und Linux, Solaris, etc.) muss man hingegen dem Treiber im Quellcode die Device ID mitgeben. Das ist nicht schwer, dafür muss man nicht programmieren können.
Nun sind FreeBSDler sehr konservativ. In die offizielle Hardwareliste unter
http://www.freebsd.org/releases/7.2R/hardware.html schreiben sie daher nur Hardware rein, die garantiert läuft. Von der man es weiß. Das die Treiber viel mehr Komponenten unterstützen, unterschlägt man dort. Das steht in den "Manpages" der Treiber. Zum Beispiel steht in "man ata" dann: AMD756, AMD766, AMD768, AMD8111, CS5536. Es werden also zum Erscheinen von FreeBSD 7.2 erhältlichen ATA/S-ATA Controller unterstützt. Aber vielleicht erst, nachdem man die Device ID nachgetragen hat, was man zum Glück eher selten muss.
Das Vorgehen ist also so:
1. Ich will Hardware kaufen.
2. Steht sie in der Hardware-Liste? Wenn ja -> alles gut
3. Wenn nein -> Welchen Chip hat sie?
4. Unterstützt FreeBSD diesen Chip (Google fragen) -> Wenn ja im Versand bestellen oder Rückgaberecht aushandeln und ausprobieren.
5. Wenn Nein -> Pech gehabt. Wenn keine Antwort -> Im Forum fragen, ob jemand diesen Chip kennt und was Alternativen sind.
Ich hoffe, nun wird es ein wenig klarer
Edit: Noch eine Anmerkung. Es gibt Geräteklassen - ganz schlimm ist es bei Wlan - wo die Hersteller die Chips auf der Karte wechseln, ohne es irgendwie zu kennzeichnen. Das ist asozial und nervig.