Wenn der Nvidia-Treiber streikt!

Hat man eine aktuelle Nvidia-Grafikkarte, dann ist dieser Artikel nicht interessant. Dieser bezieht sich nur auf ältere Karten, die nicht vom aktuellen Treiber unterstützt werden.

Ja, dazu gibt es schon einen Artikel. Dort habe ich aber ein paar Dinge nicht berücksichtigt, was ich hier nun tun werde. Diese Punkte habe ich auch mit voller Absicht weggelassen, denn in den meisten Fällen funktioniert der Weg problemlos, den ich dort beschrieben habe und ich will niemanden verleiten, etwas zu verschlimmbessern, oder sich unsinnige Arbeit aufzuhalsen.

Das Problem

Es gibt Fälle, in denen man mit der im verlinkten Artikel nicht weiter kommt. Zum Beispiel kann es ja passieren, dass man da zwar einen neuen Kernel drin, aber den Treiber keinem Update unterzogen hat. Dann bootet der PC, aber anstatt des Login-Bildschirms, oder dem Desktop, erscheint einfach nichts. Schwarz wie die Nacht. Vielleicht blinkt da noch ein Cursor. Mehr aber nicht.

Was soll man dann tun? Neuinstallieren? Ach Arch-Geleckt, wir sind hier nicht bei Windows! Das kriegen wir schon wieder auf die Reihe!

Tatsächlich gibt es da sogar ein paar Möglichkeiten, wie man an sein System ran kommt, ohne es neu installieren zu müssen. Einen sehr Schnellen, einen halbwegs Schnellen und einen fast schon Mühevollen. Letzterer hat aber sehr viel Potential und kann auch bei anderen Problemen helfen, die einen direkten Zugriff auf das System unterbinden.

Diese drei Möglichkeiten schauen wir uns jetzt an und dazu gehe ich gleich noch auf ein Problem ein, was manchmal auftritt.

Das „Manchmal“-Problem

Wie mir scheint, kann es in seltenen Fällen dazu kommen, dass Arch, oder sein Kernel, oder der Hamster im Laufrad, oder wer auch immer, nicht versteht, dass er den Nvidia-Treiber laden soll. Wenn dem so ist und man Glück hat, startet ein Standardtreiber. Dann ist die Auflösung mies, alles wirkt langsam und komisch, aber immerhin kann man mit dem System arbeiten. Wenn man Pech hat, schöner, schwarzer Bildschirm.

Die Lösung ist dabei ziemlich simpel, wie ich festgestellt habe. Man muss einfach dem XOrg-Server erklären, was er zu tun hat.

Wer nun fragt, was denn nun wieder ein XOrg-Server ist, dem gebe ich hier eine wirklich sehr knappe Erklärung. Wer mehr dazu wissen will, Wikipedia zum Beispiel hilft da sehr gut und es gibt auch Dutzende andere Seiten, die sich explizit damit befassen. Sollte sich jemand meinen Erguss diesbezüglich ersparen wollen, der kann ihn auch gerne überspringen!

Also. Ein Unix-Betriebssystem, wozu man ja auch Linux zählen kann, ist von Hause aus ein OS mit Kommandozeile. Sprich, der Einsatz einer grafischen Benutzeroberfläche ist da gar nicht eingebaut. Im Prinzip ist es nichts anderes, als damals bei Windows. Da gab es MS-DOS und wenn man eine grafische Oberfläche wollte, dann musste man Windows starten. Hier ist es genaugenommen das Gleiche.

Kleine Anekdote. Das AmigaOS zum Beispiel ist da anders! Das startet immer eine grafische Oberfläche! Aber das ist ein ganz anderes Thema.

Okay. Nun könnte die Frage aufkommen, warum wird denn so etwas heute noch betrieben? Wer arbeitet denn ohne grafische Oberfläche?

Tja, sehr viele! So ziemlich alle Server verwenden keine grafische Oberfläche. Warum auch? Frisst nur unnütz Ressourcen! Auch viele Anwender vom Raspberry Pi und seiner Kollegen verzichten auf die grafische Oberfläche. Wenn da ohnehin kein Monitor dran angeschlossen ist, warum dann eine grafische Oberfläche starten? Macht ja irgendwo keinen Sinn.

