ubuntuusers.de

Nvidia Treiber 470 unter (K)Ubuntu 24.04

Status: Ungelöst | Ubuntu-Version: Kubuntu 24.04 (Noble Numbat)
Antworten |

l3onidas

Avatar von l3onidas

Anmeldungsdatum:
11. November 2007

Beiträge: 285

Hallo zusammen,

ich habe hier einen wunderschönen alten (2013) iMac 27 Zoll, dem ich gestern ein Kubuntu 24.04. spendiert habe.

Alles soweit in Ordnung, nur der Nvidia-Treiber will nicht laufen.

1
2
3
4
5
$ lspci -nnk | grep -A3 "\[03..\]:"
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GK107M [GeForce GT 755M Mac Edition] [10de:0fea] (rev a1)
        Subsystem: Apple Inc. GK107M [GeForce GT 755M Mac Edition] [106b:011f]
        Kernel driver in use: nouveau
        Kernel modules: nvidiafb, nouveau

Also der proprietäre Treiber ist jetzt im Moment auch nicht installiert, weil er leider zu einem Blackscreen bootet.

Auf diesem selben Gerät lief bis gestern der Nvidia Treiber (nvidia-driver-470) unter Mint 21.3 (entspricht Ubuntu 22.04, mit HWE-Kernel 6.5) tadellos.

Wenn ich den Treiber nun unter Noble installiere mit

1
sudo apt install nvidia-driver-470 nvidia-settings

scheint zunächst bei der Installation alles in Ordnung, Module werden m.E. ohne Fehlermeldung gebaut. Aber das System bootet eben nicht richtig, also nicht einmal bis zum Anmeldebildschirm. Es kommt der Blackscreen, aus dem ich auch mit den mir zu Gebote stehenden Mitteln nur mit dem Ausschaltknopf herauskomme (Strg + Alt + F1 oder + andere Funktionstasten bringen nichts). Ich habe dann nach Aus- und Anschalten in den recovery modus gebootet und den nvidia-Treiber wieder entfernt.

Wenn ich Xorg.log richtig lese (kann aber leicht nicht der Fall sein, Ausschnitt anbei), wurde der Treiber eigentlich auch geladen. Aber richtig gestartet ist er eben nicht. Weiß nicht, woran das dann fehlte.

Ist es schon jemandem gelungen, den nvidia-470er Treiber unter Noble (Kernel 6.8) zum Laufen zu bringen, und wenn ja, mit welcher genauen Hardware, und erforderte das besondere Anstalten? Ich weiß, dass es sehr früh ist, und dass sich das Problem auch noch von selbst lösen kann.

Andere Frage: Was könnte ich noch probieren, um nach Installationsversuch von dem Blackscreen direkt, ohne erzwungenen Neustart, in eine Konsole zu kommen?

Ich bin nicht unbedingt angewiesen auf den Treiber, kann mit nouveau notfalls leben, mache nichts grafisch aufwendiges. Allerdings wurmt es mich eben doch, und der Mauszeiger verzögert manchmal ein bisschen mit nouveau.

Xorg.0.log (2.3 KiB)
Download Xorg.0.log

hakel2022

Anmeldungsdatum:
21. Februar 2022

Beiträge: 3175

Nach einem Release Upgrade fällt oft ein Legacy Treiber hinten runter.

Dazu kommt, daß es zur Zeit einen Bug mit neueren Kerneln (6.5, 6.8) gibt. Vermutlich Desinteresse ...

Wird im Forum und im Netz diskutiert.

Wenn du "Ruhe" haben willst, nutze nouveau mit Lubuntu (Neuinstallation).

l3onidas

(Themenstarter)
Avatar von l3onidas

Anmeldungsdatum:
11. November 2007

Beiträge: 285

Danke, ja, ich glaube intuitiv auch, dass es etwas mit Kernel 6.8 ist. Mit Kernel 6.5 lief der Treiber bei mir ja gut. Vielleicht kommt ja irgendwann ein Kernelupdate, nach dem es dann geht.

Der Legacy Treiber 390 wird nicht mehr unterstützt, also in dem Sinne, dass er eben auch nicht mehr in den Noble-Repos ist. Aber wenn ein Treiber überhaupt dort ist, was beim 470er der Fall ist unter Noble, sollte er mittel- bis langfristig auch funktionieren, also jedenfalls öfter mal.

Zu Lubuntu muss ich gar nicht wechseln wegen des nouveau. Auch Plasma läuft ja recht gut damit, also bis auf ganz kleine Nickeligkeiten.

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 4976

