Bei dem Notebook eines Kunden funktioniert die graphische Ausgabe (inzwischen „Wayland“) nicht mehr richtig auf einem alten Notebook, einem „Acer Aspire 7003“.
Der Rechner soll aber am Leben erhalten werden und ich solle es mir ansehen.
Fakt ist: Die Lösung ist offenbar nicht so einfach möglich, e hilft auch nicht, einen älteren Kernel zu starten (was bei ähnlichen Notebooks dieser Generation noch half): Kernel 5.10 geht nicht; Kernel 4.19 und 4.9 gehen nicht; Kernel 3.2 ginge – aber es gibt dann „systemd“-Problematiken, verschiedene Dienste können nicht mehr gestartet werden. Auch Linux hat damit zu kämpfen, daß bestimmte Dinge nicht mehr gehen, die einmal gingen.
„nvidia-detect“ gibt aus:
Detected NVIDIA GPUs:
00:05.0 VGA compatible controller [0300]: NVIDIA Corporation C51 [GeForce Go 6100] [10de:0247] (rev a2)Checking card: NVIDIA Corporation C51 [GeForce Go 6100] (rev a2)
Uh oh. Your card is only supported by the 304 legacy drivers series, which is not in any current Debian suite.
Nach einiger Recherche war klar, es muß an dem „nouveau“-Treiber liegen und dieser ist auch die einzige richtige Lösung, denn der „Framebuffer“-Treiber schafft es nicht, die hohe Auflösung 1440×900 über einen „VESA-Modus“ zu realisieren.
Nachdem viele meiner Kollegen so auf „KI“ schwören, habe ich einmal „claude“ ausprobiert.
Kurze Vorwegnahme: So einfach ist es nicht.
Nach einigen Prompts wurde mir ein Patch ausgegeben mit zwei Zeilen, die in
- /drivers/gpu/drm/nouveau/dispnv04/dac.c
geändert werden müßten.
Das ist schon stark: Die Prompts sagten „es gibt ein Problem in dem „nouveau“-Treiber, der über Jahre bestand, jetzt aber offenbar behoben wurde, bitte prüfe den Source-Code des Linux-Kernels, wo könnte der Fehler liegen?
Und es kommen zwei Code-Zeilen. Das spart dem Kunden etwa drei Stunde Gewühle von mir im C-Code und in den Patches.
Dann also das Problem, wie den Kernel patchen?
Die direkte Ausgabe (ein .sh-Script) der KI lief nicht durch und war letztlich komplett irreführend, denn man sollte in meinen Augen die Debian-Mechanismen verwenden, um den Kernel neu zu kompilieren mit dem Patch.
Die Lösungen, die ich sonst recherchierte, funktionierten auch nicht, weil die Signatur des Kernels auch noch aus der .config-Datei genommen werden muß.
Also das mußte ich letztlich komplett selbst recherchieren, ein Verlassen auf die KI hilft hier nicht weiter.
Dann nach dem (händischen Einfügen der Patches) schließlich konnte ich kompilieren, aber es kam ein Fehler: Die Struktur war nicht definiert, auf die in einem Patch Bezug genommen wurde. Spätestens hier würde ein Nicht-C-Programmierer aufgeben müssen, denn dazu muß man wissen, was eine Struktur ist und schauen, wo sie definiert wurde.
Dann kam noch der Fehler „warning: this ‘if’ clause does not guard… [-Wmisleading-indentation]“, hier fehlte konkret die öffnende geschweifte Klammer nach einem if()