Gut. Aber wenn man nur den XOrg-Server startet, dann hat man nicht wirklich viel davon. Klar, man kann direkt damit auch noch Anwendungen starten. Die werden dann auch angezeigt, aber in der Regel kann man sie weder verschieben, vergrössern, oder gar schliessen. Dafür ist der XOrg-Server nämlich überhaupt nicht gedacht! Wenn man Rahmen, Schaltflächen und das alles will, dann braucht man noch einen Window-Manager. In meinem Beispiel ist das Cinnamon. Wobei ich auch sagen muss, mittlerweile sind viele dieser Manager so gross und ausführlich (Taskleiste, Icons auf dem Desktop usw.), dass es sogenannte Desktop-Enviroments (DE) sind. Also eine komplette Sammlung abgestimmter Tools in einem Paket.

Jetzt könnte die Frage aufkommen, warum man denn diesen Schwachsinn braucht? Eine Oberfläche reicht doch!

Auch hier ist die Antwort wieder einfach. Man hat die Wahl! Ich zum Beispiel habe damals, auf meinem AMD Sempron, wenn ich FlightGear spielen wollte so viele Ressourcen wie möglich schonen wollen, damit ich auch genug FPS habe. Cinnamon hätte von dem Ding schon so viel Leistung gefressen, dass die Framerate mit Sicherheit gesunken wäre. Also habe ich für solche Fälle Fluxbox eingesetzt. Sieht nicht toll aus, aber funktioniert und spart echt viel Leistung.

Kurz gesagt:

Arch -> XOrg-Server -> Window-Manager

Damit hat man dann seine grafische Oberfläche. Mag komisch klingen, hat aber durchaus seinen Sinn. Auf Wayland gehe ich dann hier mal nicht ein, damit kann ich mich irgendwie nicht so wirklich anfreunden.

Weiter im Text, ist ja doch wieder länger geworden, als ich gewollt habe.

Wie erklärt man nun dem XOrg-Server, dass er einen Nvidia-Treiber laden soll, obwohl er das so gar nicht erkannt hat?

Früher, in der guten alten Zeit, wo der Groschen noch 10 Pf Wert war, da benutzte man eine einzelne Datei, um den XOrg-server zu konfigurieren. Die xorg.conf Datei. Die konnte aber gross und unübersichtlich werden, so dass die darin aufgeführten Sektionen mittlerweile in Einzeldateien untergebracht worden sind. In den meisten Fällen braucht man das aber gar nicht. Auf allen meinen Geräten habe ich keine extre Konfiguration für den XOrg-Server. Der macht seinen Job ganz von alleine.

Tut er das nicht, muss man ihm auf die Sprünge helfen und in dem hier vorliegenden Fall legt man dafür eine Datei an.

sudo nano /etc/X11/xorg.conf.de/20-nvidia.conf

Wobei es meiner Meinung nach hier gar nicht so sehr auf den Namen ankommt. Beim Start rennt der XOrg-Server einfach durch das Verzeichnis und verarbeitet alles mit .conf am Ende.

In die Datei kommt nun folgendes:

Section "Files"
  ModulePath   "/usr/lib64/nvidia/xorg"
  ModulePath   "/usr/lib64/xorg/modules"
EndSection

Section "Device"
  Identifier "Nvidia Card"
  Driver "nvidia"
  VendorName "NVIDIA Corporation"
EndSection

Speichern, neu starten und unter Umständen hat sich das Problem damit gelöst. Es kann meiner Meinung auch nicht schaden, wenn man die Datei prophylaktisch anlegt. Ich wüsste zumindest mal nicht, dass man damit etwas kaputt macht. Bei dem neusten Treiber ist das aber dann doch unnötig.

Die schnelle Methode (Tastenkombination)

Man sitzt also da an seinem PC und der zeigt einem die schwarze Schulter. Man kann nichts eingeben und damit auch nichts reparieren. Doch Linux ist nicht ganz so statisch, wie man das vielleicht annehmen könnte!

Hat sich zum Beispiel mal jemand gefragt, wie ein Multi-User/Multitasking OS eigentlich noch funktioniert, wenn ein Programm die ganze Konsole beansprucht? Nano zum Beispiel. Ein für Konsole/Terminal entwickelter Editor. Wenn der läuft, wie soll man denn dann noch ein zweites Programm starten? Wie soll sich da noch ein anderer Benutzer anmelden?

