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.