Drüben bei Siduction bereitet der veraltete 470er nvidia-driver, der offiziell schon lange nicht mehr unterstützt wird von Nvidia, auch Verdruss mit dem 6.8er Linux Kernel. Erschwerend kommt noch hinzu, dass das Kernelmodul die 14er GCC nicht so gerne hat. IGNORE_CC_MISMATCH=1 muss daher wohl sein.

Ich habe bei mir hier auf dem Noble Numbat die GCC auf die 13er Version festgesetzt, da es bislang für mingw zum produzieren von Windows Binaries auch nur eine 13er Version gibt:

setgcc () 
{ 
    echo "Set gcc compiler Version, first number Compiler version, second number priority." && sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-"$1" "$2" --slave /usr/bin/g++ g++ /usr/bin/g++-"$1" --slave /usr/bin/gcov gcov /usr/bin/gcov-"$1" && echo "Done." || echo "No change."
}

Das ist eine function in meiner $HOME/.bashrc.

l3onidas

(Themenstarter)
Avatar von l3onidas

Anmeldungsdatum:
11. November 2007

Beiträge: 285

Danke, werde das weiter verfolgen. Allerdings scheitert der Modulbau bei mir gar nicht, und bei mir ist nur gcc-13 installiert.

hakel2022

Anmeldungsdatum:
21. Februar 2022

Beiträge: 3175

Plasma läuft ja recht gut damit, also bis auf ganz kleine Nickeligkeiten.

LxQt ist ein "2D" Desktop, der nutzt die GPU nicht, daher hat man damit dann keinen Ärger. ☹

Keine Hexerei ...

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 4976

l3onidas schrieb:

Danke, werde das weiter verfolgen. Allerdings scheitert der Modulbau bei mir gar nicht, und bei mir ist nur gcc-13 installiert.

Funktionieren tut es aber nicht. Ich würde das als gescheitert betrachten. Schau mal in das dkms Paket für das 470er nvidia-driver Metapaket rein, und vergleiche das mal mit dem dkms Paket für das 550er nvidia-driver Metapaket. Beim nvidia-driver 550.67 enthält das dkms Paket unter anderem auch Patches für 6.8er Linux Kernel.

dpkg -L nvidia-dkms-550

/.
/usr
/usr/share
/usr/share/doc
/usr/share/doc/nvidia-dkms-550
/usr/share/doc/nvidia-dkms-550/changelog.Debian.gz
/usr/share/doc/nvidia-dkms-550/copyright
/usr/src
/usr/src/nvidia-550.67
/usr/src/nvidia-550.67/dkms.conf
/usr/src/nvidia-550.67/patches
/usr/src/nvidia-550.67/patches/allow_sublevel_greater_than_5.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_3.0.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_3.10.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_3.11.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_3.13.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_3.14.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_3.18.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_3.6.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_3.8.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_4.10.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_4.14.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_4.15.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_4.3.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_4.6.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_4.7.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_4.7_amd64_only.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_4.8.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_4.9.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_4.9_amd64_only.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_5.13.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_5.6.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_6.0.patch
/usr/src/nvidia-550.67/patches/buildfix_kernel_6.8-gpl-pfn_valid.patch
/usr/src/nvidia-550.67/patches/disable_fstack-clash-protection_fcf-protection.patch
/usr/src/nvidia-550.67/patches/do-not-call-pci_save_state.patch
/usr/src/nvidia-550.67/patches/make-use-of-the-new-uapi-framework.patch
/usr/src/nvidia-550.67/patches/register-VT-switch-requirements.patch
/usr/src/nvidia-550.67/patches/replace-VM_RESERVED-with-VM_DONTEXPAND-and-VM_DONTDU.patch

Die Linux Kernelentwickler versuchen den Usern mit Nvidia Grafikkarten gerne das Leben schwer zu machen, zumindest aber die volle Nutzung der Nvidia Hardwaremöglichkeiten mittels des properitären nvidia-driver zu erschweren.

Der Patch für 6.8er Kernel enthält dann dies:

cat /usr/src/nvidia-550.67/patches/buildfix_kernel_6.8-gpl-pfn_valid.patch

linux-6.1.76, 6.6.15, and 6.7.3 have modified the non-ARCH-specific
pfn_valid() to use __rcu_read_lock/unlock[1] that is marked GPL and
cannot be used here[2][3][4] unless use the open source variant.

As a workaround, reuse the old implementation until NVIDIA makes
a fixed release (due to no longer be using pfn_valid[5], likely
with its own implementation similarly to this patch).

Safe to use with kernel >=5.15 or so but older ones had a different
pfn_valid implementation. However 5.15 and older branches are
"currently" not affected, so simply limit to >=6.1.76.

