Building nvidia driver with dkms fails on debian jessie/sid 3.14-rc8 (git)
Hello everyone,
Not sure if I should send this here since this deals with a proprietary driver but i'll give it a try.
I'm trying to build the nvidia driver with:
$ sudo dkms build -m nvidia-current -v 331.49 -k 3.14.0-rc8-00011-gf217c44
it fails with output:
Building module:
cleaning build area....
env CCACHE_DISABLE=1 make -C .SYSSRC=/lib/modules/3.14.0-rc8-00011-gf217c44/build....(bad exit status:2) Error! Bad return status for module build on kernel: 3.14.0-rc8-00011-gf217c44 (x86_64) Consult /var/lib/dkms/nvidia-current/331.49/build/make.log for more information.
make.log (attached) tells me the kernel config is invalid and to make oldconfig && make prepare I do so but I still get the same error. Any ideas?
Thanks,
Tyrell
-------------- next part --------------
DKMS make.log for nvidia-current-331.49 for kernel 3.14.0-rc8-00011-gf217c44 (x86_64)
Thu Mar 27 08:15:41 MDT 2014
make: Entering directory `/var/lib/dkms/nvidia-current/331.49/build'
make KBUILD_VERBOSE=1 -C /lib/modules/3.14.0-rc8-00011-gf217c44/build M=/var/lib/dkms/nvidia-current/331.49/build modules make[1]: Entering directory `/home/savior/code/eudyptula-challenge/linux'
test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \ echo >&2; \ echo >&2 " ERROR: Kernel configuration is invalid."; \ echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\ echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ echo >&2 ; \ /bin/false)
ERROR: Kernel configuration is invalid.
include/generated/autoconf.h or include/config/auto.conf are missing. Run 'make oldconfig && make prepare' on kernel src to fix it.
mkdir -p /var/lib/dkms/nvidia-current/331.49/build/.tmp_versions ; rm -f /var/lib/dkms/nvidia-current/331.49/build/.tmp_versions/*
WARNING: Symbol version dump /home/savior/code/eudyptula-challenge/linux/Module.symvers
is missing; modules will have no dependencies and modversions.
make -f scripts/Makefile.build obj=/var/lib/dkms/nvidia-current/331.49/build/bin/sh /var/lib/dkms/nvidia-current/331.49/build/conftest.sh "gcc" "gcc" x86 /lib/modules/3.14.0-rc8-00011-gf217c44/build /lib/modules/3.14.0-rc8-00011-gf217c44/build compile_tests remap_page_range remap_pfn_range vmap set_pages_uc set_memory_uc set_memory_array_uc change_page_attr i2c_adapter pci_get_class pm_message_t irq_handler_t pci_choose_state vm_insert_page acpi_device_ops acpi_device_id acquire_console_sem kmem_cache_create outer_flush_all on_each_cpu smp_call_function vmm_support nvmap_support acpi_evaluate_integer ioremap_cache ioremap_wc proc_dir_entry INIT_WORK acpi_walk_namespace scatterlist pci_domain_nr pci_dma_mapping_error file_operations sg_init_table pci_get_domain_bus_and_slot get_num_physpages efi_enabled dom0_kernel_present drm_available proc_create_data pde_data proc_remove
echo \#define NV_COMPILER \"gcc -v 2>&1 | tail -n 1\" > /var/lib/dkms/nvidia-current/331.49/build/nv_compiler.h
gcc -Wp,-MD,/var/lib/dkms/nvidia-current/331.49/build/.nv.o.d -nostdinc -isystem /usr/lib/gcc/x86_64-linux-gnu/4.8/include -I/home/savior/code/eudyptula-challenge/linux/arch/x86/include -Iarch/x86/include/generated -Iinclude -I/home/savior/code/eudyptula-challenge/linux/arch/x86/include/uapi -Iarch/x86/include/generated/uapi -I/home/savior/code/eudyptula-challenge/linux/include/uapi -Iinclude/generated/uapi -include /home/savior/code/eudyptula-challenge/linux/include/linux/kconfig.h -D__KERNEL__ -Wall -Wundef -Wstrict-prototypes -Wno-trigraphs -fno-strict-aliasing -fno-common -Werror-implicit-function-declaration -Wno-format-security -fno-delete-null-pointer-checks -O2 -m64 -mno-mmx -mno-sse -mpreferred-stack-boundary=3 -mno-red-zone -mcmodel=kernel -funit-at-a-time -maccumulate-outgoing-args -DCONFIG_AS_CFI_SIGNAL_FRAME=1 -DCONFIG_AS_CFI_SECTIONS=1 -DCONFIG_AS_FXSAVEQ=1 -DCONFIG_AS_AVX=1 -DCONFIG_AS_AVX2=1 -pipe -Wno-sign-compare -fno-asynchronous-unwind-tables -mno-sse -mno-mmx -mno-sse2 -mno-3dnow -mno-avx -fno-stack-protector -Wno-unused-but-set-variable -fomit-frame-pointer -Wdeclaration-after-statement -Wno-pointer-sign -fno-strict-overflow -fconserve-stack -Werror=implicit-int -Werror=strict-prototypes -DCC_HAVE_ASM_GOTO -DNV_MODULE_INSTANCE=0 -DNV_BUILD_MODULE_INSTANCES=0 -UDEBUG -U_DEBUG -DNDEBUG -I/var/lib/dkms/nvidia-current/331.49/build -Wall -MD -Wsign-compare -Wno-cast-qual -Wno-error -D__KERNEL__ -DMODULE -DNVRM -DNV_VERSION_STRING=\"331.49\" -Wno-unused-function -Wuninitialized -mno-red-zone -mcmodel=kernel -DNV_UVM_ENABLE -D__linux__ -DNV_DEV_NAME=\"nvidia\" -DMODULE -D"KBUILD_STR(s)=#s" -D"KBUILD_BASENAME=KBUILD_STR(nv)" -D"KBUILD_MODNAME=KBUILD_STR(nvidia)" -c -o /var/lib/dkms/nvidia-current/331.49/build/nv.o /var/lib/dkms/nvidia-current/331.49/build/nv.c
In file included from <command-line>:0:0:/home/savior/code/eudyptula-challenge/linux/include/linux/kconfig.h:4:32: fatal error: generated/autoconf.h: No such file or directory
#include <generated/autoconf.h>
^compilation terminated.
make[2]: *** [/var/lib/dkms/nvidia-current/331.49/build/nv.o] Error 1 make[1]: *** [_module_/var/lib/dkms/nvidia-current/331.49/build] Error 2 make[1]: Leaving directory `/home/savior/code/eudyptula-challenge/linux'
make: *** [modules] Error 2
make: Leaving directory `/var/lib/dkms/nvidia-current/331.49/build'
Quoted 1 line · Tyrell Keene
make.log (attached) tells me the kernel config is invalid and to make oldconf
ig && make prepare
Quoted 1 line
I do so but I still get the same error. Any ideas?
What happens if you ignore dkms, and cd to wherever you extracted the
NVidia source tree, 'cd kernel', and just do 'make install' there?
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 848 bytes
Desc: not available
Url : http://lists.kernelnewbies.org/pipermail/kernelnewbies/attachments/20140327/5b89095c/attachment.bin
Quoted 2 lines · Tyrell Keene
make KBUILD_VERBOSE=1 -C
/lib/modules/3.14.0-rc8-00011-gf217c44/buildM=/var/lib/dkms/nvidia-current/331.49/build modules make[1]: Entering directory `/home/savior/code/eudyptula-challenge/linux'
This looks like /lib/modules/3.14.0-rc8-00011-gf217c44/build is a symlink to /home/savior/code/eudyptula-challenge/linux
Quoted 8 lines
test -e include/generated/autoconf.h -a -e include/config/auto.conf || ( \ echo >&2; \ echo >&2 " ERROR: Kernel configuration is invalid."; \ echo >&2 " include/generated/autoconf.h or include/config/auto.conf are missing.";\ echo >&2 " Run 'make oldconfig && make prepare' on kernel src to fix it."; \ echo >&2 ; \ /bin/false)
Quoted 8 lines
ERROR: Kernel configuration is invalid.
include/generated/autoconf.horinclude/config/auto.confare missing. Run 'make oldconfig && make prepare' on kernel src to fix it.mkdir -p
/var/lib/dkms/nvidia-current/331.49/build/.tmp_versions; rm -f/var/lib/dkms/nvidia-current/331.49/build/.tmp_versions/*WARNING: Symbol version dump
/home/savior/code/eudyptula-challenge/linux/Module.symvers
is missing; modules will have no dependencies and modversions.
And /home/savior/code/eudyptula-challenge/linux does not contain the expected kernel headers from your installed kernel. Since 3.14.0-rc8-00011-gf217c44 doesn't look like any Debian kernel version, I'm going to assume you broke this yourself...
If you want to have dkms working, then you need to install the kernel headers matching the kernel you are building out-of-tree modules for.
One very easy way to make this work, at the cost of installing the kernel via a package, is building debian packages from the mainline kernel by simply doing (possibly with the appropriate -jX option):
make deb-pkg
Then you just install the resulting linux-image-*.deb and linux-headers-*.deb and you are all set to run dkms.
Bj?rn