Difference between revisions of "Package:NVIDIA Linux Display Drivers"
m (sorry, more clarification) |
|||
(20 intermediate revisions by 4 users not shown) | |||
Line 4: | Line 4: | ||
}} | }} | ||
== Introduction == | == Introduction == | ||
NVIDIA | NVIDIA provides proprietary graphics drivers for Linux as binary blobs. The alternative open source driver is {{Package|x11-drivers/xf86-video-nouveau}}. | ||
{{warning|If you installed debian-sources with the binary USE flag you will need to blacklist the nouveau module | {{warning|If you installed debian-sources with the binary USE flag you will need to blacklist the nouveau module | ||
{{file|name=/etc/modprobe.d/nouveau-blacklist.conf|body= | |||
blacklist nouveau | |||
options nouveau modeset=0 | |||
alias nouveau off | |||
}}}} | |||
== Preparing to Install == | == Preparing to Install == | ||
=== Hardware compatibility and driver versions === | === 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 | 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"}} | |||
=== The required kernel options === | === The required kernel options === | ||
Line 27: | Line 25: | ||
[*] MTRR (Memory Type Range Register) support | [*] MTRR (Memory Type Range Register) support | ||
}} | }} | ||
{{kernelop|desc= | {{kernelop|desc= | ||
Device Drivers ---> | Device Drivers ---> | ||
Line 37: | Line 35: | ||
{{tip|An alternative is to [[uvesafb|uvesafb]] framebuffer, or vesa framebuffer which can be installed in parallel with nvidia-drivers }} | {{tip|An alternative is to [[uvesafb|uvesafb]] framebuffer, or vesa framebuffer which can be installed in parallel with nvidia-drivers }} | ||
{{warning|Installing nvidia-drivers outside of package manager as described below can be problematic. Use at own risk}} | |||
{{note|nVidia offers their Linux drivers directly from their website and for a while now offer these in a ready-to-run package. Visit the nVidia website, click the Driver link and fill in the questionaire to obtain the correct driver package for your nVidia video card. Download this package to a suitable location on your system. Next, kill the X-server so you're on the command line (cli) as the installer refuses to run if it detects the X-window system is running, become root with the su command and navigate to the location where you stored the package. Make the package executable with | |||
{{console|body= | |||
###i## chmod +x NVIDIA*.run | |||
}} | |||
Or type NV then hit the Tab key for easy completion of the file name. Ensure you've blacklisted the Nouveau drivers (see above), then execute the package with | |||
{{console|body= | |||
###i## sh ./NV*.run | |||
}}Again, the Tab key will complete the full package name. The program will unpack itself and start the installation of the nVidia driver. Follow instructions on the screen. Depending on the speed of your hardware, this may take a while and it might appear the program is stuck. It isn't, just needs some more time to finish. After installation, reboot your system. | |||
}} | |||
== Installation == | == Installation == | ||
Upgrade and/or configure <code>VIDEO_CARDS</code> | Upgrade and/or configure the <code>VIDEO_CARDS</code> flag to <code>nvidia</code> in <code>/etc/portage/[[make.conf]]</code>. | ||
<console> | <console> | ||
# ##i##nano /etc/make.conf | # ##i##nano /etc/portage/make.conf | ||
VIDEO_CARDS="nvidia" | VIDEO_CARDS="nvidia" | ||
</console> | </console> | ||
{{note|Installing | For older drivers, 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}} | |||
=== Emerging the package === | === Emerging the package === | ||
Line 63: | Line 78: | ||
###i## modprobe nvidia | ###i## modprobe nvidia | ||
</console> | </console> | ||
=== 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 {{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|body= | |||
# ##i## usermod -a -G video myusername | |||
}} | |||
=== Testing your Video Card === | === Testing your Video Card === | ||
Line 68: | Line 91: | ||
<console> | <console> | ||
$ ##i##glxinfo | grep direct | $ ##i##glxinfo | grep direct | ||
direct rendering: yes | |||
</console> | </console> | ||
Line 80: | Line 103: | ||
=== Integration with X Server === | === Integration with X Server === | ||
When your X server is installed | 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> | <console>###i## nvidia-xconfig</console> | ||
Line 90: | Line 113: | ||
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 <code>/etc/[[make.conf]]</code> so | 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 106: | Line 132: | ||
###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> | <console> | ||
# ##i##mkdir -p /etc/portage/ | ###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> | </console> | ||
Install the package, and include mesa so it is rebuilt as well, since we need the new version from nvidia-testkit: | |||
<console> | <console> | ||
# ##i## | ###i## emerge nvidia-drivers mesa | ||
</console> | </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}} |
Revision as of 19:36, April 22, 2019
NVIDIA Linux Display Drivers
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 as binary blobs. The alternative open source driver is x11-drivers/xf86-video-nouveau.
If you installed debian-sources with the binary USE flag you will need to blacklist the nouveau module
/etc/modprobe.d/nouveau-blacklist.conf
blacklist nouveau
options nouveau modeset=0
alias nouveau off
Preparing to Install
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!
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"
The required kernel options
[*] 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
An alternative is to uvesafb framebuffer, or vesa framebuffer which can be installed in parallel with nvidia-drivers
Installing nvidia-drivers outside of package manager as described below can be problematic. Use at own risk
nVidia offers their Linux drivers directly from their website and for a while now offer these in a ready-to-run package. Visit the nVidia website, click the Driver link and fill in the questionaire to obtain the correct driver package for your nVidia video card. Download this package to a suitable location on your system. Next, kill the X-server so you're on the command line (cli) as the installer refuses to run if it detects the X-window system is running, become root with the su command and navigate to the location where you stored the package. Make the package executable with
root # chmod +x NVIDIA*.run
Or type NV then hit the Tab key for easy completion of the file name. Ensure you've blacklisted the Nouveau drivers (see above), then execute the package with
root # sh ./NV*.runAgain, the Tab key will complete the full package name. The program will unpack itself and start the installation of the nVidia driver. Follow instructions on the screen. Depending on the speed of your hardware, this may take a while and it might appear the program is stuck. It isn't, just needs some more time to finish. After installation, reboot your system.
Installation
Upgrade and/or configure the VIDEO_CARDS
flag to nvidia
in /etc/portage/make.conf
.
root # nano /etc/portage/make.conf VIDEO_CARDS="nvidia"
For older drivers, 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.
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
Emerging the package
root # emerge x11-drivers/nvidia-drivers
When the installation is complete run modprobe nvidia module to read kernel memory.
root # lsmod | grep nvidia
If an update before remove the old module
root # rmmod nvidia root # modprobe nvidia
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
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.
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.