Difference between revisions of "Package:NVIDIA Linux Display Drivers"

From Funtoo
Jump to: navigation, search
 
(40 intermediate revisions by 11 users not shown)
Line 2: Line 2:
 
|Summary=NVIDIA accelerated graphics driver
 
|Summary=NVIDIA accelerated graphics driver
 
|CatPkg=x11-drivers/nvidia-drivers
 
|CatPkg=x11-drivers/nvidia-drivers
|Repository=Funtoo Overlay
 
|Overlay=Funtoo
 
 
}}
 
}}
 
== Introduction ==
 
== Introduction ==
NVIDIA have proprietary graphics drivers for Linux under binary blob. The alternative open source driver is {{Package|x11-drivers/xf86-video-nouveau}}.
+
 
 +
NVIDIA provides proprietary graphics drivers for Linux with excellent performance. The name of the package for these drivers is {{c|x11-drivers/nvidia-drivers}}, and in Funtoo Linux 1.4 and later there is an additional {{c|x11-drivers/nvidia-kernel-modules}} package which includes the necessary kernel modules (in 1.3 and earlier, these kernel modules are included in the main {{c|nvidia-drivers}} package.)
 +
 
 +
Also note that there is an Open Source driver for NVIDIA graphics cards:  {{Package|x11-drivers/xf86-video-nouveau}}.
  
 
== Preparing to Install ==
 
== Preparing to Install ==
=== Hardware compatibility and driver versions ===
 
