Kreuvfs Allerweltsblog

2011-07-24

Ubuntu 11.04: PAE-Kernel + nVidia

Abgelegt unter In eigener Sache,Software von Kreuvf um 16:37:08

Ubuntu 11.04 installiert zum „normalen“ Kernel noch einen PAE-Kernel, falls dies nötig sein sollte. Standardmäßig wurde dieser Kernel dann bei mir auch gestartet, was dazu geführt hatte, dass ich keine grafische Benutzeroberfläche mehr hatte, da der binäre nVidia-Treiber (current aka 270.41.06) von X nicht geladen werden konnte, was in der Xorg-Log so aussieht:

[    22.448] (II) LoadModule: "nvidia"
[    22.448] (II) Loading /usr/lib/xorg/extra-modules/nvidia_drv.so
[    22.448] (II) Module nvidia: vendor="NVIDIA Corporation"
[    22.448] 	compiled for 4.0.2, module version = 1.0.0
[    22.448] 	Module class: X.Org Video Driver
[    22.451] (EE) NVIDIA: Failed to load the NVIDIA kernel module. Please check your
[    22.451] (EE) NVIDIA:     system's kernel log for additional error messages.
[    22.451] (II) UnloadModule: "nvidia"
[    22.452] (II) Unloading nvidia
[    22.452] (EE) Failed to load module "nvidia" (module-specific error, 0)
[    22.452] (EE) No drivers available.
[    22.452] 
Fatal server error:
[    22.452] no screens found
[    22.452] 
Please consult the The X.Org Foundation support 
	 at http://wiki.x.org
 for help. 

Da einem Benchmarking auf Phoronix zu Ubuntu 11.04, PAE und 64-Bit zufolge aber mit dem PAE-Kernel nicht mit schlechterer Performance zu rechnen ist und durch diesen Kernel der gesamte Arbeitsspeicher zur Verfügung steht, wollte ich dieses Problem lösen und bin auch recht schnell auf eine einfache Lösung gestoßen:

  1. PAE-Kernel im Recovery-Modus starten (GRUB)
  2. Nachdem sich beim Booten nichts mehr tut, Strg + Alt + F1, um im Recovery-Menü „failsafeX“ auszuwählen und zu starten.
  3. Wie gewohnt einloggen, dann „Zusätzliche Treiber“ aufrufen.
  4. Aktuellen nVidia-Treiber deaktivieren/deinstallieren. Nicht neustarten.
  5. nVidia-Treiber wieder aktivieren/installieren.
  6. Neustart.
  7. Normalen PAE-Kernel starten und 3D-Hardwarebeschleunigung mit dem binären nVidia-Treiber genießen.

Eine weitere Lösung, die ich allerdings nicht selbst probiert habe, besteht im Falle eines Upgrades von Ubuntu 10.10 auf Ubuntu 11.04 darin folgendes zu tun:

sudo apt-get install linux-headers-`uname -r`
sudo dpkg-reconfigure nvidia-185-kernel-source

Vermutlich macht das im Endeffekt genau das gleiche, was auch oben beschriebene Prozedur tut.

Der erste Befehl installiert die Linux-Header für den aktuell verwendeten Kernel. Das „`uname -r`“ wird dabei durch den Rückgabewert des Befehls „uname -r“ ersetzt, dieser Befehl also zuerst ausgeführt und die Ausgabe dieses Befehls dann genommen, um das Wunschpaket auszuwählen. Ich würde dabei aktuell für „uname -r“ schlicht „2.6.38-10-generic-pae“ erhalten. Der Befehl zum Installieren des Paketes würde demnach das Paket „linux-headers-2.6.38-10-generic-pae“ installieren.

Der zweite Befehl würde bei mir daran scheitern, dass das Paket „nvidia-185-kernel-source“ nicht installiert ist, was gemäß der Paketbeschreibung auch gut so ist:

Dies ist ein Übergangspaket für »nvidia-glx-185-kernel-source« und kann nach erfolgreicher Installation gefahrlos entfernt werden.

Ich vermute, dass man stattdessen

sudo dpkg-reconfigure nvidia-current

verwenden müsste. Falls das jemand ausprobiert und das funktioniert, bitte ich um Rückmeldung. Ich habe das jetzt mal bei bereits funktionierendem nVidia-Treiber gemacht und folgende Ausgabe erhalten:

Removing all DKMS Modules
Done.
update-initramfs: Generating /boot/initrd.img-2.6.38-10-generic-pae
update-initramfs: Generating /boot/initrd.img-2.6.38-10-generic-pae
Loading new nvidia-current-270.41.06 DKMS files...
Building only for 2.6.38-10-generic-pae
Building for architecture i686
Building initial module for 2.6.38-10-generic-pae
Done.

nvidia-current.ko:
Running module version sanity check.
 - Original module
   - No original module exists within this kernel
 - Installation
   - Installing to /lib/modules/2.6.38-10-generic-pae/updates/dkms/

depmod....

DKMS: install Completed.

Würde also mal behaupten, dass das gut aussieht. Und es funktioniert auch noch alles wie vorher.