Vergangenen Sonntag hatte ich beim Kompilieren eines Mini-Projekts, das ich gerne als Open Source veröffentlichen möchte (sowas möchte ich schon so lange, und irgendwie kommt’s nicht dazu… *seufz*) ein Problem. Eine Programm-Bibliothek (/usr/lib/libQtDBus.so) wurde nicht gefunden. Ich habe es auf die aktuellen Umstellungen bei Debian geschoben, die ermöglichen sollen, Programme für verschiedene Systeme auf einem Rechner zu installieren („Multiarch“), durch die die Bibliotheken an einem anderen Ort installiert werden.
Da ich meine Probleme dem Gemisch aus Testing (der Debian-Version, in dem recht frische, aber schon wenigstens ein paar Tage getestete Software landet) und Unstable (wo jeden Tag die frischesten Programm-Pakete landen) auf meinem Rechner zugeschrieben habe, habe ich komplett auf Unstable aktualisiert. Die nächsten drei Abende habe ich mit Reparaturen verbracht. Eigentlich hatte ich einem Freund noch eine Mail zu einem Gedankenaustausch schreiben wollen. Aber das ging erstmal nicht. Er hat’s verstanden, er meinte, er hatte solchen Ärger auch mal, wegen eines Grafiktreibers.
Die Installation der vielen neuen Pakete war schon nicht ganz rund verlaufen. Wenn ich mich richtig erinnere, war zwischendurch die Festplatte vollgelaufen (meine SSD mit Linux und Windows drauf hat nicht allzuviel überschüssigen Platz), und es wurden auch nicht alle Pakete in einem Rutsch durchinstalliert. Aber schließlich schien es geklappt zu haben – bis zum nächsten Reboot.
Grub 2 ist ins Schleudern gekommen – symbol not found: ‚grub_divmod64_full‘ – und weigerte sich, irgendein Betriebssystem zu starten. Zum Glück war letztens in einer c’t eine Ubuntu-DVD, und ebenfalls in der c’t gab es eine Anleitung zur Wiederherstellung von Grub: Diese FAQ gibt’s im Netz und auf Papier. (Auf Papier ist natürlich immer praktischer, wenn man gerade vor einem ziemlich toten Rechner sitzt.) Nachdem ich von der DVD gebootet hatte, musste ich erstmal die WLAN-Verbindung in Gang bringen, klar. Ein Terminal erreicht man, indem man auf das Gnome-Symbol links oben klickt, „terminal“ eingibt und das Programm auswählt. Da ein Terminal mit Root-Rechten gebraucht wird, ist der erste Befehl „sudo gnome-terminal“.
Leider scheint der Tipp der c’t nicht die ganze Wahrheit zu sein. Zum Ziel gekommen bin ich erst mit:
mount /dev/sda5 /mnt mount -t proc none /mnt/proc mount -o bind /dev /mnt/dev mount -o bind /dev/pts /mnt/dev/pts mount -o bind /sys /mnt/sys chroot /mnt
Doch der Vorrat an bösen Überraschungen war noch nicht aufgebraucht. Grub lässt sich nicht auf die stabile Version „downgraden“, die Datei /usr/share/grub/default/grub wird vermisst. Ich musste meinen ganzen Mut zusammennehmen, Grub deinstalliert (apt-get remove grub-pc) und konnte dann die alte Version installieren (apt-get -t stable install grub-pc/stable).
Nachdem das Booten endlich klappte… lief das grafische System nicht. Anfangs gab es nur einen schwarzen Bildschirm, der nicht auf die Tastatur reagierte. Nachdem ich in der Reperatur-Konsole hin- und herinstalliert hatte, ging es ein wenig weiter – aber nicht viel. Mal stürzte der X Server mit einem Segmentation Fault ab, mal startete er sich neu, mal startete sich schon der Anmelde-Manager kdm neu. Häufig konnte ich KDE genau so lang benutzen, bis ich auf den Knopf mit dem „K“, den Start-Knopf halt – wie heißt der bloß? – gedrückt habe. Beim Aufspielen und Löschen von Paketen hab ich’s zwischendurch sogar geschafft, den Grub-Fehler nochmal zu bekommen. Nehmen wir’s positiv: Dieses Problem ist also reproduzierbar.
Nachdem ich zwei Abende nicht weitergekommen war, habe ich am Dienstag meine Mittagspause mit Denken und Googeln verbracht und mir alle Ideen aufgeschrieben. Meine Hoffnungen gesetzt habe ich darauf, dass schlicht die Festplatte voll sein könnte. Root betrifft das nicht so, für den sind noch ein paar Prozent Plattenplatz extra reserviert, aber sobald ich mich mit meinem Benutzer einlogge und irgendwas geschrieben werden soll, was weiß ich, ein Log, eine Swap-Datei, was auch immer, bricht’s zusammen.
Leider war’s das nicht. Die Festplatte ist zwar nicht sehr groß, aber es sind 10 GB frei. Ich habe meine Ideen dann der Reihe nach abgearbeitet und die Lösung brachte… der Grafiktreiber. Der Treiber für Nvidia-Karten vom Hersteller läuft auf meiner GeForce GTX 460 nicht zuverlässig. Ich bin mir zwar ziemlich sicher, dass ich das an den Abenden zuvor schon mal probiert hatte, aber egal. Leider läuft der Open-Source-Treiber mit dem schönen Namen nouveau auch nicht so, wie man sich das wünschen würde: Ich kriege gerade beim Schreiben dieses Beitrags immer mal wieder die Buchstaben falsch angezeigt.
Ich habe dann die Mail an meinen Freund schreiben können. Mit der Pointe, dass es auch bei mir – wie bei ihm – letztlich der Grafiktreiber gewesen ist.
Das Kompilier-Problem war übrigens noch immer nicht gelöst. Ich habe dann herausgefunden, dass man die Überreste des Kompilierens auf dem alten System entfernen muss. Der Rechner hat sich gemerkt, wo die Bibliotheken liegen, und sucht schlicht nicht nochmal danach. Folgende Befehle haben das Problem gelöst (Verwendung auf eigene Gefahr!):
rm `find . -iname "*CMakeCache*"`
rm -rf `find . -iname "*CMakeTmp*"`
Damit war die ganze Update-Aktion komplett überflüssig gewesen. Scheiße.
Nachtrag: Der Grafikfehler ist lokalisiert. Auf meinem System, das ja nun schon etwa 14 Jahre alt ist, war in der Datei /etc/X11/xorg.conf die Zeile
FontPath "unix/:7100"
eingetragen. Wenn man sie entfernt, läuft auch der original Nvidia-Treiber wieder. Mit dieser Information ausgerüstet findet sich dann auch ein Debian-Fehlereintrag: 661073. Und Blog Schreiben macht ohne Grafik-Fehler auch mehr Spaß.