FreeBSD 12 mit KDE5 - Probleme mit NVIDIA Treiber

borsti007

Well-Known Member
Hi,

ich habe FreeBSD 12 mit KDE5 installiert.

Lief auch soweit alles, bis ich den Treiber installiert hatte:

#ee /boot/loader.conf
-> linux64_load="YES"
#kldload linux64
#pkg install nvidia-driver nvidia-xconfig nvidia-settings
#ee /etc/rc.conf
-> kld_list="nvidia-modeset"
#kldload nvidia-modeset
#nvidia-xconfig

Vor der Treiberinstallation hatte ich noch ein Bild. Jetzt nicht mehr.

dmesg -a sagt das:
Code:
Loading kernel modules:
NVRM: The NVIDIA GeForce 8400 GS GPU installed in this system is
NVRM:  supported through the NVIDIA 340.xx Legacy drivers. Please
NVRM:  visit http://www.nvidia.com/object/unix.html for more
NVRM:  information.  The 390.87 NVIDIA driver will ignore
NVRM:  this GPU.  Continuing probe...
nvidia-modeset: Loading NVIDIA Kernel Mode Setting Driver for UNIX platforms  390.87  Tue Aug 21 15:53:31 PDT 2018
Setting hostname: freebsd.


Nun habe ich den NVIDIA 340.107 heruntergeladen und will den installieren.

Bei der Installation kommt dann das:

Code:
root@freebsd:/tmp # tar xzf NVIDIA-FreeBSD-x86_64-340.107.tar.gz && cd NVIDIA-FreeBSD-x86_64-340.107 && make install
===> src (install)
cc  -O2 -pipe -DNV_VERSION_STRING=\"340.107\" -D__KERNEL__ -DNVRM -Wno-unused-function -Wuninitialized -O2 -fno-strict-aliasing -mno-red-zone -mcmodel=kernel -UDEBUG -U_DEBUG -DNDEBUG  -Werror -D_KERNEL -DKLD_MODULE -nostdinc  -I. -I. -I/usr/src/sys -I/usr/src/sys/contrib/ck/include -fno-common  -fno-omit-frame-pointer -mno-omit-leaf-frame-pointer    -mcmodel=kernel -mno-red-zone -mno-mmx -mno-sse -msoft-float  -fno-asynchronous-unwind-tables -ffreestanding -fwrapv -fstack-protector -Wall -Wredundant-decls -Wnested-externs -Wstrict-prototypes -Wmissing-prototypes -Wpointer-arith -Wcast-qual -Wundef -Wno-pointer-sign -D__printf__=__freebsd_kprintf__ -Wmissing-include-dirs -fdiagnostics-show-option -Wno-unknown-pragmas -Wno-error-tautological-compare -Wno-error-empty-body -Wno-error-parentheses-equality -Wno-error-unused-function -Wno-error-pointer-sign -Wno-error-shift-negative-value -Wno-address-of-packed-member  -mno-aes -mno-avx  -std=iso9899:1999 -c nvidia_acpi.c -o nvidia_acpi.o
In file included from nvidia_acpi.c:12:
./os-interface.h:27:10: fatal error: 'stdarg.h' file not found
#include <stdarg.h>
         ^~~~~~~~~~
1 error generated.
*** Error code 1

Stop.
make[1]: stopped in /tmp/NVIDIA-FreeBSD-x86_64-340.107/src
*** Error code 1

Stop.
make: stopped in /tmp/NVIDIA-FreeBSD-x86_64-340.107

Nun weiß ich nicht mehr weiter.

Eine Idee?
 
