X Server startet nach Neuinstallation nicht mehr

R

ralli

Guest
Ich habe FreeBSD 11 neu installiert. Als GraKa kommt meine Nvidia Geforce 9600 GT zum Einsatz. Ich habe den Nvidia-driver-340 aus den Ports installiert. Mit nvidia-xconfig habe ich eine neue xorg.conf installiert. Jetzt startet X nicht mehr mit der Fehlermeldung, das eine ABI Funktion nicht mehr vom X Server unterstützt wird. Der Bildschirm bleibt schwarz. Dann habe ich die xorg.conf gelöscht und kann jetzt arbeiten, aber nur mit einer miserablen Auflösung von 1024x768. Ich vermute, das eine neue Xserver Version zum Einsatz kommt. Ein neuerer Nvidia Treiber dürfte allerdings das Problem lösen, unterstützt aber meine derzeitige Graka nicht mehr. Was muß ich ändern, vorher lief ja auch alles zufriedenstellend und meine Hardware hat sich ja nicht geändert.
 
Hat leider nicht geklappt, er bricht mit derselben Fehlermeldung ab:

This server has a video driver ABI version of 20.0 that is not supported by this NVIDIA driver. Please check

http://www.nvidia.com/ for driver updates or downgrade to an X server with a supported driver ABI.

NVIDIA: Use the -ignoreABI option to override this check.

Wo und ich welcher Datei muß ich die -inoreABI Option eintragen und wie genau?

Ich habe schon über eine Stunde gegoogelt, bin aber nicht fündig geworden.
 
Hallo @Kamikaze, nein habe ich noch nicht, kenn mich damit auch nicht aus. Muß das Modul extra installiert werden, oder nur aktiviert?
 
Ich habe mein System vorletztes WE auch neu aufgesetzt mit FreeBSD 11 aufgrund komplett neuer Hardware bis auf Grafik und hab wie immer den nvidia-driver-340 mit meiner Graka (GT 740) seitdem ohne Probleme mit 2 Monitoren laufen.
Ich gehe mal davon aus, dass System und X aktuell sind. Was mir jetzt so spontan noch einfällt: Hast du den 340 mit oder ohne Linux-Unterstützung? Bei mir ohne, da ich den ganzen Linuxkram nicht brauche.
 
Im einfachsten Fall kann der Schalter -ignoreABI dem startx mitgegeben werden:
Code:
startx -- -ignoreABI
Bei Verwendung von KDM etwa für KDE kann der Schalter in die kdmrc hinein editiert werden:
Code:
ServerCmd=/usr/bin/X -br -novtswitch -quiet -ignoreABI
Bei KDE4x wohnt die kdmrc dort: /usr/local/share/config/kdm/kdmrc

Damals, 2007 gab es das nämlich auch schon mal, da habe ich mich noch dran erinnert:
20070913:
AFFECTS: users of x11/xorg, x11/nvidia-driver
AUTHOR: flz@FreeBSD.org

X.Org ports were updated to 7.3. Since we're now using the modular
build, the upgrade is pretty much painless. If you're using the
x11/xorg meta-port, upgrade should be as easy as:

# portupgrade -R xorg

Users of nvidia-driver will have to make sure Composite extension is
turned off and start X with the following command:

$ startx -- -ignoreABI

The -ignoreABI option is an X option. If you're using gdm, kdm or
xdm, you will have to modify your configuration file so that X.Org
starts with this option.

An updated nvidia-driver should be released soon.
 
Zumindest funktioniert jetzt startx -ignoreABI mit geladenen normalen Nvidia Modul, aber ohne xorg.conf. Allerdings beträgt die Auflösung nur 1024x768. Schnell genug ist es, Videos ruckeln nicht. Aber irgendwie scheint da noch was faul zu sein. Installiert ist der Treiber 340xx.
 
Ich habe jetzt bei mir nochmal rumprobiert und mal von nvidia-xconfig eine config erstellen lassen; diese funktioniert auch ohne jede Fehlermeldung. Was ich nicht ausprobiert habe, ist den 340 mit pkg zu installieren. Bei der config in den ports habe ich alles rausgenommen. Vllt wäre es noch einen Versuch in der Richtung wert...
 
Hat leider nicht geklappt, er bricht mit derselben Fehlermeldung ab:

This server has a video driver ABI version of 20.0 that is not supported by this NVIDIA driver. Please check

http://www.nvidia.com/ for driver updates or downgrade to an X server with a supported driver ABI.

NVIDIA: Use the -ignoreABI option to override this check.

Wo und ich welcher Datei muß ich die -inoreABI Option eintragen und wie genau?

Ich habe schon über eine Stunde gegoogelt, bin aber nicht fündig geworden.

Das hört sich aber stark nach Versions-mismatch an.
Hast du die richtigen Ports zu deiner FreeBSD-Version genommen und hast du den Xserver mit der gleichen Ports-Version gebaut, mit der dann der Treiber und das Zubehör gebaut wurden?

