Gdy miałem Ubuntu w wersji 8.04 nie miałem problemów z instalacją sterowników zamkniętych. Wszystko robiłem z pewnym poradnikiem na debiana, do którego strony nie pamiętam, ale mam wydrukowany. Do czasu dist-upgrade z 8.04 do 8.10, bo wtedy podczas aktualizacji wyłączył mi się komputer i miałem kernel panic. Poczekałem do momentu, aż wyjdzie polska wersja Ubuntu 8.10, wtedy zainstalowałem jeszcze raz.
I tu jest problem.
Przed instalacją tradycyjnie pobrałem pakiety: linux-headers-2.6.27-11-generic, make, automake, gcc, g++, build essential itp, jednakże jedna rzecz mnie zdziwiła.
Otóż mając wersję 8.04 komenda uname -r zwracała zwykle taki wynik:
2.6.xx-xx-386
I przy takiej wersji kernela instalacja przebiegała pomyślnie. Myślę że w tym właśnie tkwi problem, że mam linux-headers-*-generic a nie *-386, jednak w repozytoriach nie mogę znaleść aktualnej wersji tego kernela. Jest tylko 2.6.25-x-386 bez headersów.
Gdy podszedłem do instalacji sterownika napotkałem dziwny błąd: "Error: Unable to build kernel module". Potem odesłało mnie do pliku w /var/log, który przejżałem w poszukiwaniu błędów.
Oto część pliku dotycząca kompilacji modułu:
Kod: Zaznacz cały
-> License accepted.
-> No precompiled kernel interface was found to match your kernel; would you li
ke the installer to attempt to download a kernel interface for your kernel f
rom the NVIDIA ftp site (ftp://download.nvidia.com)? (Answer: No)
-> No precompiled kernel interface was found to match your kernel; this means
that the installer will need to compile a new kernel interface.
-> Performing CC sanity check with CC="cc".
-> Performing CC version check with CC="cc".
-> Kernel source path: '/lib/modules/2.6.27-11-generic/build'
-> Kernel output path: '/lib/modules/2.6.27-11-generic/build'
-> Performing rivafb check.
-> Performing nvidiafb check.
-> Performing Xen check.
-> Cleaning kernel module build directory.
executing: 'cd ./usr/src/nv; make clean'...
-> Building kernel module:
executing: 'cd ./usr/src/nv; make module SYSSRC=/lib/modules/2.6.27-11-gener
ic/build SYSOUT=/lib/modules/2.6.27-11-generic/build'...
NVIDIA: calling KBUILD...
make CC=cc KBUILD_VERBOSE=1 -C /lib/modules/2.6.27-11-generic/build SUBDIRS
=/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv modules
test -e include/linux/autoconf.h -a -e include/config/auto.conf || ( \
echo; \
echo " ERROR: Kernel configuration is invalid."; \
echo " include/linux/autoconf.h or include/config/auto.conf are mis
sing."; \
echo " Run 'make oldconfig && make prepare' on kernel src to fix it
."; \
echo; \
/bin/false)
mkdir -p /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/.tmp_ver
sions ; rm -f /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/.tm
p_versions/*
make -f scripts/Makefile.build obj=/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.0
1-pkg1/usr/src/nv
cc -Wp,-MD,/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/.nv.
o.d -nostdinc -isystem /usr/lib/gcc/i486-linux-gnu/4.3.2/include -D__KERNEL
__ -Iinclude -I/usr/src/linux-headers-2.6.27-11-generic/arch/x86/include -
include include/linux/autoc
onf.h -Iubuntu/include -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fn
o-strict-aliasing -fno-common -Werror-implicit-function-declaration -O2 -m32
-msoft-float -mregparm=3 -freg-struct-return -mpreferred-stack-boundary=2 -m
arch=i586 -mtune=generic -ffreestanding -pipe -Wno-sign-compare -fno-asynchr
onous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -Iinclude/asm-x86
/mach-default -fno-stack-protector -fno-omit-frame-pointer -fno-optimize-sib
ling-calls -pg -Wdeclaration-after-statement -Wno-pointer-sign -I/tmp/selfgz
10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv -Wall -Wimplicit -Wreturn-ty
pe -Wswitch -Wformat -Wchar-subscripts -Wparentheses -Wpointer-arith -Wno-mu
ltichar -Werror -MD -Wsign-compare -Wno-cast-qual -Wno-error -D_LOOSE_KERNEL
_NAMES -D__KERNEL__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"96.43.01\" -UDEBUG
-U_DEBUG -DNDEBUG -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_ST
R(nv)" -D"KBUILD_MODNAME=KBUILD_STR(nvidia)" -c -o /tmp/selfgz10190/NVIDIA-
Linux-x86-96.43.01-pkg1/usr/src/nv
/.tmp_nv.o /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c
In file included from include/linux/bitops.h:17,
from include/linux/kernel.h:15,
from include/linux/sched.h:52,
from include/linux/utsname.h:35,
from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv-linux.h:19,
from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv.c:14:
include/asm/bitops.h: In function ?set_bit?:
include/asm/bitops.h:60: warning: pointer of type ?void *? used in arith
metic
include/asm/bitops.h: In function ?clear_bit?:
include/asm/bitops.h:97: warning: pointer of type ?void *? used in arith
metic
In file included from include/linux/list.h:6,
from include/linux/preempt.h:11,
from include/linux/spinlock.h:50,
from include/linux/seqlock.h:29,
from include/linux/time.h:8,
from include/linux/timex.h:57,
from include/linux/sched.h:54,
from include/linux/utsname.h:35,
from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv-linux.h:19,
from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv.c:14:
include/linux/prefetch.h: In function ?prefetch_range?:
include/linux/prefetch.h:57: warning: pointer of type ?void *? used in a
rithmetic
In file included from include/linux/utsname.h:35,
from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv-linux.h:19,
from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv.c:14:
include/linux/sched.h: In function ?object_is_on_stack?:
include/linux/sched.h:1975: warning: pointer of type ?void *? used in ar
ithmetic
In file included from include/asm/dma-mapping.h:9,
from include/linux/dma-mapping.h:52,
from include/asm-generic/pci-dma-compat.h:7,
from include/asm/pci.h:94,
from include/linux/pci.h:989,
from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv-linux.h:85,
from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv.c:14:
include/linux/scatterlist.h: In function ?sg_virt?:
include/linux/scatterlist.h:199: warning: pointer of type ?void *? used
in arithmetic
In file included from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv.c:14:
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv-linux.h:105:27
: error: asm/semaphore.h: No such file or directory
In file included from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv-linux.h:107,
from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv.c:14:
include/linux/highmem.h: In function ?zero_user_segments?:
include/linux/highmem.h:134: warning: pointer of type ?void *? used in a
rithmetic
include/linux/highmem.h:134: warning: pointer of type ?void *? used in a
rithmetic
include/linux/highmem.h:134: warning: pointer of type ?void *? used in a
rithmetic
include/linux/highmem.h:134: warning: pointer of type ?void *? used in a
rithmetic
include/linux/highmem.h:137: warning: pointer of type ?void *? used in a
rithmetic
include/linux/highmem.h:137: warning: pointer of type ?void *? used in a
rithmetic
include/linux/highmem.h:137: warning: pointer of type ?void *? used in a
rithmetic
include/linux/highmem.h:137: warning: pointer of type ?void *? used in a
rithmetic
In file included from /tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv/nv.c:14:
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv-linux.h: In fu
nction ?nv_execute_on_all_cpus?:
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv-linux.h:617: e
rror: too many arguments to function ?on_each_cpu?
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c: In function
?nvos_proc_create?:
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:494: error:
?proc_root_driver? undeclared (first use in this function)
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:494: error:
(Each undeclared identifier is reported only once
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:494: error:
for each function it appears in.)
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c: In function
?__nv_setup_pat_entries?:
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:822: warning
: comparison between signed and unsigned
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c: In function
?__nv_restore_pat_entries?:
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:848: warning
: comparison between signed and unsigned
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c: In function
?nv_kern_cpu_callback?:
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:1154: warnin
g: comparison between signed and unsigned
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:1157: error:
too many arguments to function ?smp_call_function?
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:1161: warnin
g: comparison between signed and unsigned
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:1164: error:
too many arguments to function ?smp_call_function?
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c: In function
?nv_kern_vma_nopage?:
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:1676: error:
?NOPAGE_SIGBUS? undeclared (first use in this function)
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c: At top leve
l:
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:1683: error:
unknown field ?nopage? specified in initializer
/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.c:1683: warnin
g: initialization from incompatible pointer type
make[3]: *** [/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/src/nv/nv.
o] Błąd 1
make[2]: *** [_module_/tmp/selfgz10190/NVIDIA-Linux-x86-96.43.01-pkg1/usr/sr
c/nv] Błąd 2
NVIDIA: left KBUILD.
nvidia.ko failed to build!
make[1]: *** [module] Błąd 1
make: *** [module] Błąd 2
-> Error.
ERROR: Unable to build the NVIDIA kernel module.
ERROR: Installation has failed. Please see the file
'/var/log/nvidia-installer.log' for details. You may find suggestions
on fixing installation problems in the README available on the Linux
driver download page at www.nvidia.com.]
