[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Update to Sid, and cannot compile Nvidia module; PIC mode?



Greetings,

I usually have to run the NVIDIA installer after a kernel update, but
something has changed that has broken the process to build the
proprietary Nvidia kernel module.  I've searched around a bit on the
Intarwebs before coming to the list, so here goes.


Installer: NVIDIA-Linux-x86_64-367.44.run

If I simply run the installer, if fails with this message:

ERROR: Failed to run `/usr/sbin/dkms build -m nvidia -v 367.44 -k
4.7.0-1-amd64`:
         Kernel preparation unnecessary for this kernel.  Skipping...

         Building module:
         cleaning build area...
         'make' -j8 NV_EXCLUDE_BUILD_MODULES=''
KERNEL_UNAME=4.7.0-1-amd64 modules....(bad exit status: 2)
         Error! Bad return status for module build on kernel:
4.7.0-1-amd64 (x86_64)
         Consult /var/lib/dkms/nvidia/367.44/build/make.log for more
information.

And, the output of /var/lib/dkms/nvidia/367.44/build/make.log:

  CC [M]  /var/lib/dkms/nvidia/367.44/build/nvidia/nv-instance.o
/var/lib/dkms/nvidia/367.44/build/nvidia/nv-frontend.c:1:0: error: code
model kernel does not support PIC mode
 /* _NVRM_COPYRIGHT_BEGIN_

  CC [M]  /var/lib/dkms/nvidia/367.44/build/nvidia/nv.o
/usr/src/linux-headers-4.7.0-1-common/scripts/Makefile.build:294: recipe
for target '/var/lib/dkms/nvidia/367.44/build/nvidia/nv-frontend.o' failed
make[3]: *** [/var/lib/dkms/nvidia/367.44/build/nvidia/nv-frontend.o]
Error 1
make[3]: *** Waiting for unfinished jobs....
/var/lib/dkms/nvidia/367.44/build/nvidia/nv.c:1:0: error: code model
kernel does not support PIC mode
 /* _NVRM_COPYRIGHT_BEGIN_


Searching on "error: code model kernel does not support PIC mode" yields
a few pages that are interesting, such as:

https://bugs.launchpad.net/ubuntu/+source/nvidia-graphics-drivers-361/+bug/1574838

and

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1574982?comments/19

>From Comment #19, if I add this to the Kbuild file included with the
Nvidia installer, it might compile:

EXTRA_CFLAGS += -fno-pie -fno-stack-protector

So, I unpack the Nvidia installer:
./NVIDIA-Linux-x86_64-367.44.run -x

Change directory into the installer directory, and modify the Kbuild file:
cd NVIDIA-Linux-x86_64-367.44/kernel

Modify the Kbuild file (line 59), with:
EXTRA_CFLAGS += -fno-pie -fno-stack-protector

Run the nvidia-installer from the extracted directory:
cd NVIDIA-Linux-x86_64-367.44 ; ./nvidia-installer

And I get this message:
ERROR: Unable to load the 'nvidia-drm' kernel module.

And from the log file, /var/log/nvidia-installer.log:

creation time: Thu Oct 27 16:29:35 2016
installer version: 367.44

PATH: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

nvidia-installer command line:
    ./nvidia-installer

Unable to load: nvidia-installer ncurses v6 user interface

Using: nvidia-installer ncurses user interface
-> Detected 8 CPUs online; setting concurrency level to 8.
-> License accepted.
-> Installing NVIDIA driver version 367.44.
-> There appears to already be a driver installed on your system
(version: 367.44).  As part of installing this driver (version: 367.44),
the existing driver will be uninstalled.  Are you sure you want to
continue? (Answer: Continue installation)
-> Would you like to register the kernel module sources with DKMS? This
will allow DKMS to automatically build a new module, if you install a
different kernel later. (Answer: Yes)
-> Installing both new and classic TLS OpenGL libraries.
-> Installing both new and classic TLS 32bit OpenGL libraries.
-> Install NVIDIA's 32-bit compatibility libraries? (Answer: Yes)
-> Will install GLVND GLX client libraries.
-> Uninstalling the previous installation with /usr/bin/nvidia-uninstall.
Looking for install checker script at
./libglvnd_install_checker/check-libglvnd-install.sh
   executing: '/bin/sh
./libglvnd_install_checker/check-libglvnd-install.sh'...
   Checking for libglvnd installation.
   Checking libGLdispatch...
   Can't load library libGLdispatch.so.0: libGLdispatch.so.0: cannot
open shared object file: No such file or directory
Will install libglvnd libraries.
-> Searching for conflicting files:
-> done.
-> Installing 'NVIDIA Accelerated Graphics Driver for Linux-x86_64'
(367.44):
   executing: '/sbin/ldconfig'...
-> done.
-> Driver file installation is complete.
-> Installing DKMS kernel module:
-> done.
ERROR: Unable to load the 'nvidia-drm' 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.


Anyone else run into this on Sid very recently?  Any hints or pointers?

Thanks in advance,
Will

Reply to: