README und Installationshinweise für das NVIDIA Accelerated FreeBSD Driver Set Letzte Änderung: $Date: 23.07.2004 $ Aktuellster Treiber: 1.0-6113 Diese README-Datei soll Ihnen die grundlegenden Informationen zu Installation und Konfiguration des NVIDIA FreeBSD Driver Set auf einem Rechner mit FreeBSD -STABLE oder -CURRENT liefern. Ergänzt wird sie durch die README-Datei zum NVIDIA Linux Driver Set, die zusätzliche Informationen enthält, die für beide Systeme gemeinsam gelten. Bitte beachten Sie, dass einige Teile des FreeBSD Driver Set noch nicht so ausführlich getestet wurden wie das Linux Driver Set seit dessen Veröffentlichung. Wenn Sie auf Probleme stoßen, so melden Sie diese bitte. __________________________________________________________________________ INHALT: (sec-01) SOFTWARE-ANFORDERUNGEN (sec-02) GRUNDLEGENDE INSTALLATION (sec-03) GRUNDLEGENDE KONFIGURATION (sec-04) LINUX-KOMPATIBILITÄT (sec-05) AUSWAHL DES AGP GART-TREIBERS (sec-06) KONFIGURATION DER LOW-LEVEL-PARAMETER (sec-07) HÄUFIG GESTELLTE FRAGEN (FAQ) (app-a) ANHANG A: UNTERSTÜTZTE NVIDIA-GRAFIKCHIPS (app-b) ANHANG B: ENTWICKLUNG VON MULTITHREADING-ANWENDUNGEN (app-c) ANHANG C: DIE SYSCTL-SCHNITTSTELLE (app-d) ANHANG D: DANKSAGUNGEN (app-e) ANHANG E: KONTAKT __________________________________________________________________________ (sec-01) SOFTWARE-ANFORDERUNGEN __________________________________________________________________________ Die offiziellen Mindestanforderungen für das NVIDIA FreeBSD Driver Set gestalten sich auf Softwareseite wie folgt: - FreeBSD -STABLE (4.9 oder höher) oder FreeBSD -CURRENT (5.2.1 oder höher) * FreeBSD 4.x/-STABLE-Kernel mit folgenden Konfigurationsoptionen: options SYSVSHM * FreeBSD 5.x/-CURRENT-Kernel mit folgenden Konfigurationsoptionen: options SYSVSHM Für weitere Informationen zum AGP-Betrieb lesen Sie bitte (sec-05), "AUSWAHL DES AGP GART-TREIBERS". - Kernelquellen in /usr/src/sys/ - XFree86 4.2 oder höher -- genaue Paketversionen mindestens: XFree86-4.2.0_1 XFree86-libraries-4.2.1_1.tgz XFree86-Server-4.2.1_3 XFree86-clients-4.2.1_1.tgz (Es ist *nicht* damit getan, die 4.2.1-Binaries von ftp.xfree86.org herunterzuladen -- Sie müssen mindestens XFree86-Server-4.2.1_3 haben.) Ältere FreeBSD -STABLE-Versionen als 4.9 werden nicht unterstützt. Bitte beachten Sie: Wenn Sie FreeBSD 4.10 verwenden, funktioniert der NVIDIA-Treiber nicht ohne Weiteres. Näheres entnehmen Sie bitte den FAQs. Auch bei -CURRENT-Kernelversionen, die nach dem 25.05.2004 erstellt wurden, können ähnliche Probleme auftreten. __________________________________________________________________________ (sec-02) GRUNDLEGENDE INSTALLATION __________________________________________________________________________ Die Installation wird sich Zukunft vermutlich etwas einfacher gestalten -- im Moment müssen Sie jedoch noch die NVIDIA FreeBSD Driver Set-Archive von der NVIDIA-Website herunterladen, sie in ein Temporärverzeichnis Ihrer Wahl entpacken und dann im Stammverzeichnis des entpackten Verzeichnisbaums folgenden Befehl ausführen: make install So wird das NVIDIA FreeBSD-Kernelmodul kompiliert, installiert und mit kldload geladen. Gleichzeitig werden zur Vermeidung potenzieller Versionskonflikte eventuell vorhandene OpenGL-Bibliotheken entfernt und durch die NVIDIA OpenGL-Bibliotheken ersetzt. Die Gerätedateien in /dev/nvidia werden erstellt (sofern das System nicht devfs verwendet) und die /boot/loader.conf wird so aktualisiert, dass das NVIDIA-Kernelmodul beim Systemstart automatisch geladen wird. Sollte das Linux ABI-Kompatibilitätsmodul nicht in Ihren Kernel kompiliert sein, wird dieses ebenfalls geladen. Die folgende Liste zeigt die vom Skript installierten Dateien sowie deren Platz in der Dateisystemhierarchie. - libGL.so /usr/X11R6/lib - libGL.so.1 /usr/X11R6/lib - libnvidia-tls.so /usr/X11R6/lib - libnvidia-tls.so.1 /usr/X11R6/lib - libGLcore.so /usr/X11R6/lib - libGLcore.so.1 /usr/X11R6/lib - nvidia_drv.o /usr/X11R6/lib/modules/drivers - libglx.so /usr/X11R6/lib/modules/extensions - libglx.so.1 /usr/X11R6/lib/modules/extensions - nvidia0 /dev - nvidia1 /dev - nvidia2 /dev - nvidia3 /dev - nvidiactl /dev - libGL.so.1.0-6113 /compat/linux/usr/lib - libnvidia-tls.so.1.0-6113 /compat/linux/usr/lib - libGLcore.so.1.0-6113 /compat/linux/usr/lib __________________________________________________________________________ (sec-03) GRUNDLEGENDE KONFIGURATION __________________________________________________________________________ Im Folgenden nehmen wir an, dass Sie bereits über eine rudimentäre XFree86-Konfigurationsdatei verfügen, die an Ihr System angepasst ist. In der XFree86-Konfigurationsdatei sind zumindest zwei Abschnitte für uns von besonderem Interesse: - der Abschnitt "Module" - der oder die Abschnitte "Device" mit Informationen zu dem/den installierten NVIDIA-Gerät/en Ein typischer "Module"-Abschnitt, der für das NVIDIA Driver Set konfiguriert ist, könnte etwa so aussehen: Section "Module" Load "bitmap" Load "extmod" Load "dbe" Load "type1" Load "glx" Load "freetype" EndSection WICHTIG: Mit der Zeile 'Load "glx"' wird der X-Server angewiesen, das NVIDIA GLX XFree86-Erweiterungsmodul zu laden. Die Zeilen "dri" und "GLcore", die sich oft in automatisch erzeugten Konfigurationsdateien finden, sind nicht notwendig, richten jedoch in der Regel auch keinen Schaden an. Ein typischer "Device"-Abschnitt, der für das NVIDIA Driver Set konfiguriert ist, könnte etwa so aussehen: Section "Device" Identifier "Device" Driver "nvidia" VendorName "NVIDIA" BoardName "GeForce2 Go" EndSection WICHTIG: Mit der Zeile 'Driver "nvidia"' wird der X-Server angewiesen, das NVIDIA XFree86-Treibermodul (nvidia_drv.o) für das entsprechende Gerät zu laden. Die meisten automatischen Konfigurationswerkzeuge wählen standardmäßig den Open-Source-Treiber "nv" (nv_drv.o) aus; wenn Sie in Ihrer XF86Config also einen "Device"-Abschnitt mit der Zeile 'Driver "nv"' finden, müssen Sie diese Zeile in 'Driver "nvidia"' ändern. Eine umfassende Beschreibung der verfügbaren Konfigurationsoptionen finden Sie in der README-Datei zum NVIDIA Linux Driver Set. __________________________________________________________________________ (sec-04) LINUX-KOMPATIBILITÄT __________________________________________________________________________ Wenn Sie Linux-OpenGL-Anwendungen auf Ihrem FreeBSD-Rechner ausführen möchten, müssen hierfür verschiedene Voraussetzungen gegeben sein. Zunächst sollten Sie die entsprechende Anleitung zur Installation der Linux-Unterstützung im FreeBSD-Handbuch befolgen (Installation des Pakets linux_base usw.). Sobald die Basiskomponenten installiert sind, müssen Sie nun die NVIDIA Linux OpenGL-Bibliotheken nach /compat/linux/usr/lib installieren (OHNE sie jedoch mit brandelf zu kennzeichnen!). Wenn das Verzeichnis /compat/linux/usr/lib/ zum Zeitpunkt der FreeBSD- Treiberinstallation existiert, werden die Linux-kompatiblen OpenGL- Bibliotheken automatisch installiert. Ebenso benötigen Sie eine Build des Kernelmoduls nvidia.ko, in der die Unterstützung für die Linux ABI-Kompatibilitätsschicht integriert ist. Dies ist standardmäßig der Fall. Aus diesem Grund muss zur Nutzung des Kernelmoduls nvidia.ko auch das Modul linux.ko geladen sein. Hinweis: Wenn Sie die Linux ABI-Kompatibilität nicht benötigen und linux.ko nicht laden möchten, können Sie auch eine neue Build des Kernelmoduls nvidia.ko erstellen, in der keine Unterstützung für die Linux ABI-Schicht enthalten ist. Nähere Details finden Sie in nv-freebsd.h. Bekannte Probleme: Wird die Linux OpenGL-Bibliothek unter FreeBSD im Linux-Kompatibilitätsmodus ausgeführt, kann sie eventuell nicht immer korrekt feststellen, ob eine Anwendung Multithreading verwendet oder nicht. Wie in der entsprechenden Warnmeldung empfohlen, kann es in diesem Fall eventuell hilfreich sein, die Umgebungsvariable __GL_SINGLE_THREADED zu setzen (Bsp.: `setenv __GL_SINGLE_THREADED 1`). Nähere Informationen und eine bessere Lösung finden Sie im FAQ-Eintrag "Warum können die Linux- kompatiblen Bibliotheken nicht korrekt feststellen, ob sie in einer Multithreading-Anwendung genutzt werden?". __________________________________________________________________________ (sec-05) AUSWAHL DES AGP GART-TREIBERS __________________________________________________________________________ Wie schon beim NVIDIA Linux Driver Set können Sie auch hier selber entscheiden, ob der NVIDIA-Treiber seinen integrierten AGP GART-Treiber verwenden oder auf den AGP GART-Treiber des Betriebssystems zurückgreifen soll. Verwenden Sie hierzu die Option "NvAGP" in der XFree86- Konfigurationsdatei: - Option "NvAGP" "0" AGP ist deaktiviert - Option "NvAGP" "1" NVIDIAs AGP GART-Treiber verwenden - Option "NvAGP" "2" AGP GART-Treiber des BS verwenden (agp.ko) - Option "NvAGP" "3" "2" versuchen und ggf. auf "1" zurückgreifen Anders als bei Linux ist diese Option jedoch nicht der einzige bestimmende Faktor in dieser Frage. Bedingt durch die Architektur von FreeBSD muss zum Erstellungszeitpunkt des Kernelmoduls nvidia.ko festgelegt werden, ob ausschließlich der NVIDIA AGP GART-Treiber oder zusätzlich auch der entsprechende FreeBSD-Treiber unterstützt werden soll. Standardmäßig wird in der nvidia.ko-Build nur die Unterstützung für NVIDIAs internen Treiber integriert, dies lässt sich jedoch ändern (siehe nv-freebsd.h). Beachten Sie bitte: Wenn Sie nvidia.ko mit Unterstützung für den FreeBSD- Treiber erstellen, so kann das Modul nur geladen werden, wenn auch agp.ko geladen ist. agp.ko ist insofern ein Sonderfall, als es nach dem Booten nicht mehr geladen werden kann. Um sicherzugehen, dass dieses Modul beim Laden von nvidia.ko bereits geladen ist, müssen Sie Ihrer /boot/loader.conf also folgende Zeile hinzufügen: # -- FreeBSD AGP GART-Treiber laden -- # agp_load="YES" Wenn agp.ko geladen ist, kann es mitunter zu Konflikten mit NVIDIAs AGP GART-Treiber NvAGP kommen, was Stabilitätsprobleme zur Folge hat. Der NVIDIA-Treiber bricht daher die NvAGP-Initialisierung ab, wenn erkannt wird, dass agp.ko geladen ist. Bei aktuellen FreeBSD-Builds ist agp.ko bereits in den Kernel aktiviert. Der Kernel muss in diesem Fall ohne 'device agp' neu erzeugt werden. Bei den neuesten -CURRENT-Kernelversionen lässt sich agp.ko auch mittels eines Geräte-Hints deaktivieren; auf einem derartigen Kernel können Sie also auch einfach der Datei /boot/device.hints die folgende Zeile hinzufügen: hint.agp.0.disabled="1" Unter FreeBSD 5.2.1 oder anderen -CURRENT-Kernelversionen ohne diese Funktionalität lässt sich diese Möglichkeit mit folgendem Patch "nachrüsten": /usr/X11R6/share/doc/NVIDIA_GLX-1.0/agp.ko-hints.diff Um den Patch einzuspielen, verwenden Sie folgenden Befehl: cd /usr/src/sys/ patch -p2 -i /usr/X11R6/share/doc/NVIDIA_GLX-1.0/agp.ko-hints.diff Bei integrierter Unterstützung für den FreeBSD-AGP-GART-Treiber greift nvidia.ko automatisch auf NvAGP zurück, wenn agp.ko nicht erkannt wird. Dies ist beispielsweise der Fall, wenn agp.ko Ihren Chipsatz nicht unterstützt oder mittels eines Geräte-Hints explizit deaktiviert wurde. Allgemein empfehlen wir dringend, NvAGP als AGP-GART-Treiber zu verwenden. Eine vollständige Liste der vom NVIDIA AGP-GART-Treiber unterstützten Chipsätze finden Sie in der README-Datei zum NVIDIA Linux Driver Set. __________________________________________________________________________ (sec-06) KONFIGURATION DER LOW-LEVEL-PARAMETER __________________________________________________________________________ Der NVIDIA-Ressourcen-Manager erkennt einige verschiedene Low-Level- Konfigurationsparameter, die /vor/ dem Start des X-Servers über die sysctl-Treiberschnittstelle gesetzt werden können. Im Regelfall sind keine Änderungen an diesen Parametern nötig; falls Sie sie jedoch ändern wollen oder müssen, finden Sie im Folgenden eine entsprechende Beschreibung. Die aktuellen Einstellungen dieser Parameter können Sie mit folgendem sysctl-Befehl anzeigen lassen (nvidia.ko muss geladen sein): sysctl -a hw.nvidia.registry Zum Ändern eines Parameters müssen Sie den vollständigen OID-Namen gefolgt von einem '=' sowie dem neuen Wert übergeben -- zum Beispiel: sysctl hw.nvidia.registry.EnableVia4x=1 Über die Datei /etc/sysctl.conf können Sie diese Parameter auch automatisch einstellen -- nähere Details siehe 'man 5 sysctl.conf'. nvidia.ko unterstützt folgende Parameter: * * Option: EnableVia4x * * Beschreibung: * * Bei einigen Via-Chipsätzen treten im 4x-Modus Probleme auf, weshalb wir * die Geschwindigkeit sozusagen "zwangsweise" auf 2x drosseln. Wenn Sie * mit dem 4x-Modus experimentieren möchten, können Sie diesen Wert * probeweise auf 1 setzen. Sollte sich das System anschließend aufhängen, * bleibt Ihnen wohl oder übel nichts anderes übrig als der 2x-Modus. * * Zulässige Werte: * * 0: AGP 4x auf Via-Chipsätzen deaktivieren (Standard) * 1: AGP 4x auf Via-Chipsätzen aktivieren * * * Option: EnableALiAGP * * Beschreibung: * * Bei aktiviertem AGP laufen Systeme mit bestimmten ALi-Chipsätzen * (ALi1541, ALi1647) sehr instabil. Um Systemabstürze zu vermeiden, * wird AGP auf Systemen mit diesen Chipsätzen standardmäßig deaktiviert. * Anscheinend lässt sich die Betriebsstabilität jedoch mit einem BIOS- * Update und neueren Versionen des AGP GART-Kerneltreibers bedeutend * verbessern. Wenn Ihr System also einen der oben genannten Chipsätze * verwendet und bisher annehmbar stabil läuft, oder wenn Sie verschiedene * BIOS- und AGPGART-Versionen ausprobieren möchten, können Sie die AGP- * Unterstützung wieder aktivieren, indem Sie diese Option auf 1 setzen. * * Zulässige Werte: * * 0: AGP auf Ali1541 und ALi1647 deaktivieren (Standard) * 1: AGP auf Ali1541 und ALi1647 aktivieren * * * Option: NvAGP * * Beschreibung: * * Diese Option legt fest, welcher AGP-GART-Treiber verwendet wird, wenn * nicht ausdrücklich ein bestimmter Treiber angefordert wird. * * Zulässige Werte: * * 0 = AGP-Unterstützung deaktiviert * 1 = integrierten NVIDIA-Treiber verwenden (falls möglich) * 2 = AGPGART-Treiber des Kernels verwenden (falls möglich) * 3 = beliebiger verfügbarer Treiber (nach Möglichkeit 2, dann 1) * * Wenn AGPGART statisch mit dem Kernel gelinkt oder als Kernelmodul * vor dem NVIDIA-Kernelmodul geladen wurde, wird der NVIDIA-eigene * AGP-GART-Treiber nicht verwendet. * * * Option: EnableAGPSBA * * Beschreibung: * * Aus Gründen der Betriebsstabilität verwendet der Treiber selbst dann * kein Side Band Addressing, wenn diese Funktion vom Host-Chipsatz und * der AGP-Karte prinzipiell unterstützt wird. Dieses Verhalten können * Sie mit dem folgenden Registrierungsschlüssel ändern. * * Bitte beachten Sie: Die Aktivierung dieser Option wird offiziell in * keiner Weise unterstützt! * * Zulässige Werte: * * 0 = Side Band Addressing deaktivieren (Standard auf x86, s. unten) * 1 = Side Band Addressing aktivieren (falls unterstützt) * * * Option: EnableAGPFW * * Beschreibung: * * Ähnlich wie Side Band Addressing sind auch Fast Writes standardmäßig * deaktiviert. Wenn Sie diese Funktion auf entsprechend ausgestatteten * Systemen trotzdem aktivieren möchten, ist dies mit diesem * Registrierungsschlüssel möglich. Bitte beachten Sie, dass dies in * Verbindung mit vielen AGP-Chipsätzen zu instabilem Systembetrieb * führen kann. * * Bitte beachten Sie: Die Aktivierung dieser Option wird offiziell in * keiner Weise unterstützt! * * Zulässige Werte: * * 0 = Fast Writes deaktivieren (Standard) * 1 = Fast Writes aktivieren * * * Option: SoftEDIDs * * Beschreibung: * * Der Registrierungsschlüssel SoftEDIDs bewirkt, dass bei der Verwendung * eines Notebook-LCD-Bildschirms dynamisch geeignete EDID-Daten für den * Bildschirm erzeugt werden. Hierfür kommen die entsprechenden Daten aus * dem Video-BIOS zum Einsatz. Ist diese Option deaktiviert, so werden * je nach dem Wert des Registrierungsschlüssels "Mobile" festcodierte * EDID-Daten ausgewählt. * * Zulässige Werte: * * 0 = Dynamische EDID-Erzeugung deaktivieren * 1 = Dynamische EDID-Erzeugung aktivieren (Standard) * * * Option: Mobile * * Beschreibung: * * Der Registrierungsschlüssel "Mobile" sollte nur dann relevant sein, * wenn die Option SoftEDIDs deaktiviert ist (siehe oben). In diesem Fall * wird sein Wert zum Abfragen der korrekten EDID-Daten für den Notebook- * LCD-Bildschirm verwendet. * * Zulässige Werte: * * ~0 = Automatische Erkennung (Standard) * 1 = Dell-Notebooks * 2 = Toshiba außer Compal * 3 = Alle sonstigen Notebooks * 4 = Compal/Toshiba * 5 = Gateway * * Stellen Sie unbedingt den korrekten Wert für Ihr Notebook ein. * __________________________________________________________________________ (sec-07) HÄUFIG GESTELLTE FRAGEN (FAQ) __________________________________________________________________________ F: Ich habe gelesen, der NVIDIA-FreeBSD-Treiber sei gar kein nativer Treiber, sondern setze einfach auf die Linux ABI-Schicht auf. Stimmt das? A: Nein. Das NVIDIA FreeBSD Driver Set ist ein nativer Treiber. Es stimmt allerdings, dass zusätzlich zu den nativen FreeBSD-Bibliotheken auch Linux-OpenGL-Bibliotheken enthalten sind, damit auch Linux-OpenGL- Anwendungen ausgeführt werden können. F: X stürzt bei `startx` ab, und in meiner XFree86.0.log steht folgende Fehlermeldung: (EE) NVIDIA(0): Failed to obtain a shared memory identifier. A: Der NVIDIA OpenGL-Treiber und der NVIDIA X-Treiber verwenden zur Kommunikation einen gemeinsam genutzten Speicherbereich. Es bestehen also folgende Systemvoraussetzungen: a) SYSVSHM ist in die Kernel-Build integriert b) Sie verwenden XFree86-Server-4.2.1_3 oder höher Die Version XFree86 4.2.1 von der XFree86-FTP-Site reicht leider nicht aus, da ein Programmfehler hinsichtlich gemeinsam genutzter Speicherbereiche erst zwischen 4.2.1 und XFree86-Server-4.2.1_3 behoben wurde. F: X startet nicht; beim Booten erhalte ich Fehlermeldungen ähnlich der folgenden: nvidia0: NVRM: NVIDIA REG resource alloc failed. oder: nvidia0: NVRM: NVIDIA IRQ resource alloc failed. A: Das System-BIOS hat Ihre Grafikkarte nicht korrekt eingerichtet. Unter FreeBSD ist es momentan nicht möglich, PCI-Geräte einzurichten, die vom BIOS nicht korrekt konfiguriert wurden. Deaktivieren Sie in diesem Fall die Option "PNP-OS" o. ä. in Ihrem System-BIOS. F: X startet nicht; beim Booten erhalte ich die folgende Fehlermeldung: nvidia0: NVRM: NVIDIA MEM resource alloc failed. A: Auf bestimmten FreeBSD -CURRENT-Kernels muss u. U. die Datei /boot/loader.conf um folgende Zeile ergänzt werden: hw.pci.allow_unsupported_io_range="1" Nach dieser Änderung sollte sich das NVIDIA-Kernelmodul korrekt laden lassen. F: Warum stürzen KDE-Anwendungen beim Beenden ab? A: Der FreeBSD-Signalhandler setzt das Segmentregister %gs zurück. Infolgedessen kann OpenGL beim Beenden nicht korrekt auf gewisse Daten im Signalhandler zugreifen. Auf -STABLE-Kernels lässt sich dieses Problem mit folgendem Patch beheben: /usr/X11R6/share/doc/NVIDIA_GLX-1.0/machdep.c.diff Wenden Sie diesen Patch auf sys/i386/i386/machdep.c an und erstellen Sie eine neue Kernel-Build. Der Patch kann wie folgt übernommen werden: cd /usr/src/sys/i386/i386/ patch -p0 -i /usr/X11R6/share/doc/NVIDIA_GLX-1.0/machdep.c.diff In aktuellen -CURRENT-Kernelquellen ist diese Änderung bereits vorhanden. F: Warum können die Linux-kompatiblen Bibliotheken nicht korrekt feststellen, ob sie in einer Multithreading-Anwendung genutzt werden? A: Dieses Problem liegt darin begründet, dass das Segmentregister %gs nicht korrekt für den Linux-kompatiblen Modus initialisiert wird. Das Problem lässt sich umgehen, indem Sie die Umgebungsvariable __GL_SINGLE_THREADED auf 1 setzen; dies geht jedoch auf Kosten der Thread-Integrität. F: Ich verwende FreeBSD 4.10 (oder eine -CURRENT-Version nach dem 25.05.2004) und der NVIDIA-Treiber funktioniert nicht richtig. Was tun? A: Bei diesen Kernelversionen funktioniert der msync(2)-Systemaufruf nicht richtig für Zeichen-Sonderdateien (Character Special Files). Um dieses Problem zu beheben, können Sie entweder die unten beschriebenen Patches einspielen oder die VM-OID 'old_msync' auf 1 setzen: sysctl vm.old_msync=1 Dieser Befehl lässt sich durch einen entsprechenden Eintrag in der /etc/sysctl.conf auch automatisieren (siehe 'man 5 sysctl.conf'). Des Weiteren tritt beim Einsatz des NVIDIA-Treibers ein Speicherleck im Geräte-Pager zutage, das sich mit dem Patch für device_pager.c ebenfalls beheben lässt. Für FreeBSD 4.10/-STABLE verwenden Sie die folgenden Patches: /usr/X11R6/share/doc/NVIDIA_GLX-1.0/device_pager.c_4.10.diff /usr/X11R6/share/doc/NVIDIA_GLX-1.0/vm_map.c_4.10.diff Die Patches spielen Sie mit folgendem Befehl ein: cd /usr/src/sys/vm/ patch -p0 -i /usr/X11R6/share/doc/NVIDIA_GLX-1.0/device_pager.c_4.10.diff patch -p0 -i /usr/X11R6/share/doc/NVIDIA_GLX-1.0/vm_map.c_4.10.diff Für FreeBSD 5.2.1/-CURRENT verwenden Sie die folgenden Patches: /usr/X11R6/share/doc/NVIDIA_GLX-1.0/device_pager.c_5.2.diff /usr/X11R6/share/doc/NVIDIA_GLX-1.0/vm_object.c_5.2.diff Die Patches spielen Sie mit folgendem Befehl ein: cd /usr/src/sys/vm/ patch -p0 -i /usr/X11R6/share/doc/NVIDIA_GLX-1.0/device_pager.c_5.2.diff patch -p0 -i /usr/X11R6/share/doc/NVIDIA_GLX-1.0/vm_object.c_5.2.diff F: Beim Starten von X erscheint nur ein schwarzer Bildschirm. A: Dieses Problem kann eine ganze Reihe von Ursachen haben. Im ersten Schritt können Sie versuchen, die ACPI-Unterstützung zu deaktivieren. Weitere Hinweise zur Problembehebung finden Sie eventuell in den FAQs in der README-Datei zum NVIDIA Linux-Treiberset. F: Gibt es das Dienstprogramm nvidia-settings auch für FreeBSD? A: Aufgrund gewisser Unterschiede zwischen den -STABLE- und -CURRENT- Versionen kann mit dem Treiber keine Binärversion von nvidia-settings ausgeliefert werden. Wenn Sie aktuelle Portierungen von gtk+-2.x und gmake installiert haben, können Sie jedoch die Quellen herunterladen und das Programm auf Ihrem System selbst kompilieren. Laden Sie zunächst nvidia-settings-1.0.tar.gz (oder die jeweils aktuelle Version) von folgender Adresse herunter: ftp://download.nvidia.com/XFree86/nvidia-settings Anschließend entpacken Sie die Datei, kompilieren die Quellen und installieren das Programm nach /usr/local/bin. Hierzu verwenden Sie folgende Befehle: tar zxf nvidia-settings-1.0.tar.gz cd nvidia-settings-1.0 gmake install __________________________________________________________________________ (app-a) ANHANG A: UNTERSTÜTZTE NVIDIA-GRAFIKCHIPS __________________________________________________________________________ Eine vollständige Liste aller unterstützten Grafikchips finden Sie in der README-Datei zum NVIDIA Linux Driver Set. __________________________________________________________________________ (app-b) ANHANG B: ENTWICKLUNG VON MULTITHREADING-ANWENDUNGEN __________________________________________________________________________ Diese Version des NVIDIA FreeBSD Accelerated Driver Set sollte nicht mit nativen Multithreading-Anwendungen verwendet werden. Die TLS-Unterstützung wurde wieder entfernt, um die Kompatibilität mit FreeBSD -CURRENT-Versionen zu verbessern, die die neuen FreeBSD-Threading-Bibliotheken verwenden. NVIDIA arbeitet momentan zusammen mit den FreeBSD-Entwicklern an einer Lösung. Zukünftige Versionen des NVIDIA-Treibers sollen den geplanten statischen TLS-Mechanismus von FreeBSD unterstützen. Dieser soll voraussichtlich unter FreeBSD 5.3 eingeführt werden. Die Linux ABI-Kompatibilitätsbibliotheken sind unter FreeBSD -CURRENT allerdings vollständig Thread-sicher. __________________________________________________________________________ (app-c) ANHANG C: DIE SYSCTL-SCHNITTSTELLE __________________________________________________________________________ Über die sysctl-Schnittstelle können Sie Laufzeitinformationen zum Treiber, den installierten NVIDIA-Grafikkarten sowie dem AGP-Status abfragen. Ebenso erlaubt es Ihnen diese Schnittstelle, Low-Level- Konfigurationsoptionen zu steuern und/oder zu überschreiben. Die verschiedenen Informationen sind in einer Hierarchie unter hw.nvidia abgelegt. Der Zugriff ist über den Befehl sysctl(8) möglich: - hw.nvidia.version Gibt die installierte Treiberversion aus. - hw.nvidia.cards.n.* Diese OIDs liefern Informationen zum NVIDIA-Gerät 'n': - model: Produktname des Geräts - irF: Vom Gerät belegter IRQ - vbios: VBIOS-Revision des Geräts - type: Bustyp des Geräts - hw.nvidia.agp.host-bridge.* - hw.nvidia.agp.card.* Diese OIDs liefern Informationen zur AGP-Unterstützung der installierten AGP-Grafikkarte bzw. Host-Bridge. Korrekte Werte erhalten Sie am wahrscheinlichsten in der Zeit zwischen dem Systemstart und dem Start des X-Servers (und der damit einhergehenden Initialisierung des AGP-Subsystems). - rates: Vom Gerät unterstützte AGP-Geschwindigkeiten - fw: AGP Fast Write-Unterstützung des Geräts - sba: AGP Side Band Addressing-Unterstützung des Geräts - registers: AGP-Register des Geräts, Status:Befehl - hw.nvidia.agp.status.* Gibt AGP-Statusinformationen auf Grundlage der AGP-Befehlsregister der Host-Bridge sowie der AGP-Karte aus. - status: AGP aktiviert oder deaktiviert - driver: Verwendeter Treiber - rate: Programmierte AGP-Geschwindigkeit - fw: Fast Writes aktiviert oder deaktiviert - sba: Side Band Addressing aktiviert oder deaktiviert - hw.nvidia.registry.* Low-Level-Konfigurationsoptionen des Kernelmoduls. Änderungen an diesen Optionen sollten in der Regel nicht erforderlich sein und können schlimmstenfalls schwer wiegende Folgen haben. Wenn Sie dennoch eine dieser Optionen ändern möchten, muss dies *vor* dem Start des X-Servers erfolgen. __________________________________________________________________________ (app-d) ANHANG D: DANKSAGUNGEN __________________________________________________________________________ Um diese FreeBSD-Portierung des NVIDIA-Treibers haben sich mit viel wertvoller Hilfe besonders Christian Zander und Matthew N. Dodd verdient gemacht. __________________________________________________________________________ (app-e) ANHANG E: KONTAKT __________________________________________________________________________ Wenn Sie der Meinung sind, einen Programmfehler gefunden zu haben, oder wenn Probleme auftreten, die sich nicht auf anderem Wege lösen lassen, so können Sie uns unter folgender Adresse eine E-Mail schicken: freebsd-gfx-bugs@nvidia.com