Linux (eigentlich UNIX im allgemeinen), macht das ganz simpel. Man hat mehr, als nur eine Konsole! Zwischen denen kann man munter hin und her hüpfen und in jeder ein eigenes Programm, oder einen anderen Benutzer haben!

Der Trick dahinter ist, man muss auch wissen, wie man auf die zugreifen kann. Die sind nämlich IMMER da, auch wenn eine grafische Oberfläche läuft!

Hier gibt es eine Tastenkombination, die eigentlich nie wirklich irgendwo erwähnt wird. Glaubt mir, in meinen ersten Schritten unter Linux hat es mich oft wahnsinnig gemacht, dass ich da eine Tastenkombination benutzt habe und die hat mich anstatt zum Ziel in eine Konsole geführt und ich hatte einfach keinen Plan, wie ich wieder in die grafische Oberfläche kommen sollte. Oft führte das zu einem ungewollten Neustart.

STRG+ATL+F1-6

Das ist die ultra geheime, oder einfach nur vernachlässigte Tastenkombination. Damit kommt man ganz bequem in sechs verschiedene Konsolen.

STRG-ALT-F7

Führt in den meisten Fällen dann zurück zur grafischen Oberfläche. Wer will, kann es jetzt sofort (insofern er gerade Linux benutzt) ausprobieren.

Nur, wie soll uns das nun helfen?

Ganz einfach. Mal wieder. Nur, weil die grafische Benutzeroberfläche klemmt, ist der Rechner noch lange nicht lahmgelegt! Nein, die Konsolen sind in den meisten Fällen noch voll betriebsbereit, man muss sie nur anspringen.

Arch nutzt die erste Konsole, also STRG-ALT-F1 zum booten und zum starten vom XOrg-Server. Die ist also blockiert. Gentoo macht das anders, da kann man auch diese Konsole verwenden. Bunsenlabs, so glaube ich zumindest, hat die grafische Oberfläche sogar auf dieser Konsole liegen. Da kommt man dann also nicht mit F7 zur GUI, sondern mit F1. Oder war es Mint? Ist auch egal. Wollte es nur erwähnen, dass es bei verschiedenen Distributionen Abweichungen geben kann. Da es hier aber um Arch geht, nutzen wir also die zweite Konsole.

STRG-ALT-F2

Wird man hier zum Login aufgefordert, was Meistens der Fall sein sollte, dann loggt man sich einfach in die Konsole ein und führt dann die Schritte in dem anderen Artikel aus. Wer will, kann zur Sicherheit auch noch die 20-nvidia.conf Datei dabei anlegen.

Das sollte dann eigentlich schon reichen.

sudo reboot

Der Rechner startet neu und ich gehe davon aus, es läuft wieder alles! Man könnte auch einfach nur den XOrg-Server neu starten, da man aber ja nicht damit arbeiten konnte, geht also auch nichts verloren, wenn man den Rechner einfach neustartet.

Die halbwegs schnelle Methode (ssh)

SSH ist dein Freund! Seit ich die Fähigkeiten dieses kleinen Helfers entdeckt habe, läuft bei mir kein Linux mehr ohne! Da das Tool auch so gar nichts mit einer grafischen Oberfläche zu tun hat, interessiert es sich in aller Regel auch nicht für die Probleme, welche die GUI gerade quälen. Das heisst, man kann sich von einem anderen Rechner, ja sogar von seinem Smartphone, oder seinem Tablett mit der entsprechenden App auf dem Rechner einloggen. Sogar die PSP kann das!

Hier gibt es allerdings ein paar Dinge, die man beachten muss:

  • Der SSH-Dienst muss auf dem Rechner laufen!
  • Man muss die IP, oder den Namen des Rechners kennen

Leider, leider muss ich gerade feststellen, dass ich zu SSH selbst noch gar keinen Artikel geschrieben habe! Also kann ich jetzt hier keinen verlinken. Wer das hier aber liest und das nicht gerade um den 12.05.2021 ist, der kann mal suchen, ob ich mittlerweile einen entsprechenden Artikel geschrieben habe. Das steht jetzt auf jeden Fall auf meiner ToDo-Liste!

Okay. Prinzipiell ist es das gleiche Spiel, wie mit der Tastenkombination. Man loggt sich mittels SSH auf dem PC ein und führt dann die Schritte aus, wie sie auch bei der Tastenkombination beschrieben sind. Fertig.