Currently there are five meta versions of NVIDIA Linux drivers each of which supports a specific group of GPUs. To check the type of driver that is related to your video card, check the link on this page of the official ##bt##  NVIDIA:
 
  
[http://www.nvidia.com/object/IO_32667.html www.nvidia.com/object/IO_32667.html]
+
=== Blacklist Nouveau ===
 +
 
 +
When installing the proprietary NVIDIA drivers, it is a good practice to first blacklist the Open Source nouveau drivers so they do not load automatically and interfere with the official NVIDIA drivers. Do this by adding a {{f|nouveau-blacklist.conf}} file as follows:
  
If you have identified as your driver version 337.25, for example, you need the mask(s) driver(s) latest(s) to which you want to install.
+
{{file|name=/etc/modprobe.d/nouveau-blacklist.conf|body=
 +
blacklist nouveau
 +
options nouveau modeset=0
 +
alias nouveau off
 +
}}
  
<console>
+
=== Required Kernel Options ===
###i## echo “>x11-drivers/nvidia-drivers-340” >> /etc/portage/package.mask
 
</console>
 
  
=== The required kernel options ===
+
If using a pre-build debian-sources or debian-sources-lts kernel, it is not necessary to fiddle with the kernel to enable necessary options. However, if you are building your kernel from source, ensure that the following options are enabled to ensure compatibility with the drivers:
  
 
{{kernelop|desc=
 
{{kernelop|desc=
Line 28: Line 31:
 
[*] MTRR (Memory Type Range Register) support
 
[*] MTRR (Memory Type Range Register) support
 
}}
 
}}
To we made a successful compilation of the legacy NVIDIA driver, we set before the removal of the native framebuffer drivers into the kernel in order to avoid conflicts for x86 and AMD64 processors, in this case.
+
 
 
{{kernelop|desc=
 
{{kernelop|desc=
 
Device Drivers --->
 
Device Drivers --->
Line 37: Line 40:
 
}}
 
}}
  
{{tip|An alternative is to [[uvesafb|uvesafb]] framebuffer, which can be installed in parallel with nvidia-drivers }}
+
=== Hardware compatibility and driver versions ===
 +
Currently, there are five versions of meta NVIDIA Linux drivers, each of which supports a specific group of GPUs. To learn which driver is suitable for your video card, consult the official page of the NVIDIA [http://www.nvidia.com/object/IO_32667.html complete list of supported GPUs]. Mind that choosing the wrong driver may render your system unusable!
 +
{{warning|With version 396, support for the Fermi family and older cards deprecated. Use the  legacy drivers instead. http://nvidia.custhelp.com/app/answers/detail/a_id/4654"}}
  
 
== Installation ==
 
== Installation ==
  
Upgrade and/or configure <tt>VIDEO_CARDS</tt> variable to <tt>nvidia</tt> in <tt>/etc/make.conf</tt>. This will serve to while you are installing the Server X, the correct version of nvidia-drivers to be provided for you.
+
Upgrade and/or configure the {{c|VIDEO_CARDS}} flag to {{c|nvidia}} in {{c|/etc/[[make.conf]]}}.
<console>
+
 
# ##i##nano /etc/make.conf
+
{{console|body=
 +
# ##i##nano /etc/portage/make.conf
 
VIDEO_CARDS="nvidia"
 
VIDEO_CARDS="nvidia"
</console>
+
}}
 +
 
 +
For many users, after doing this and doing an {{c|emerge -auDN @world}} will result in the NVIDIA drivers being merged. If this does not happen, they can be merged with the following command:
 +
 
 +
{{console|body=
 +
###i## emerge x11-drivers/nvidia-drivers
 +
}}
 +
 
 +
For older NVIDIA cards, especially unsupported versions, you may need to enter the details of the '''''lowest numbered driver that will fail your video-card''''' into {{f|/etc/portage/package.mask}}. Example:
 +
{{file|name=/etc/portage/package.mask|body=
 +
>=x11-drivers/nvidia-drivers-341.0.0
 +
}}
 +
This will block the installation of the 341.0.0 driver '''''and all later versions''''', as the video cards used (a GT8400GS in this case) is not supported by those newer drivers. emerge will therefore install the latest previous version, in this case the 340.102 driver.
 +
 
 +
{{note|Installing the driver with the '''gtk''' use flags will also provide <code>media-video/nvidia-settings</code> which is a graphical tool for monitoring and various settings for your video card}}
  
{{note|Installing to the driver with the option in '''gtk''' use flags will make it installed the <tt>media-video/nvidia-settings</tt> which is a graphical tool for monitoring and various settings for your video card}}
+
When the installation is complete run {{c|nvidia-modprobe}} module to manually load kernel modules to begin testing.
  
=== Emerging the package ===
+
=== The Importance of the Video Group ===
<console>
 
###i## emerge x11-drivers/nvidia-drives
 
</console>
 
  
When the installation is complete run '''modprobe''' nvidia module to read kernel memory.
+
While many video drivers (those that are part of xorg-x11) do not require users to be part of the {{c|video}} group for hardware acceleration, the NVIDIA drivers definitely do require this. Please make sure that any non-root user is part of the {{c|video}} group. This can be done by using {{c|vigr}} or via the command-line as follows:
  
<console>
+
{{console|body=
###i## lsmod | grep nvidia
+
# ##i## usermod -a -G video myusername
</console>
+
}}
If an update before remove the old module
 
<console>
 
###i## rmmod nvidia
 
###i## modprobe nvidia
 
</console>
 
  
 
=== Testing your Video Card ===
 
=== Testing your Video Card ===
Line 69: Line 81:
 
<console>
 
<console>
 
$ ##i##glxinfo | grep direct
 
$ ##i##glxinfo | grep direct
$ ##i##  direct rendering: yes
+
  direct rendering: yes
 
</console>
 
</console>
  
Line 81: Line 93:
  
 
=== Integration with X Server ===
 
=== Integration with X Server ===
When your X server is installed find, and there's <tt>/etc/X11/xorg.conf</tt> you can run the nvidia-xconfig which will set in xorg.conf to identify the video card among other possible configurations.
+
When your X server is installed and there is a <code>/etc/X11/xorg.conf</code> you can run the nvidia-xconfig which will identify and set the video card, amongst other possible configurations, in your xorg.conf.
 +
 
 +
<console>###i## nvidia-xconfig</console>
 +
 
 
{{file|name=/etc/X11/xorg.conf|body=
 
{{file|name=/etc/X11/xorg.conf|body=
 
Section "Device"
 
Section "Device"
Line 88: Line 103:
 
     VendorName    "NVIDIA Corporation"
 
     VendorName    "NVIDIA Corporation"
 
     BoardName      "[Name] [Model]"
 
     BoardName      "[Name] [Model]"
 +
    Option    "RegistryDwords" "EnableBrightnessControl=1"
 
EndSection
 
EndSection
 
}}
 
}}
 +
 +
{{Note|1=The "EnableBrightnessControl=1" option above will allow laptop backlight brightness to be controlled via hotkey or via GNOME slider. Without this option, it is likely that brightness will not be able to be controlled.}}
  
 
=== Enabling NVIDIA Support ===
 
=== Enabling NVIDIA Support ===
Include the use flag in '''nvidia''' in <tt>/etc/make.conf</tt> so due to applications that make use of this advantage may withdraw.
+
Include the use flag in '''nvidia''' in <code>/etc/portage/[[make.conf]]</code> so that applications flags are set correctly.
 
<console>
 
<console>
# ##i##nano /etc/make.conf
+
# ##i##nano /etc/portage/make.conf
 
USE="nvidia"
 
USE="nvidia"
 
</console>
 
</console>
Line 104: Line 122:
 
###i## eselect opencl set nvidia
 
###i## eselect opencl set nvidia
 
</console>
 
</console>
 +
 +
== TemptorSent's Experimental NVIDIA ebuilds ==
 +
'''These are an active work-in-progress which are not expected to work out of the box yet!'''
 +
 +
'''Use at your own risk -- ''if it breaks, you get to keep the pieces.'' '''
 +
 +
The <code>x11-drivers/nvidia-drivers</code> packages contained in the following repo utilize
 +
a parser which evaluates the package manifest included in NVIDIA's packaging directly and
 +
installs requested components to specified directories.
 +
 +
Add the overlay:
 +
<console>
 +
###i## mkdir -p /var/git/overlay
 +
###i## cd /var/git/overlay
 +
###i## git clone https://github.com/TemptorSent/overlay-nvidia-testkit nvidia-testkit
 +
###i## cat > /etc/portage/repos.conf/overlay-nvidia-testkit
 +
[nvidia-testkit]
 +
location = /var/git/overlay/nvidia-testkit
 +
auto-sync = no
 +
priority = 10
 +
^D
 +
###i## cat >> /etc/portage/package.mask
 +
# upstream gentoo mask we need to fix
 +
=media-libs/libglvnd-1.1.1.20190313
 +
^D
 +
###i## cat >> /etc/portage/package.use
 +
# if you JUST have an NVIDIA video card, we DON'T want these -- nvidia-drivers provides them for us:
 +
media-libs/mesa -opencl -vdpau -xa -vulkan
 +
# if you have a multi-GPU setup with a non-NVIDIA card, then the above should be OK to omit.
 +
^D
 +
#
 +
</console>
 +
 +
Install the package, and include mesa so it is rebuilt as well, since we need the new version from nvidia-testkit:
 +
<console>
 +
###i## emerge nvidia-drivers mesa
 +
</console>
 +
 +
This will install both the drivers and the now split <code>nvidia-kernel-modules</code> package.
 +
 +
Please note that you will need the mesa and libglvnd ebuilds provided in the nvidia-testkit repo for full functionality.
 +
 +
{{Important|Once the new drivers are installed, you will notice that {{c|eselect opengl}} will display {{c|xorg-x11}}. This is OK! With the new drivers, the {{c|libglvnd}} package now provides libGL and brokers the GL calls to the appropriate underlying hardware-specific library, making {{c|eselect opengl}} redundant. We may fix this is the production release so that {{c|eselect opengl}} shows {{c|glvnd}} instead, to avoid confusion.}}
 +
 +
The remainder of configuration should remain mostly the same as above where needed, consult NVIDIA's docs for details.
 +
Please contact TemptorSent on freenode IRC in #funtoo.
  
 
[[Category:Video Cards]]
 
[[Category:Video Cards]]
 
[[Category:First Steps]]
 
[[Category:First Steps]]
 
{{EbuildFooter}}
 
{{EbuildFooter}}

Latest revision as of 17:20, July 8, 2019

NVIDIA Linux Display Drivers

   Tip

We welcome improvements to this page. To edit this page, Create a Funtoo account. Then log in and then click here to edit this page. See our editing guidelines to becoming a wiki-editing pro.

Introduction

NVIDIA provides proprietary graphics drivers for Linux with excellent performance. The name of the package for these drivers is x11-drivers/nvidia-drivers, and in Funtoo Linux 1.4 and later there is an additional x11-drivers/nvidia-kernel-modules package which includes the necessary kernel modules (in 1.3 and earlier, these kernel modules are included in the main nvidia-drivers package.)

Also note that there is an Open Source driver for NVIDIA graphics cards: x11-drivers/xf86-video-nouveau.

Preparing to Install

Blacklist Nouveau

When installing the proprietary NVIDIA drivers, it is a good practice to first blacklist the Open Source nouveau drivers so they do not load automatically and interfere with the official NVIDIA drivers. Do this by adding a nouveau-blacklist.conf file as follows:

   /etc/modprobe.d/nouveau-blacklist.conf
blacklist nouveau
options nouveau modeset=0
alias nouveau off

Required Kernel Options

If using a pre-build debian-sources or debian-sources-lts kernel, it is not necessary to fiddle with the kernel to enable necessary options. However, if you are building your kernel from source, ensure that the following options are enabled to ensure compatibility with the drivers:


[*] Enable loadable module support
[*] MTRR (Memory Type Range Register) support


Device Drivers --->
      Graphics support ---> 
            <*> Support for frame buffer devices --->
                  <> NVIDIA Framebuffer Support
                  <> NVIDIA Riva support

Hardware compatibility and driver versions

Currently, there are five versions of meta NVIDIA Linux drivers, each of which supports a specific group of GPUs. To learn which driver is suitable for your video card, consult the official page of the NVIDIA complete list of supported GPUs. Mind that choosing the wrong driver may render your system unusable!

   Warning

With version 396, support for the Fermi family and older cards deprecated. Use the legacy drivers instead. http://nvidia.custhelp.com/app/answers/detail/a_id/4654"

Installation

Upgrade and/or configure the VIDEO_CARDS flag to nvidia in /etc/make.conf.

root # nano /etc/portage/make.conf
VIDEO_CARDS="nvidia"

For many users, after doing this and doing an emerge -auDN @world will result in the NVIDIA drivers being merged. If this does not happen, they can be merged with the following command:

root # emerge x11-drivers/nvidia-drivers

For older NVIDIA cards, especially unsupported versions, you may need to enter the details of the lowest numbered driver that will fail your video-card into /etc/portage/package.mask. Example:

   /etc/portage/package.mask
>=x11-drivers/nvidia-drivers-341.0.0

This will block the installation of the 341.0.0 driver and all later versions, as the video cards used (a GT8400GS in this case) is not supported by those newer drivers. emerge will therefore install the latest previous version, in this case the 340.102 driver.

   Note

Installing the driver with the gtk use flags will also provide media-video/nvidia-settings which is a graphical tool for monitoring and various settings for your video card

When the installation is complete run nvidia-modprobe module to manually load kernel modules to begin testing.

The Importance of the Video Group

While many video drivers (those that are part of xorg-x11) do not require users to be part of the video group for hardware acceleration, the NVIDIA drivers definitely do require this. Please make sure that any non-root user is part of the video group. This can be done by using vigr or via the command-line as follows:

root #  usermod -a -G video myusername

Testing your Video Card

To test your video card run the glxinfo program, which is part of the mesa-progs package. This will check if direct rendering is enabled.

user $ glxinfo | grep direct
  direct rendering: yes

Configuring

Loading at boot

To automate the loading of the module when you boot your system, add nvidia in modules variable.

root # nano /etc/conf.d/modules
modules="nvidia"

Integration with X Server

When your X server is installed and there is a /etc/X11/xorg.conf you can run the nvidia-xconfig which will identify and set the video card, amongst other possible configurations, in your xorg.conf.

root # nvidia-xconfig
   /etc/X11/xorg.conf
Section "Device"
    Identifier     "nvidia"
    Driver         "nvidia"
    VendorName     "NVIDIA Corporation"
    BoardName      "[Name] [Model]"
    Option    "RegistryDwords" "EnableBrightnessControl=1"
EndSection
   Note

The "EnableBrightnessControl=1" option above will allow laptop backlight brightness to be controlled via hotkey or via GNOME slider. Without this option, it is likely that brightness will not be able to be controlled.

Enabling NVIDIA Support

Include the use flag in nvidia in /etc/portage/make.conf so that applications flags are set correctly.

root # nano /etc/portage/make.conf
USE="nvidia"

Enabling OpenGL/OpenCL

As a requirement, make sure that the Xorg server is not in use during this change. To enable OpenGL and OpenCL.

root # eselect opengl set nvidia
root # eselect opencl set nvidia

TemptorSent's Experimental NVIDIA ebuilds

These are an active work-in-progress which are not expected to work out of the box yet!

Use at your own risk -- if it breaks, you get to keep the pieces.

The x11-drivers/nvidia-drivers packages contained in the following repo utilize a parser which evaluates the package manifest included in NVIDIA's packaging directly and installs requested components to specified directories.

Add the overlay:

root # mkdir -p /var/git/overlay
root # cd /var/git/overlay
root # git clone https://github.com/TemptorSent/overlay-nvidia-testkit nvidia-testkit
root # cat > /etc/portage/repos.conf/overlay-nvidia-testkit
[nvidia-testkit]
location = /var/git/overlay/nvidia-testkit
auto-sync = no
priority = 10
^D
root # cat >> /etc/portage/package.mask
root # upstream gentoo mask we need to fix
=media-libs/libglvnd-1.1.1.20190313
^D
root # cat >> /etc/portage/package.use
root # if you JUST have an NVIDIA video card, we DON'T want these -- nvidia-drivers provides them for us:
media-libs/mesa -opencl -vdpau -xa -vulkan
root # if you have a multi-GPU setup with a non-NVIDIA card, then the above should be OK to omit.
^D
root #

Install the package, and include mesa so it is rebuilt as well, since we need the new version from nvidia-testkit:

root # emerge nvidia-drivers mesa

This will install both the drivers and the now split nvidia-kernel-modules package.

Please note that you will need the mesa and libglvnd ebuilds provided in the nvidia-testkit repo for full functionality.

   Important

Once the new drivers are installed, you will notice that eselect opengl will display xorg-x11. This is OK! With the new drivers, the libglvnd package now provides libGL and brokers the GL calls to the appropriate underlying hardware-specific library, making eselect opengl redundant. We may fix this is the production release so that eselect opengl shows glvnd instead, to avoid confusion.

The remainder of configuration should remain mostly the same as above where needed, consult NVIDIA's docs for details. Please contact TemptorSent on freenode IRC in #funtoo.