nunja, das mit Grafik kann unendlich kompliziert sein und ich bin ja nur erklärter Laie.
Trotzdem, es gibt nvidia-driver-340-340.107_4 als Paket, das du direkt installieren kannst. Du brauchst da nicht zu kompiliren. Wenn du kompilieren möchtest, solltest du die Ports verwenden.
Dabei gibt es Installationsmeldungen, denen du folgen musst. Die sagen dann zB was dazu, welche Linux-Module vielleicht laufen müssen und so weiter.
Das nvidia-xconfig geht natürlich ja auch nur, wenn es erst installiert wurde und soviel ich weiß, legt es dann in /root eine neue xorg.conf an, die man sich auch erst ansehen sollte. Dann kann man die testen und gezielt mal starten (X -config /pfad/zu/conf oder so ähnlich, steht wohl auch im Handbuch). Danach müsste man diese dann zu einer xorg.conf machen, oder teilweise daraus zitieren und die neuen kleinen Dateien benutzen (siehe Handbuch). Allerdings sollte es das gar nicht brauchen, weil es fast immer genügt, sich den Automatismen von X zu überlassen, um ein Bild zu erzeugen. Kurz gesagt, es braucht dieses nvidia-xconfig eigentlich gar nicht mehr.
 
Hallo,

nimm mal aus der loader.conf den linux64 Eintrag raus, und packe stattdessen linux und linux64 in die kld_list der rc.conf.
Ändere nvidia-modeset nach nvidia.
Und dann versuche nochmal nach einem Neustart die Installation des nvidia-legacy-driver Paketes.
 
Ok, das habe ich gemacht und es funktioniert. Danke.

Nun übernimmt er aber meine Auflösung nicht.

mit nvidia-xconfig hatte ich nochmal eine xorg.conf erstellt. Auch im Nvidia-settings wird mir die richtige Auflösung angezeigt.


Meine Xorg.conf sieht so aus:

Code:
# nvidia-xconfig: X configuration file generated by nvidia-xconfig
# nvidia-xconfig:  version 430.14

# nvidia-settings: X configuration file generated by nvidia-settings
# nvidia-settings:  version 430.14

Section "ServerLayout"
    Identifier     "Layout0"
    Screen      0  "Screen0" 0 0
    InputDevice    "Keyboard0" "CoreKeyboard"
    InputDevice    "Mouse0" "CorePointer"
    Option         "Xinerama" "0"
EndSection

Section "Files"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Mouse0"
    Driver         "mouse"
    Option         "Protocol" "auto"
    Option         "Device" "/dev/sysmouse"
    Option         "Emulate3Buttons" "no"
    Option         "ZAxisMapping" "4 5"
EndSection

Section "InputDevice"

    # generated from default
    Identifier     "Keyboard0"
    Driver         "keyboard"
EndSection

Section "Monitor"

    # HorizSync source: edid, VertRefresh source: edid
    Identifier     "Monitor0"
    VendorName     "Unknown"
    ModelName      "Samsung S32D850"
    HorizSync       27.0 - 90.0
    VertRefresh     24.0 - 75.0
    Option         "DPMS"
EndSection

Section "Device"
    Identifier     "Device0"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "GeForce 8400 GS"
EndSection

Section "Screen"
    Identifier     "Screen0"
    Device         "Device0"
    Monitor        "Monitor0"
    DefaultDepth    24
    Option         "Stereo" "0"
    Option         "metamodes" "2560x1440 +0+0"
    Option         "SLI" "Off"
    Option         "MultiGPU" "Off"
    Option         "BaseMosaic" "off"
    SubSection     "Display"
        Depth       24
    EndSubSection
EndSection


Er zeigt mir aber meine 2560x1440 Auflösung trotzdem nicht an. Siehe Bild.
 

Anhänge

  • IMG_0675.jpeg
    IMG_0675.jpeg
    106,7 KB · Aufrufe: 297
Hallo,

dann lösche bitte Deine xorg.conf.

Und kopiere mal folgende zwei Dateien nach /usr/local/etc/X11/xorg.conf.d:
Die 10-nvidia.conf
Code:
Section "Device"
    Identifier     "NVIDIA CARD"
    VendorName     "NVIDIA Corporation"
    Driver        "nvidia"
EndSection

Die input.conf
Code:
Section "InputClass"
    Identifier      "Keyboard defaults"
    Driver          "keyboard"
    MatchIsKeyboard "on"
    Option          "XkbLayout" "de"
EndSection

Dann ein Neustart und mal schauen :)
 
Na gut, schon zwei Teilerfolge.