[1] https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/commit/include/linux/mmzone.h?h=v6.7.3&id=3a01daace71b521563c38bbbf874e14c3e58adb7
[2] https://bugs.gentoo.org/923456
[3] https://forums.developer.nvidia.com/t/280908
[4] https://github.com/NVIDIA/open-gpu-kernel-modules/issues/594
[5] https://github.com/NVIDIA/open-gpu-kernel-modules/issues/594#issuecomment-1916197641
--- a/common/inc/nv-linux.h
+++ b/common/inc/nv-linux.h
@@ -1990,2 +1990,23 @@
 
+#if defined(CONFIG_HAVE_ARCH_PFN_VALID) || LINUX_VERSION_CODE < KERNEL_VERSION(6,1,76)
+#  define nv_pfn_valid pfn_valid
+#else
+/* pre-6.1.76 kernel pfn_valid version without GPL rcu_read_lock/unlock() */
+static inline int nv_pfn_valid(unsigned long pfn)
+{
+        struct mem_section *ms;
+
+        if (PHYS_PFN(PFN_PHYS(pfn)) != pfn)
+                return 0;
+
+        if (pfn_to_section_nr(pfn) >= NR_MEM_SECTIONS)
+                return 0;
+
+        ms = __pfn_to_section(pfn);
+        if (!valid_section(ms))
+                return 0;
+
+        return early_section(ms) || pfn_section_valid(ms, pfn);
+}
+#endif
 #endif  /* _NV_LINUX_H_ */
--- a/nvidia/nv-mmap.c
+++ b/nvidia/nv-mmap.c
@@ -576,3 +576,3 @@
             if (!IS_REG_OFFSET(nv, access_start, access_len) &&
-                (pfn_valid(PFN_DOWN(mmap_start))))
+                (nv_pfn_valid(PFN_DOWN(mmap_start))))
             {
--- a/nvidia/os-mlock.c
+++ b/nvidia/os-mlock.c
@@ -102,3 +102,3 @@
         if ((nv_follow_pfn(vma, (start + (i * PAGE_SIZE)), &pfn) < 0) ||
-            (!pfn_valid(pfn)))
+            (!nv_pfn_valid(pfn)))
         {
@@ -176,3 +176,3 @@
 
-    if (pfn_valid(pfn))
+    if (nv_pfn_valid(pfn))
     {

Siehe auch:

Geht man über die Auswahlseite von Nvidia, um nach der passenden Treiberversionsnummer für die GT 755M zu schauen, wird auf die Version 418.113 verwiesen.

Damit ist die GT 755M aber ganz rausgefallen. Das nvidia-driver-418 Paket war bereits für Mantic Minotaur bloß ein Dummy. Es bleibt dann der Nouveau Treiber für die alte Hardware.

l3onidas

(Themenstarter)
Avatar von l3onidas

Anmeldungsdatum:
11. November 2007

Beiträge: 285

Ich bin jetzt erstmal doch wieder zurück zu Mint 21.3 mit Kernel 6.5 gegangen. Dort läuft ja, auch jetzt wieder einwandfrei, der 470er-Treiber:

l3onidas@macragnar:~$ uname -r
6.5.0-28-generic
l3onidas@macragnar:~$ inxi -G
Graphics:
  Device-1: NVIDIA GK107M [GeForce GT 755M Mac Edition] driver: nvidia
    v: 470.239.06
  Device-2: Apple FaceTime HD Camera (Built-in) type: USB driver: uvcvideo
  Display: x11 server: X.Org v: 1.21.1.4 driver: X: loaded: nvidia
    unloaded: fbdev,modesetting,nouveau,vesa gpu: nvidia
    resolution: 2560x1440~60Hz
  OpenGL: renderer: NVIDIA GeForce GT 755M/PCIe/SSE2
    v: 4.6.0 NVIDIA 470.239.06

Ich hatte den Hinweis, dass die GPU prinzipiell mit dem 470er-Treiber (obwohl übrigens auch die grafische Treiberverwaltung von Mint 21.3 nur den 390er-Treiber empfiehlt) läuft, von hier:

https://forums.developer.nvidia.com/t/driver-support-for-geforce-750m-gk107m-0fe4/233082

Habe damit erstmal bis 2027, bis die Unterstützung von Mint 21 endet, wieder Ruhe und kann dann weiterschauen. Der Rechner hat nunmal leider (nur) die Nvidia-GPU. Der Monitor ist aber einfach göttlich (weiß gar nicht, wie ich mich wieder an einen anderen gewöhnen soll).

Antworten |