Klątwa PARAVIRT_OPS

Dla tych, którzy próbują samodzielnie kompilować sterowniki NVIDII dla kernela powyżej wersji 2.6.2X, powyższy parametr PARAVIRT_OPS jawi się w nocnych koszmarach i goni ich z włączoną kosiarką do trawy. Tak, w Debianie są problemy z kompilowaniem sterowników, które postanowiły sprawdzać i uzależnić swoją dalszą kompilację od pewnych warunków. Pisałem o tym pewnym sposobie wcześniej, pisał o tym Hadret, a ja mam kolejną poradę, najprostszą chyba z możliwych.

Zaczynamy standardowo, czyli musimy posiadać wiadome sprawy – paczki build-essential, linux-headers-`uname -r`, ściągnięte sterowniki NVIDII. Sterowniki kopiujemy sobie do np. /usr/src/, rozpakowujemy (u mnie sterowniki to plik NVIDIA-Linux-x86-100.14.11-pkg1.run) :

$#cd /usr/src/
$#chmod 755 NVIDIA-Linux-x86-100.14.11-pkg1.run
$#./NVIDIA-Linux-x86-100.14.11-pkg1.run -x

Owieramy do edycji ulubionym edytorem plik :

$#joe NVIDIA-Linux-x86-100.14.11-pkg1/usr/src/nv/Makefile.kbuild

Znajdujemy fragment :

EXTRA_CFLAGS += -I$(src)
EXTRA_CFLAGS += -Wall -Wimplicit -Wreturn-type (…)

Poniżej tego fragmentu wklejamy :

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

(uwaga : \-\-defsym a nie jedno – jakby się mogło wydawać)

Zapisujemy, wychodzimy z edycji i kompilujemy :
$#./NVIDIA-Linux-x86-100.14.11-pkg1/nvidia-installer

Powinno się udać – ew. szukaj co poszło nie tak w /var/log/nvidia-installer.