Mit der 10-nvidia.conf habe ich schon verschiedene Karten unter FreeBSD seit Jahren zum Laufen bekommen. Xorg macht eine Menge automatisch, bei diesen großen config-Dateien, die vom Nvidia-Werkzeug xconfig erzeugt werden, habe ich den Eindruck, die machen zu viel des Guten, was dann die Xorg-Automatik stören kann.

Aber nun weiß ich erstmal nicht weiter, wie Du eine vernünftige Auflösung bekommen kannst.
 
Hast Du ein Live-Linux? Vielleicht mal damit starten und schauen, ob es klappt. Dann die automatisch generierten Dateien in xorg.conf.d auf Stick kopieren und in den xorg.conf.d der FreeBSD-Installation kopieren. Ggf. Einträge von nouveau auf nvidia ändern, wenn die Live-CD Nouveau statt Nvidia-Treiber verwendet.
 
Danke. Ich versuche es mal mit TrueOS, wenn er denn endlich mal mit dem Image auf USB Stick schreiben fertig wird. Ich berichte...
 
ganz grundsätzlich solltest du vor allem in die /var/log/Xorg.0.log schauen, um zu wissen, was überhaupt so abgeht. Das ist für mich immer die erste und womöglich wichtigste Aktion überhaupt, um Probleme mit X anzugehen.
So weißt du ja noch nicht mal mit Sicherheit, ob überhaupt der nvidia-Treiber auch geladen wird oder vielleicht ein Vesa-Treiber läuft.
Du kannst auch sehen, ob der Platz der Karte richtig ist und so weiter, auch, welche Auflösungen möglich sind, die dann mit einer Zeile in der xorg.conf auch konkret gesetzt werden könnten.
Auch die Sache mit den nvidia-modesetting_enable Einträgen ist nicht ganz schlüssig. Soweit ich mich erinnere, musste ich schon mal beide Versionen probieren und nicht direkt der Anweisung aus dem Installationstext folgen. Ich stelle hier mal den von meinem aktuellen Treiber ein, um zu zeigen, worauf ich mich beziehe:
Code:
pit@Celsius ~:- > pkg info -D nvidia-driver-390.87_3
nvidia-driver-390.87_3:
Always:
To use these drivers, make sure that you have loaded the NVidia kernel
module, by doing

    # kldload nvidia    (or nvidia-modeset, see below)

or adding

    nvidia_load="YES"    (or nvidia-modeset_load="YES", see below)

to /boot/loader.conf, or putting ``nvidia'' (or ``nvidia-modeset'', see
below again) on ``kld_list'' variable in /etc/rc.conf.

If you build this port with FreeBSD AGP GART driver, make sure you have
agp.ko kernel module installed and loaded, since nvidia.ko will depend
on it, or have your kernel compiled with "device agp".  Otherwise, the
NVidia kernel module will not load.  Also, please set correct value for
``Option "NvAGP"'' in ``Device'' section of your X11 configuration file.

When building with Linux compatibility support, make sure that linux.ko
module is available as well (or have it compiled in kernel).  It can be
loaded via /boot/loader.conf, or later in the boot process if you add

    linux_enable="YES"

to your /etc/rc.conf.

If X.org cannot start and reports

    (EE) NVIDIA(0): Failed to obtain a shared memory identifier.

in /var/log/Xorg.0.log while actually you have ``options SYSVSHM''
enabled in kernel, the sysctl ``kern.ipc.shmall'' should be increased.

Starting with version 358.09, some important functionality of the driver
has been broken out into a separate kernel module, nvidia-modeset.ko.
Users that experience hangs when starting X11 server, or observe

    (II) NVIDIA(0): Validated MetaModes:
    (II) NVIDIA(0):     "NULL"

in /var/log/Xorg.0.log should replace ``nvidia'' with ``nvidia-modeset''
in their /boot/loader.conf or /etc/rc.conf configuration files, depending
on how they prefer to load NVidia driver kernel module.