Die Installationsmeldungen erklären normalerweise auch, welche Module geladen werden sollten. Bei meiner Karte musste ich von #nvidia-modeset_load="YES" zu nvidia_load="YES" ändern, damit es irgendwann mit einem neueren Treiber noch funktionierte.
Ich benutze immer noch eine xorg.conf in /etc/X11 und dagegen spricht gar nichts. Ich lasse sie auch mit Xorg -- configure erzeugen, bzw mit dem nvidia-Tool. Dann habe ich erst mal ein Grundgerüst. Daraus entferne ich ziemlich viel, füge hinzu, was mir wichtig ist. Ich füge das mal hier ein:

Man denke sich code-Blöcke, ich finde mich auf dieser Tastatur nicht zurecht und keine eckige Klammer:
Section "ServerLayout"
Identifier "X.org Configured"
Screen 0 "Screen0" 0 0
Screen 1 "Screen1" RightOf "Screen0"
InputDevice "Mouse0" "CorePointer"
InputDevice "Keyboard0" "CoreKeyboard"
EndSection


Section "ServerFlags"
Option "AutoAddDevices" "False"
Option "AllowEmptyInput" "Off"
EndSection

Section "InputDevice"
Identifier "Keyboard0"
Driver "kbd"
Option "XkbModel" "pc105"
Option "XkbLayout" "de"
Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection

Section "InputDevice"
Identifier "Mouse0"
Driver "mouse"
Option "Protocol" "auto"
Option "Device" "/dev/sysmouse"
Option "ZAxisMapping" "4 5 6 7"
EndSection

Section "Monitor"
Identifier "Monitor0"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection

Section "Monitor"
Identifier "Monitor1"
VendorName "Monitor Vendor"
ModelName "Monitor Model"
EndSection

Section "Device"
Identifier "Card0"
Driver "nvidia"
BusID "PCI:1:0:0"
EndSection

Section "Device"

### Available Driver options are:-
### Values: <i>: integer, <f>: float, <bool>: "True"/"False",
### <string>: "String", <freq>: "<f> Hz/kHz/MHz",
### <percent>: "<f>%"
### [arg]: arg optional
Identifier "Card1"
Driver "nvidia"
BusID "PCI:1:0:0"
EndSection

Section "Screen"
Identifier "Screen0"
Device "Card0"
Monitor "Monitor0"
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection

Section "Screen"
Identifier "Screen1"
Device "Card1"
Monitor "Monitor1"
SubSection "Display"
Viewport 0 0
Depth 24
EndSubSection
EndSection
code-ende

Die beiden screen-Sektionen wollte ich immer mal noch für ein Experiment nutzen und habe sie deshalb drinnen gelassen.
Für mich ist die xorg.conf einfacher, als mit vielen kleinen Dateien zu arbeiten, aber das ist grundsätzlich egal und alles sollte auch mit der neueren Methode gelingen. Mir ist wichtig, meine zusätzlichen Optionen zu haben und das Keyboard präziser zu bestimmen, dann teile ich die Monitore den Grafik-Karten, bzw den Ausgängen zu. Das will ich auch so haben, um flexibler zu bleiben, wenn sich da mal schnell was ändern muss.
 
Zunächst mal danke ich Euch allen für Eure Unterstützung. dieses Howto https://forums.freebsd.org/threads/52311/ funktioniert bei mir nicht. Habe danach mal versuchsweise mit Xorg -configure eine frische xorg.conf erstellt und nach /etc/X11 kopiert. Dort stand allerdings vesa drin, damit funktioniert es. Diese xorg.conf ist der von @pit234a sehr ähnlich. Tausche ich vesa gegen nvidia aus, funktioniert es nicht. Mit dem nvidia_load="YES" in der /boot/loader.conf und der xorg.conf mit vesa funktioniert es und ist auch nicht langsam. Allerdings ist, wie ich schon geschrieben habe, die Auflösung auf 1024x768 beschränkt. Natürlich habe ich auch startx mit dem Schalter -ignoreABI ausprobiert, das geht garnicht. Nun nach reiflicher Überlegung denke ich, das ich xorg nicht mehr als Binärpaket installieren darf, sondern selber bauen muß, damit Inkompatibiliäten mit dem Nvidia-Driver-340 aus den Ports vermieden werden. Na ja, ich bin arbeitsfähig und Viedeos ruckeln nicht und Fenster beim Verschieben auch nicht. Mit dem Selbstbau von Paketen fange ich erst an, wenn ich einen neuen stärkeren Rechner bekomme, alles andere macht keinen Sinn. Bei kleineren Sachen geht der Eigenbau aus den Ports, aber bei größeren Sachen dauert es mir dann doch zu lange, dafür habe ich keine Geduld.
 
Du braucht nvidia-driver-340 in Version 340.102, aus den Paketen bekommst du wahrscheinlich noch die ältere 340.101. Die ist mit dem letztens aktualisierten X.org aber nicht kompatibel. Da der Nvidia-Treiber praktisch keine Abhängigkeiten hat, kann man ihn sich ohne viel Aufwand selbst bauen. Du brauchst die Systemsourcen in /usr/src und aktuelle Ports in /usr/ports:
  • cd /usr/ports/x11/nvidia-driver-340
  • make
  • make deinstall reinstall clean
  • pkg lock nvidia-driver-340
