Jak na ovladače NVIDIA v Debianu

10. 10. 2011 11:27 (aktualizováno) Petr Krčmář

Novější jádra Debianu mají zakompilovanou podporu KVM. Ta se nesnese s ovladači NVIDIA a nezdaří se jejich kompilace. Konečně jsem přišel na to, jak problém snadno vyřešit.

Po (už docela dávném) update jádra z 2.6.18 na 2.6.21 mi přestaly chodit ovladače NVIDIA. Kompilace končila s chybou. V logu ( /var/log/nvidia-installer.log) jsem se vždy na konci dočetl:

  FATAL: modpost: GPL-incompatible module nvidia.ko uses
GPL-only symbol 'paravirt_ops'

make[3]: *** [__modpost] Error 1
make[2]: *** [modules] Error 2
make[2]: Leaving directory `/usr/src/linux-headers-2.6.21-1-k7'
NVIDIA: left KBUILD.
nvidia.ko failed to build!
make[1]: *** [module] Error 1
make[1]: Leaving directory `/usr/src/modules/nvidia-kernel/nv'
make: *** [build-stamp] Error 2

Problémem je kolize mezi nově zavedenou virtualizací KVM (v jádře) a modulem NVIDIA. Jedním z řešení je samozřejmě rekompilace jádra bez KVM. Existuje ale snadnější řešení. Objevil jsem ho na blog.tbnm.org a je velmi jednoduché.

Jde vlastně jen o vložení dvou řádků do Makefile. Není na tom nic složitého, přikládám podrobný postup pro další generace a svou děravou hlavu:

1) Navštivte stránky NVIDIA a stáhněte si nejnovější soubor s ovladači (asi 13 MB).

2) Nechejte balík, aby se sám rozbalil:

  ./NVIDIA-Linux-x86-96.43.01-pkg1.run --extract-only

3) Poeditujte soubor Makefile.kbulid v adresáři:

  cd NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/

Je třeba připsat dva řádky za řádek 77. Na něm byste měli najít něco jako

  EXTRA_CFLAGS += -Wall -Wimplicit -Wreturn-type...

Přímo za něj tedy zkopírujte následující:

  PARAVIRT_OPS := $(shell grep "D paravirt_ops" /boot/System.map-$(shell uname -r) | colrm 9)
EXTRA_LDFLAGS := --defsym paravirt_ops=0x$(PARAVIRT_OPS)

4) Vraťte se o tři adresáře nahoru (tedy do NVIDIA-Linux-x86-96.43.01-pkg1 a spusťte normálně instalátor:

  ./nvidia-installer

Proběhne běžná instalace (jak ji zřejmě znáte) a všechno běží. Samozřejmě je ještě potřeba poeditovat /etc/X11/xorg.conf, ale v tom se už instalace nijak neliší (čili viz manuál).

Mám to vyzkoušené, právě mi nový modul běží a karta akceleruje. Přeji mnoho dalších šťastných dní s akcelerovaným Debianem.

Sdílet