See /usr/local/share/doc/NVIDIA_GLX-1.0/README for more information.
Diese Meldungen sind natürlich extrem wichtig, man verliert sie aber gerne aus den Augen, vor allem dann, wenn man viele Pakete direkt nacheinander als Abhängigkeiten von anderen eingespielt hat und deshalb diese Meldungen etwas unübersichtlich werden.
Nochwas:
Code:
pit@Celsius ~:- > cat /usr/local/etc/X11/xorg.conf.d/keyboard.conf
Section "InputClass"
    Identifier    "KeyboardDefaults"
    Driver        "keyboard"
    MatchIsKeyboard    "on"
        Option          "XkbModel" "pc105"
    Option        "XkbLayout" "de"
    Option        "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
und zwar, weil man in der Testphase ganz so, wie im Handbuch auch beschrieben, X manuell starten sollte (siehe ganz unten), bis man sicher ist, dass es auch korrekt läuft und dann erst mit KDE oder was auch immer weiter macht. Dabei sind die Fehlermeldungen natürlich wichtig, trotzdem finde ich noch immer die Idee sehr schlecht, ein schwarzes Bild auf schwarzem Hintergrund auszugeben. Deshalb wähle ich hier auch immer die Option -retro (wenn ich sie gerade recht erinnere), um das alte, grause Muster mit einer x als Maus zu sehen. Beide Bilder möchte man aber in der Testphase immer wieder löschen, also X killen und dazu dient der Eintrag "Option "XkbOptions" "terminate:ctrl_alt_bksp"".
 
Nachdem ich gestern TrueOS installiert hatte, und feststellen musste, dass es keine Desktop-Version mehr gibt, versuche ich es nun nochmal mit FreeBSD. Ich werde mir dann mal die /var/log/Xorg.0.log anschauen. Mit einer BSD 10 und KDE4 hatte es ja schonmal funktioniert.
 
Ich gebe es auf. Ist langsam eine Pest. Versuche es jetzt nochmal mit GhostBSD und wenn das nicht läuft, dann kommt wieder Linux drauf.
 
dann kommt wieder Linux drauf.
nach meinem Gefühl, ist das vermutlich eh die bessere Lösung. KDE ist doch mit vielen Dingen bestückt (ich habe es mir nur sehr oberflächlich in einer GNU/Linux-Live-Sitzung angesehen), die ich mir so mit FreeBSD gar nicht so einfach vorstellen kann, wie zB ein Monitor-Setup direkt aus der GUI als einfacher User.
Allerdings gibt es hier im Forum schon durchaus pfiffige Leute mit Expertenwissen, die auch oft schon weiter geholfen haben, wenn es tatsächlich echte Probleme irgendwo gibt. Das geht dann aber mitunter auch so weit, dass ein Patch in Quellen eingespielt und diese dann von Hand kompiliert werden müssen. Das ist nicht wirklich eine große technische Herausforderung, es soll nur sagen, dass es nicht immer automagisch funktioniert und in deinem Fall weiß niemand, was du nun eigentlich gemacht hast, um X unter FreeBSD zum Laufen zu bringen.
Unter solchen Umständen kann niemand ernsthaft einen Tip geben und schon gar nicht jene Leute, die tatsächlich kompetent sind (also ich zB nicht).
Genau aus dem Grund will ich nun auch nicht versuchen, aus dem Gedächtnis zusammen zu schreiben, wie ich das bisher so hin-gekriegt habe mit X und meinen nvidia-Karten. Am Ende hast du eh schon wieder ein GNU/Linux drauf und bist damit auch zufrieden.
Deshalb nur der Tip, falls du es nochmal mit FreeBSD versuchen möchtest: folge dem Handbuch. Das ist eine gute Richtschnur und immer dann, wenn etwas nicht so geht, wie es dort beschrieben ist, kannst du detaillierte Fragen stellen und dann auch genau beschreiben, was du denn schon gemacht hast, in welcher Reihenfolge und mit welchen Ergebnissen.
Mit den Angaben bisher sehe ich nicht, wie das zu einem funktionieren X führen könnte.
 
Ich gebe FreeBSD nochmal eine Chance. Die Sache mit GhostBSD habe erstmal noch nach hinten verschoben. Ich hatte beim ersten Versuch noch was mit "Modeset" in der Xorg.conf stehen. Das ist aber erst ab Treiberversion >=35x oder 36x relevant. Daher werde ich nochmal fummeln. Meine Konfiguration ist ja auch nicht ungewöhnlich. Der X-Server und KDE funktionieren ja. Nur die Auflösung ist dann noch verbogen, was dann eher mit der Xorg.conf zutun hat- denke ich mir. Ich werde da noch weiter fummeln. Gestern hatte ich nur keine Lust.
 