Der fast schon mühevolle Weg (Bootdisc)

Einst hat man ja irgendwie sein Arch auf dem PC installiert. Ich schätze mal, in der heutigen Zeit am ehesten mit einem USB-Stick. Aber natürlich geht das auch mit eine CD/DVD. Spielt keine Rolle. Auf jeden Fall ist jetzt wieder dieses Installationsmedium gefragt!

Wenn also alle Stricke reissen, man weder mit der Tastenkombination in eine Konsole, oder mit SSH auf den PC kommt, dann bootet man wieder von dem Installationsmedium. Wer keines mehr hat, tja, der muss sich irgendwie wieder eines erstellen. Das ist leider so, kann ich nicht ändern.

Wenn von dem Bootmedium gebootet worden ist, muss man sich damit in das bestehende System auf der Festplatte einloggen. Dazu sind unter Arch nur wenige Schritte nötig!

1. Die Festplatte einbinden

Hier kann ich nur eine verallgemeinerte Erklärung abgeben. Das liegt daran, dass nicht jeder die Festplatte gleich partitioniert hat, oder es gleich mehrere Festplatten im Gerät gibt.

Wer aber meiner Anleitung gefolgt ist und nur eine Festplatte im Rechner hat, für den sind die Partitionen sda3 und sda1 notwendig. Eigentlich sogar nur die sda3.

Man kann sich anzeigen lassen, welche Festplatten vorhanden sind.

ls -l /dev/sd*

In der Ausgabe tauchen dann unter Umständen mehrere Festplatten auf. Alles mit sda wäre zum Beispiel die erste erkannte Festplatte. Weiter ginge es mit sdb usw. Die Zahl dahinter zeigt die Partition an. Nach meiner Anleitung wäre das dann:

sda1 -> /boot
sda2 -> swap
sda3 -> /

Das einbinden geht einfach und das hat der, der meiner Anleitung gefolgt ist, oder der offizielle Installationsanleitung, schon gemacht. Eigentlich hat er alle hier notwendigen Schritte bereits mindestens einmal durchgeführt. Es dürfte also nicht so schwierig werden.

mount /dev/sda3 /mnt
mount /dev/sda1 /mnt/boot

Tut gar nicht weh! Wer andere Festplatten und Partitionen hat, der muss die Zeilen natürlich entsprechend abändern.

2. Das fehlerhafte System betreten

So. Dann loggen wir uns mal in das System ein. Ja, unter Linux geht das auch im laufenden betrieb!

arch-chroot /mnt

Peng. Wenn alles geklappt hat, dann sind wir jetzt im System mit dem Problem und nun muss man nur noch die Schritte befolgen, die schon bei der Tastenkombination genannt wurden.

Nun ja, nicht ganz! Bei den beiden anderen Methoden war man als Benutzer angemeldet. Hier sind wir jedoch Root! Klar, heisst ja arch-chroot und nicht arch-chuser. Man kann also das sudo weglassen, man ist ja schon der SuperUser. Ansonsten ist es der gleiche Weg!

Hat man also das Paket wieder mit pacman -U installiert und gegebenenfalls die Datei 20-nvidia.conf erstellt, ist man fertig. Hier sollte man aber jetzt nicht einfach neustarten!

Der korrekte weg ist, erst die Umgebung wieder verlassen, die Festplatten wieder auszuhängen und dann neuzustarten. Das sieht dann so aus:

exit
umount /mnt/boot
umount /mnt/
reboot

Fertig. Das sollte gereicht haben!

Anmerkung

Dieser Weg ist nicht nur dann gut, wenn der Nvidia-Treiber klemmt! Auf diese Weise kann man wirklich viele Probleme im System beheben! Wenn wirklich nichts mehr geht, auf diesem Weg kommt man eigentlich immer wieder in das beschädigte System und kann dort die Probleme beheben. Klar, es mag Fälle geben, da hat man einfach so viel zerstört, da kann man eigentlich nichts mehr retten. Beziehungsweise, der Reparaturaufwand wäre viel höher, als eine neue Installation. Aber ansonsten kann man auf diesem Weg wirklich viel wieder begradigen. Oftmals, so habe ich zumindest die Erfahrung gemacht, kann schon ein Systemupdate dazu führen, dass das angeschossene OS wieder normal bootet!

Schreib einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.