Das sollte auch auf einem Pentium 4 nur ein paar Minuten dauern. Sobald die aktuelle Version in den Paketen angekommen ist, musst du das Paket wieder entsperren, um wieder Updates auf es zu bekommen:
  • pkg unlock nvidia-driver-340
Ich habe schmerzhaft lernen müssen, dass man nach einem Update des Nvidia-Treibers rebooten sollte. Das Kernelmodul einfach neuzuladen führt zumindest bei mir eher früher als später zu einem Absturz des ganzen Systems.
 
Danke @Yamagi, in meinen Ports ist noch die Version 340.93. Woher muß ich mir den von Dir empfohlenen Treiber 340.102 besorgen? Direkt von der Nvidia Homepage? Oder die Ports aktualisieren? Habe ich auch noch nie gemacht. Und wenn ich dann den aktuellen Treiber habe, gehe ich nach Deinen Angaben vor und installier anschließend den Treiber 340.102? Oder wird der, wenn ich Deine Schritte abarbeite, dann automatisch aktualisiert?
 
Jau, du musst die Ports aktualisieren: http://www.freshports.org/x11/nvidia-driver-340/ Wenn du das gemacht hast, kannst du wie von mir beschrieben vorgehen und bekommst dadurch die aktuelle Version installiert. Hinterher würde ich wie gesagt einmal rebooten. Wie du aktuelle Ports bekommst, hängt davon ab, wie du sie ursprünglich erstellt hast. Sind sie per portsnap geholt worden, reicht idealerweise:

Code:
portsnap fetch update

Hast du sie anders geholt oder steigt portsnap mit Fehlermeldung aus, würde ich neu anfangen:

Code:
rm -Rf /usr/ports /var/db/portsnap # Alten Kram löschen
mkdir /var/db/portsnap /usr/ports
portsnap fetch extract # Holt die Ports und entpackt sie nach /usr/ports

Später kannst du sie dann einfach mit

Code:
portsnap fetch update

aktualisieren.
 
Danke, ich bin schon dabei. Wenn das nicht funktioniert, installiere ich neu und aktualisiere als erstes die Ports nach der Grundinstallation. Dann installier ich das fertige xorg Paket und dann bau ich den Nvidia Treiber aus den aktualisierten Ports. So müßte es ja richtig sein, oder?
 
@Yamagi, es hat alles nach Deinen Vorgaben funktioniert.:D Vielen Dank nochmals. In Zukunft werde ich nach einer Grundinstallation immer zuerst die Ports aktualisieren.
 
Sie am besten erst gar nicht über bsdinstall installieren. Man müsste sie eh löschen, da portsnap sonst nicht funktioniert.
 
Ich habe noch eine Frage. Wenn ich zukünftig portsnap fetch und danach portsnap extract verwende, bekomme ich dann immer den derzeit aktuellsten Schnappschuß des Portstree oder muß ich dann trotzdem noch portsnap update verwenden?
 
Du musst nur noch 'portsnap fetch update' verwenden. fetch holt die Daten vom Server, und update schreibt sie nach /usr/ports. Ein 'portsnap fetch extract' braucht man nur, um /usr/ports beim ersten Mal zu erstellen und wenn es zu weit hinter den Server zurückgefallen ist, weil man zu lange keine Aktualisierungen eingespielt hat.
 
Du musst nur noch 'portsnap fetch update' verwenden. fetch holt die Daten vom Server, und update schreibt sie nach /usr/ports. Ein 'portsnap fetch extract' braucht man nur, um /usr/ports beim ersten Mal zu erstellen und wenn es zu weit hinter den Server zurückgefallen ist, weil man zu lange keine Aktualisierungen eingespielt hat.
Danke, habe das gerade meiner Dokumentation für FreeBSD Installationen hinzugefügt. Aber ist natürlich auch leicht zu merken.
 
nebenbei hat der von mir verwendete nvidia Treiber derzeit auch ein Problem und das wird mit der nächsten Version behoben ( die wohl schon in den Ports vorhanden ist).
Auch der Xserver wird wohl demnächst wieder eine neue Version bekommen.
Bei mir ist die Einschränkung vernachlässigbar, so dass einfach abwarte und nicht erst noch aus den Ports baue.

Es ist aber extrem wichtig, immer aktuelle Versionen der Ports zu haben. Das wird umso wichtiger, desto mehr man aus den Ports bauen will.
Wenn es mal einen Versions-Mismatch zwischen Ports und Paketen gibt, der eine Vielzahl an Bauten aus den Ports bedeuten würde, dann warte ich auch lieber bis die Pakete so weit sind. Meist kann ich das abwarten, ich brauche eigentlich ja überhaupt keine System-Updates.
Als ich früher noch ausschließlich Ports benutzte, da lernte ich sehr schnell, was es bedeuten kann, mit veralteten Ports zu arbeiten. Das konnte schon mal locker bedeuten, dass es nach vielen Tagen Rechnerei an einer Stelle haperte und die Konsequenz der nächste Neubau der soeben installierten SW war.
 
Zurück
Oben