Hoffentlich hattest Du den 390 iger Treiber vorher sauber deinstalliert, bevor Du den 340.x installiert hast. Der 340.x Treiber ist sozusagen der Legacy Treiber .... Du hast eine alte Nvidia, aber eine sehr alte Karte, dürfte so von 2007 sein. Und was sollte an der xorg.conf falsch sein? Sie wird doch mit dem Nvidia Dienstprogramm erzeugt. Das habe ich früher schon sehr oft gemacht, ich habe auch noch eine 9500 GT.Das funktionierte immer problemlos, auch mit dem 340.x Treiber. Änderungen nimmt nvidia-settings nur vor, wenn es als root läuft. Was sagt denn xrandr? Damit kannst Du auch die Auflösung dauerhaft ändern. Xrandr zeigt in der Konsole an, welche Auflösungen überhaupt anwendbar sind.

Code:
xrandr -s 1920x1080

speichert die geänderte Auflösung dauerhaft, so das sie auch nach einem Neustart zur Verfügung steht.

Wie auch immer, es wird nicht mehr lange dauern, das diese Karte noch unterstützt wird.
 
Ich gebe FreeBSD nochmal eine Chance. Die Sache mit GhostBSD habe erstmal noch nach hinten verschoben. Ich hatte beim ersten Versuch noch was mit "Modeset" in der Xorg.conf stehen. Das ist aber erst ab Treiberversion >=35x oder 36x relevant. Daher werde ich nochmal fummeln. Meine Konfiguration ist ja auch nicht ungewöhnlich. Der X-Server und KDE funktionieren ja. Nur die Auflösung ist dann noch verbogen, was dann eher mit der Xorg.conf zutun hat- denke ich mir. Ich werde da noch weiter fummeln. Gestern hatte ich nur keine Lust.

Hallo,

wie ich oben schon geschrieben habe, darf bei meinem Lösungsvorschlag kein modeset beim Aktivieren des Nvidia-Treibers gesetzt werden und es darf keine xorg.conf mehr vorhanden sein.

Eine weitere Möglichkeit ist der Tausch der betagten Karte durch eine modernere - vielleicht lüfterlose - GT 710 Nvidia GeForce Karte. Die ist viel sparsamer, und Du bekommst sie schon ab ca. 30 Euro.

Viel Erfolg.
 
ob es sich dafür dankbar zeigen soll?
:D

Ich weiß nicht, ob ich damit alleine dastehe. Immer wenn ich sowas lese, dann denke ich, dass es heutzutage immer mehr an Geduld und Ausdauer Hartnäckigkeit mangelt, wenn es nicht beim ersten Versuch klappt.
Bei allen Situationen im Leben, nicht nur bei 'mal schnell anderes Betriebssystem nutzen, weil jeder ja winbashing betreibt'.

@borsti007
Boote mal nomadBSD vom Stick, das wäre ein 'livetest'.

Die 8400 braucht den 340er und um den zu compilen brauchst du die Sourcen von FreeBSD.
Ansonsten mal nen anderen Monitor/GPU testen. Die 8400 ist wirklich sehr alt und ich hätte ohne nachzuschauen Zweifel, ob sie die hohe Auflösung überhaupt drückt.
Hast du mal Einstellungen am Monitor überprüft und oder den resettet/autoconfig mal ausgelöst? Das Bild sieht gequetscht aus und nicht nach native 4:3, was von inkorrekter Erkennung oder Hz-Zahlen out-of-range kommen kann.
 
Ich habe noch keine Zeit gehabt. Ich bleibe da aber dran. Die 8400GS kann die Auflösung. Hatte ja alles schonmal funktioniert mit einer älteren BSD Version und KDE4. Und den 390-Treiber hatte ich richtig deinstalliert in Form von alles plattmachen FreeBSD nochmal drüberjuckeln geht ja fix. Hatte ich bestimmt 7x gemacht .
 
Hat sich die Konfiguration des Nvidia Treibers bei FreeBSD12 geändert?

Denn ich hatte damals einfach den Nvidia Treiber installiert und in die /boot/loader.conf nvidia_load="YES" eingetragen, mehr nicht. (Ok, das linux_base Pakete noch installiert). Erinnere mich, nichtmal eine xorg.conf erstellt zu haben aber 100% weiss ich das auch nicht mehr.
 
Hat sich die Konfiguration des Nvidia Treibers bei FreeBSD12 geändert?
Ein wenig doch, aber nicht zwischen unterschiedlichen FreeBSD-Versionen, sondern mit unterschiedlichen Nvidia-Treiber-Versionen.
Und nach meiner Erfahrung ist das nicht immer ganz stabil und sinnvolles probieren führt manchmal eher zum Ziel, als langes Lesen.
Also, es muss das Kernel-Modul linux laufen und ich habe auch linux64 gestartet, weil ich einfach dachte, dass wir heute 64Bit haben.
Sodann gibt es nvidia-modeset (was es früher nicht gab) und nvidia.
Die beiden sind alternativ, also entweder Eines, oder das Andere. Ich hatte in einer Konfiguration aber auch schon mal eine kurze Zeit beide laufen.
Sodann können die jeweiligen Module in der /boot/loader.conf oder in der /etc/rc.conf geladen werden. Die /etc/rc.conf wird empfohlen, für all jene Module, die nicht unbedingt zur Bootzeit geladen werden müssen (wie etwa zfs, wenn man davon booten will). Manchmal habe ich die Erfahrung gemacht, dass das nvidia-Modul (oder nvidia-modeset) nicht läuft, wenn es in der /boot/loader.conf gestartet wird. Inweiweit das mit dem linux-Modul zusammen hängt oder ob es andere Gründe hatte, weiß ich nicht mehr, aber es gab dazu auch Beiträge hier.
Ohnehin ist es gescheiter in der /etc/rc.conf aufgehoben. Wenn das aber nicht geht, kann man ja mal rumprobieren.
Die Möglichkeit des Ladens in der /etc/rc.conf ist noch nicht so alt, ich weiß nicht, wann sie realisiert wurde. Vielleicht mit FreeBSD10.
Um es einfacher für den Leser zu machen, zeige ich meinen eigenen Eintrag aus meiner /etc/rc.conf, mit der ich die von mir gewünschten Module lade:
Code:
kld_list="linux linux64 linsysfs linprocfs nvidia-modeset ext2fs fuse sem cd9660_iconv coretemp"
Dies steht nicht alles im Zusammenhang mit nvidia oder Grafik.
 
Hallo allerseits,
Hiermit mein erster Beitrag im Forum :)
Ich habe die gleiche Probleme wie Borsti bei der Installation des 440.31 Treibers auf FreeBSD 12.1
Bisher hatte ich immer neuere Treiber auf FreeBSD installiert, da diese die Oberfläche zum laufen bekommen haben (leider kann ich nicht mehr genau sagen was dir Probleme ich mit den Treibers der Ports hatte)
Jedenfalls habe heute diese Mail gefunden : https://www.mail-archive.com/freebsd-stable@freebsd.org/msg137539.html
Anscheinend braucht der Compiler einen zusätzlichen Pfad um den Treiber kompiliert zu bekommen (
Code:
/usr/src/sys/amd64/include
)
Wohl besteht bei ihm das gleiche Problem.
Werde es heute Abend ausprobieren wenn ich heim komme.
liebe Grüße,
Goldfluss
 
Nun habe ich den NVIDIA 340.107 heruntergeladen und will den installieren.

Mach doch einfach "pkg install nvidia-driver-340". Um vorher zu sehen, was es alles an Packages von nvidia gibt: "pkg search nvidia".
Die Treiber von der Nvidia-Seite würde ich nicht verwenden, weil die einen eigenen Installationsmechanismus haben, an pkg und ports von FreeBSD vorbei. Da könnte es dann irgendwann andere Probleme geben.
Mittlerweile muss man die Linux Libraries sogar separat installieren, was einige hier freuen dürfte.
 
Zurück
Oben