mirror of
https://github.com/glfs-book/glfs.git
synced 2025-07-20 18:22:18 +00:00
1789 lines
58 KiB
XML
1789 lines
58 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
|
|
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
|
|
<!ENTITY % general-entities SYSTEM "../../general.ent">
|
|
%general-entities;
|
|
|
|
<!ENTITY nvidia-download-http "https://us.download.nvidia.com/XFree86/Linux-x86_64/&nvidia-version;/NVIDIA-Linux-x86_64-&nvidia-version;.run">
|
|
]>
|
|
|
|
<sect1 id="nvidia" xreflabel="NVIDIA-&nvidia-version;">
|
|
<?dbhtml filename="nvidia.html"?>
|
|
|
|
<title>NVIDIA-&nvidia-version;</title>
|
|
|
|
<indexterm zone="nvidia">
|
|
<primary sortas="a-nvidia">NVIDIA</primary>
|
|
</indexterm>
|
|
|
|
<sect2 role="package">
|
|
<title>Introduction to NVIDIA</title>
|
|
|
|
<para>
|
|
The <application>NVIDIA</application> proprietary driver contains
|
|
firmware, kernel drivers, userland drivers pertaining to OpenGL,
|
|
Vulkan, and hardware acceleration, and provides useful utilites for
|
|
NVIDIA cards. If you don't have a NVIDIA GPU, skip to the next package.
|
|
</para>
|
|
|
|
<itemizedlist spacing="compact">
|
|
<listitem>
|
|
<para>
|
|
Recommended kernel version to use: linux-&nvidia-linux-version;
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
Download (HTTP): <ulink url="&nvidia-download-http;"/>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<bridgehead renderas="sect3">Additional Downloads</bridgehead>
|
|
<itemizedlist spacing="compact">
|
|
<listitem>
|
|
<para>
|
|
Required patch:
|
|
<ulink url="&patch-root;/nvidia/nvidia-&nvidia-version;-kernel_gpl_cachyos-1.patch"/>
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
<bridgehead renderas="sect3">NVIDIA Dependencies</bridgehead>
|
|
|
|
<bridgehead renderas="sect4">Required</bridgehead>
|
|
<para role="required">
|
|
&gbm;,
|
|
<xref linkend="libglvnd"/>, and
|
|
<xref linkend="xorg7-lib"/>
|
|
</para>
|
|
|
|
<bridgehead renderas="sect4">Recommended</bridgehead>
|
|
<para role="recommended">
|
|
<itemizedlist spacing="compact">
|
|
<listitem>
|
|
<para>
|
|
<ulink url="&slfs-website;/general/cuda.html">CUDA</ulink>
|
|
(for NVENC, NVDEC, Optical Flow, and other hardware
|
|
acceleration not provided by VDPAU; install after following this
|
|
page)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<ulink url="&blfs-svn;/x/gtk3.html">GTK-3</ulink> (for
|
|
<command>nvidia-settings</command>)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<xref linkend="libvdpau"/> (for using the VDPAU driver)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<xref linkend="libvk"/> (for using the Vulkan drivers)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<xref linkend="nvidia-egl"/> (for EGL driver support)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<xref linkend="wayland"/> (needed for Wayland support)
|
|
</para>
|
|
</listitem>
|
|
<listitem>
|
|
<para>
|
|
<xref linkend="xorg-server"/> (required for running
|
|
<command>nvidia-xconfig</command>, like in <xref
|
|
linkend="whatnow"/>)
|
|
</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
</para>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Preparing for the NVIDIA Installation</title>
|
|
|
|
<para>
|
|
First enable XFree86 DRI and Nouveau
|
|
<footnote><para>
|
|
Newer versions of
|
|
the NVIDIA drivers will fail to compile with TTY support unless a
|
|
graphics driver is included in the kernel. Nouveau is used here, though
|
|
alternate graphics drivers may also work.
|
|
</para></footnote>
|
|
support in the kernel and recompile if necessary.
|
|
</para>
|
|
|
|
<xi:include xmlns:xi="http://www.w3.org/2001/XInclude" href="nvidia-kernel.xml"/>
|
|
|
|
<important><para>
|
|
Build these drivers as kernel modules so that they can properly be
|
|
blacklisted.
|
|
</para></important>
|
|
|
|
<para>
|
|
Extract the <application>NVIDIA</application> driver runfile and
|
|
navigate to the extracted directory:
|
|
</para>
|
|
|
|
<screen><userinput>sh NVIDIA-Linux-x86_64-&nvidia-version;.run -x &&
|
|
cd NVIDIA-Linux-x86_64-&nvidia-version;</userinput></screen>
|
|
|
|
<para>
|
|
Apply a patch for the proprietary kernel module type for the driver for
|
|
compatibility with <application>linux-6.15</application>:
|
|
</para>
|
|
|
|
<screen><userinput>patch -d kernel -Np1 -i ../../nvidia-&nvidia-version;-kernel_gpl_cachyos-1.patch</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Installation of the NVIDIA Kernel Modules</title>
|
|
|
|
<note><para>
|
|
Building the kernel modules in a chroot will likely cause a build
|
|
failure. It is heavily recommended to build them when booted in the LFS
|
|
target to avoid <command>uname -r</command> reporting the kernel version
|
|
of the host rather than the target leading to build files being unable to
|
|
be found.
|
|
</para></note>
|
|
|
|
<para>
|
|
Now you will need to build the kernel modules for the driver. There are
|
|
two types: <emphasis role="bold">open</emphasis> and
|
|
<emphasis role="bold">proprietary</emphasis>. If you have the
|
|
NVIDIA Grace Hopper or NVIDIA Blackwell cards, you must
|
|
compile the <emphasis role="bold">open</emphasis> kernel modules.
|
|
If you have a Turing, Ampere, Ada Lovelace,
|
|
or Hopper card, it is recommended to now build the
|
|
<emphasis role="bold">open</emphasis> kernel modules.
|
|
If you have a Maxwell, Pascal, or Volta card, build the
|
|
<emphasis role="bold">proprietary</emphasis> kernel modules.
|
|
If you are using both an older and newer card, but not the newest cards,
|
|
build the <emphasis role="bold">proprietary</emphasis> kernel modules.
|
|
</para>
|
|
|
|
<para>
|
|
If you are going to build the <emphasis role="bold">open</emphasis>
|
|
kernel modules, set the <envar>NVIDIA_KERNEL_TYPE</envar> variable:
|
|
</para>
|
|
|
|
<screen><userinput>export NVIDIA_KERNEL_TYPE="kernel-open"</userinput></screen>
|
|
|
|
<para>
|
|
If you are going to instead build the <emphasis
|
|
role="bold">proprietary</emphasis> kernel modules, set the
|
|
<envar>NVIDIA_KERNEL_TYPE</envar> variable:
|
|
</para>
|
|
|
|
<!-- proprietary is the exception, not the rule -->
|
|
<screen><computeroutput>export NVIDIA_KERNEL_TYPE="kernel"</computeroutput></screen>
|
|
|
|
<para>
|
|
There will be 5 or 6 kernel modules that will be built. Depending on your
|
|
use case, you can skip building a module or two. The UVM (Unified Virtual
|
|
Memory) module is for use with <ulink
|
|
url="&slfs-website;/general/cuda.html">CUDA</ulink>. If you won't use
|
|
it, nor wish to use its capabilities, you can skip building the UVM
|
|
kernel module. There is also the PeerMem module which is for datacenters.
|
|
For gaming, it can safely be disabled.
|
|
</para>
|
|
|
|
<para>
|
|
For UVM, the module is named <computeroutput>nvidia-uvm</computeroutput>.
|
|
For PeerMem, it will be named
|
|
<computeroutput>nvidia-peermem</computeroutput>. To skip these, add the
|
|
module names to the <envar>NV_EXCLUDE_KERNEL_MODULES</envar> for the
|
|
<command>make</command> command. The variable should be seperated, as
|
|
such:
|
|
<computeroutput>NV_EXCLUDE_KERNEL_MODULES="nvidia-uvm nvidia-peermem"</computeroutput>.
|
|
The <command>make</command> command will have the variable set to
|
|
nothing. Add to it as you see fit.
|
|
</para>
|
|
|
|
<para>
|
|
Now build the kernel modules by running the following commands below
|
|
(the commands below will navigate to the right directory based on what
|
|
<envar>NVIDIA_KERNEL_TYPE</envar> is set to):
|
|
</para>
|
|
|
|
<screen><userinput>pushd $NVIDIA_KERNEL_TYPE &&
|
|
make NV_EXCLUDE_KERNEL_MODULES=</userinput></screen>
|
|
|
|
<note>
|
|
<para>
|
|
You may encounter various build failures. This usually happens because
|
|
the kernel version you're using is <quote>too high.</quote> If this
|
|
happens, it may be necessary to downgrade the kernel to a lower
|
|
version. When a new driver release happens, the driver will then most
|
|
likely support the kernel version at the time. At the top of this
|
|
section, the recommended kernel version to use with this driver is
|
|
mentioned to ensure that a build failure does not occur. The current
|
|
kernel version used for kernel parameters and such in this book is
|
|
linux-&linux-version;.
|
|
</para>
|
|
</note>
|
|
|
|
<important>
|
|
<para>
|
|
When you update the kernel, you will also need to reinstall the
|
|
<application>NVIDIA</application> kernel modules.
|
|
</para>
|
|
|
|
<para>
|
|
This is because there is glue when kernel modules are built. This glue
|
|
doesn't matter too much with first party modules (modules in the kernel
|
|
source tree) as the modules are updated at the same time the kernel is.
|
|
At that point, there is new glue holding them together. However, when
|
|
it comes to third party modules, they aren't updated when the kernel
|
|
updates, so this glue the third party modules had on the kernel breaks.
|
|
This leads to broken kernel modules. This also applies if you stay on
|
|
the same kernel version but change some options, this can also break
|
|
the glue.
|
|
</para>
|
|
|
|
<para>
|
|
Be sure that when you reinstall the kernel modules, make sure you are
|
|
using the new kernel and have the kernel source you built from.
|
|
Otherwise the modules will fail to build.
|
|
</para>
|
|
|
|
<para>
|
|
When you upgrade the kernel, you will not have to reinstall the
|
|
driver software, just the kernel modules.
|
|
</para>
|
|
</important>
|
|
|
|
<para>
|
|
Now as the &root; user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>for mod in nvidia{,-drm,-modeset,-peermem,-uvm}; do
|
|
rm -vf /usr/lib/modules/$(uname -r)/kernel/drivers/video/$mod.ko
|
|
done
|
|
make modules_install &&
|
|
popd</userinput></screen>
|
|
|
|
<para>
|
|
Install the firmware as the &root; user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>rm -rvf /usr/lib/firmware/nvidia/[0-9]* &&
|
|
mkdir -pv /usr/lib/firmware/nvidia/&nvidia-version; &&
|
|
cp -v firmware/*.bin /usr/lib/firmware/nvidia/&nvidia-version;</userinput></screen>
|
|
|
|
<para>
|
|
Finally, unset the <envar>NVIDIA_KERNEL_TYPE</envar> variable:
|
|
</para>
|
|
|
|
<screen><userinput>unset NVIDIA_KERNEL_TYPE</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2>
|
|
<title>Making a NVIDIA Software Installation Script</title>
|
|
|
|
<note><para>
|
|
Skip to <xref linkend="nvidia-install"/> if you already made an install
|
|
script.
|
|
</para></note>
|
|
|
|
<para>
|
|
There is a lot of software this driver provides. A portion of it
|
|
depending on your usecase can be safely skipped. To offer
|
|
customizability without complexity, the following section is dedicated to
|
|
walking you through making a custom install script to install only what
|
|
you need.
|
|
</para>
|
|
|
|
<para>
|
|
First make a starter script so that it can be added to:
|
|
</para>
|
|
|
|
<screen><userinput>cat > nvidia-install-soft << "EOF"
|
|
<literal>#!/bin/sh
|
|
# Install script for NVIDIA driver software, not including kernel modules.
|
|
# Script modules made by
|
|
# ©holder;, ©rightdate;.
|
|
|
|
NV_VERSION=$(basename $PWD | sed 's/NVIDIA-Linux-x86_64-//')
|
|
|
|
nvidia_symlink() {
|
|
pushd $(dirname $1) > /dev/null
|
|
|
|
origin=$(basename $1)
|
|
if [ $origin = "libOpenCL" ]; then
|
|
VERSION="1.0.0"
|
|
else
|
|
VERSION=$NV_VERSION
|
|
fi
|
|
|
|
soname=$(objdump -p $origin.so.$VERSION |
|
|
grep 'SONAME' | awk '{print $2}')
|
|
|
|
if [ -n $soname ]; then
|
|
if [ $origin.so.$VERSION != $soname ]; then
|
|
ln -sfv $origin.so.$VERSION $soname
|
|
fi
|
|
ln -sfv $soname $origin.so
|
|
fi
|
|
|
|
popd > /dev/null
|
|
}
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
<!-- We have to use -f for ln or else $soname will not link to the current
|
|
library (*.so.$VERSION). Furthermore, the soname may be same as
|
|
*.so.$VERSION, but $orign.so still needs to be made. We have to force it
|
|
or else *.so will link to the previous library.
|
|
"Yes, this is stupid!"
|
|
- Heavy from "The Heavy is Dead" -->
|
|
|
|
<para>
|
|
Each subsection of this section will have an explanation of a piece of
|
|
the driver you may need. Along with that, it might have two subsections:
|
|
a 64-bit and lib32 section. If you're not doing multilib, you can skip
|
|
the lib32 sections and only follow the 64-bit ones. Each block of
|
|
commands will add to the script.
|
|
</para>
|
|
|
|
<sect3>
|
|
<title>Mandatory Software</title>
|
|
|
|
<para>
|
|
Most of this software is needed by other components in this driver,
|
|
while the rest of it helps with loading the driver.
|
|
</para>
|
|
|
|
<sect4>
|
|
<title>64-bit</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing mandatory software - 64-bit"
|
|
mkdir -pv /usr/lib/gbm &&
|
|
mkdir -pv /usr/share/nvidia &&
|
|
nvidia_lib=(
|
|
libnvidia-cfg
|
|
libnvidia-eglcore
|
|
libnvidia-glcore
|
|
libnvidia-glsi
|
|
libnvidia-glvkspirv
|
|
libnvidia-gpucomp
|
|
libnvidia-ml
|
|
libnvidia-pkcs11
|
|
libnvidia-tls
|
|
libnvidia-allocator
|
|
)
|
|
for lib in ${nvidia_lib[@]}; do
|
|
cp -v $lib.so* /usr/lib &&
|
|
nvidia_symlink /usr/lib/$lib || exit
|
|
done &&
|
|
ln -svrf /usr/lib/libnvidia-allocator.so \
|
|
/usr/lib/gbm/nvidia-drm_gbm.so &&
|
|
install -vm4755 nvidia-modprobe /usr/bin &&
|
|
cp -v nvidia-application-profiles* \
|
|
/usr/share/nvidia &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>lib32</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing mandatory software - lib32"
|
|
mkdir -pv /usr/lib32/gbm &&
|
|
nvidia_lib=(
|
|
libnvidia-eglcore
|
|
libnvidia-glcore
|
|
libnvidia-glsi
|
|
libnvidia-glvkspirv
|
|
libnvidia-gpucomp
|
|
libnvidia-ml
|
|
libnvidia-tls
|
|
libnvidia-allocator
|
|
)
|
|
for lib in ${nvidia_lib[@]}; do
|
|
cp -v 32/$lib.so* /usr/lib32 &&
|
|
nvidia_symlink /usr/lib32/$lib || exit
|
|
done &&
|
|
ln -svrf /usr/lib32/libnvidia-allocator.so \
|
|
/usr/lib32/gbm/nvidia-drm_gbm.so &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>X11 Drivers</title>
|
|
|
|
<para>
|
|
Add to the script if you are going to use <xref
|
|
linkend="xorg-server"/> or <xref linkend="xwayland"/>.
|
|
</para>
|
|
|
|
<sect4>
|
|
<title>64-bit</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing X11 drivers - 64-bit"
|
|
mkdir -pv /usr/lib/xorg/modules/{drivers,extensions} &&
|
|
mkdir -pv /usr/share/X11/xorg.conf.d &&
|
|
cp -v nvidia_drv.so* \
|
|
/usr/lib/xorg/modules/drivers &&
|
|
cp -v libglxserver_nvidia.so* \
|
|
/usr/lib/xorg/modules/extensions &&
|
|
ln -svf libglxserver_nvidia.so.*.*.* \
|
|
/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so.1 &&
|
|
ln -svf libglxserver_nvidia.so.1 \
|
|
/usr/lib/xorg/modules/extensions/libglxserver_nvidia.so &&
|
|
cp -v libGLX_nvidia.so* \
|
|
libnvidia-fbc.so* \
|
|
/usr/lib &&
|
|
nvidia_symlink /usr/lib/libGLX_nvidia &&
|
|
nvidia_symlink /usr/lib/libnvidia-fbc &&
|
|
cp -v nvidia-drm-outputclass.conf \
|
|
/usr/share/X11/xorg.conf.d &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>lib32</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing X11 drivers - lib32"
|
|
cp -v 32/libGLX_nvidia.so* \
|
|
32/libnvidia-fbc.so* \
|
|
/usr/lib32 &&
|
|
nvidia_symlink /usr/lib32/libGLX_nvidia &&
|
|
nvidia_symlink /usr/lib32/libnvidia-fbc &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>EGL Drivers</title>
|
|
|
|
<para>
|
|
Add to the script if you are going to use EGL (like with <xref
|
|
linkend="wayland"/>).
|
|
</para>
|
|
|
|
<sect4>
|
|
<title>64-bit</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing EGL drivers - 64-bit"
|
|
mkdir -pv /usr/share/glvnd/egl_vendor.d &&
|
|
cp -v libEGL_nvidia.so* \
|
|
/usr/lib &&
|
|
nvidia_symlink \
|
|
/usr/lib/libEGL_nvidia &&
|
|
cp -v libnvidia-wayland-client.so* \
|
|
/usr/lib &&
|
|
nvidia_symlink \
|
|
/usr/lib/libnvidia-wayland-client &&
|
|
cp -v 10_nvidia.json \
|
|
/usr/share/glvnd/egl_vendor.d &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>lib32</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing EGL drivers - lib32"
|
|
cp -v 32/libEGL_nvidia.so* /usr/lib32 &&
|
|
nvidia_symlink /usr/lib32/libEGL_nvidia &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>GLES v2 and v3 Driver</title>
|
|
|
|
<para>
|
|
Add to the script if you didn't disable OpenGL ES v2 and v3 in <xref
|
|
linkend="libglvnd"/>.
|
|
</para>
|
|
|
|
<sect4>
|
|
<title>64-bit</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the GLES v2 and v3 driver - 64-bit"
|
|
cp -v libGLESv2_nvidia.so* \
|
|
/usr/lib &&
|
|
nvidia_symlink /usr/lib/libGLESv2_nvidia &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>lib32</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the GLES v2 and v3 driver - lib32"
|
|
cp -v 32/libGLESv2_nvidia.so* \
|
|
/usr/lib32 &&
|
|
nvidia_symlink /usr/lib32/libGLESv2_nvidia &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Vulkan Configuration File</title>
|
|
|
|
<para>
|
|
Add to the script if you are going to use Vulkan (highly recommended).
|
|
A prerequisite is following the <application>X11</application>
|
|
section.
|
|
</para>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the Vulkan configuration file"
|
|
mkdir -pv /usr/share/vulkan/icd.d &&
|
|
cp -v nvidia_icd.json /usr/share/vulkan/icd.d &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
<para>
|
|
The Vulkan driver according to the ICD configuration file is <filename
|
|
class="libraryfile">libGLX_nvidia</filename>. If you installed the EGL
|
|
drivers, you can make the Vulkan driver use EGL instead of GLX.
|
|
</para>
|
|
|
|
<important><para>
|
|
The command below can result in <application>Steam</application> games
|
|
that are ran through Proton to crash. It may also cause other issues.
|
|
The EGL Vulkan driver does not allow for GLX calls, so if you need to
|
|
use an application that uses GLX via Vulkan, do not add to the script
|
|
to change the driver. If you want to do so anyway, add to the script.
|
|
</para>
|
|
<!-- Disincentivize running this -->
|
|
<screen role="nodump"><computeroutput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Making the Vulkan driver use EGL instead of GLX"
|
|
sed -i 's/GLX/EGL/' \
|
|
/usr/share/vulkan/icd.d/nvidia_icd.json &&
|
|
</literal>
|
|
EOF</computeroutput></screen></important>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>VDPAU Driver</title>
|
|
|
|
<para>
|
|
Add to the script if you installed <xref linkend="libvdpau"/>.
|
|
</para>
|
|
|
|
<sect4>
|
|
<title>64-bit</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the VDPAU driver - 64-bit"
|
|
cp -v libvdpau_nvidia.so* \
|
|
/usr/lib/vdpau &&
|
|
nvidia_symlink /usr/lib/vdpau/libvdpau_nvidia &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>lib32</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the VDPAU driver - lib32"
|
|
cp -v 32/libvdpau_nvidia.so* \
|
|
/usr/lib32/vdpau &&
|
|
nvidia_symlink /usr/lib32/vdpau/libvdpau_nvidia &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>OpenCL Driver and Loader</title>
|
|
|
|
<para>
|
|
Add to the script if you want <ulink
|
|
url="https://wiki.archlinux.org/title/GPGPU#OpenCL">OpenCL</ulink>
|
|
support. This will also install the OpenCL loader.
|
|
</para>
|
|
|
|
<sect4>
|
|
<title>64-bit</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the OpenCL driver and loader - 64-bit"
|
|
cp -v libOpenCL.so* \
|
|
/usr/lib &&
|
|
cp -v libnvidia-opencl.so* \
|
|
/usr/lib &&
|
|
nvidia_symlink /usr/lib/libOpenCL &&
|
|
nvidia_symlink /usr/lib/libnvidia-opencl &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>lib32</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the OpenCL driver and loader - lib32"
|
|
cp -v 32/libOpenCL.so* \
|
|
/usr/lib32 &&
|
|
cp -v 32/libnvidia-opencl.so* \
|
|
/usr/lib32 &&
|
|
nvidia_symlink /usr/lib32/libOpenCL &&
|
|
nvidia_symlink /usr/lib32/libnvidia-opencl &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>CUDA Drivers</title>
|
|
|
|
<para>
|
|
Add to the script if you want to use <ulink
|
|
url="&slfs-website;/general/cuda.html">CUDA</ulink> or applications
|
|
that use it.
|
|
</para>
|
|
|
|
<sect4>
|
|
<title>64-bit</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the CUDA drivers - 64-bit"
|
|
nvidia_lib=(
|
|
libcuda
|
|
libcudadebugger
|
|
libnvidia-encode
|
|
libnvidia-opticalflow
|
|
libnvidia-ptxjitcompiler
|
|
libnvidia-nvvm
|
|
libnvcuvid
|
|
)
|
|
for lib in ${nvidia_lib[@]}; do
|
|
cp -v $lib.so* /usr/lib &&
|
|
nvidia_symlink /usr/lib/$lib || exit
|
|
done &&
|
|
cp -v libnvidia-api* /usr/lib &&
|
|
ln -svf /usr/lib/libnvidia-api.so.1 \
|
|
/usr/lib/libnvidia-api.so &&
|
|
cp -v libnvidia-nvvm70* /usr/lib &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
<sect4>
|
|
<title>lib32</title>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the CUDA drivers - lib32"
|
|
nvidia_lib=(
|
|
libcuda
|
|
libnvidia-encode
|
|
libnvidia-ptxjitcompiler
|
|
libnvidia-nvvm
|
|
libnvcuvid
|
|
)
|
|
for lib in ${nvidia_lib[@]}; do
|
|
cp -v 32/$lib.so* /usr/lib32 &&
|
|
nvidia_symlink /usr/lib32/$lib || exit
|
|
done &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect4>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>NGX Drivers</title>
|
|
|
|
<para>
|
|
NGX implements DLSS. Add to the script if you want DLSS.
|
|
</para>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the NGX drivers"
|
|
mkdir -pv /usr/lib/nvidia/wine &&
|
|
cp -v libnvidia-ngx.so* \
|
|
/usr/lib &&
|
|
nvidia_symlink /usr/lib/libnvidia-ngx &&
|
|
install -vm755 *nvngx*.dll \
|
|
/usr/lib/nvidia/wine &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Raytracing Drivers</title>
|
|
|
|
<para>
|
|
If you want to enable raytracing support, add to the script.
|
|
</para>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing the raytracing drivers"
|
|
mkdir -pv /usr/share/nvidia &&
|
|
cp -v libnvidia-rtcore.so* \
|
|
libnvoptix.so* \
|
|
/usr/lib &&
|
|
nvidia_symlink /usr/lib/libnvidia-rtcore &&
|
|
nvidia_symlink /usr/lib/libnvoptix &&
|
|
install -vm755 nvoptix.bin \
|
|
/usr/share/nvidia &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect3>
|
|
|
|
<!-- Maybe should be in SLFS? -->
|
|
<sect3>
|
|
<title>NVIDIA-Settings</title>
|
|
|
|
<para>
|
|
Add to the script if you want <command>nvidia-settings</command> which
|
|
can let you change settings like framerate in the Xorg server.
|
|
</para>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing NVIDIA-Settings"
|
|
mkdir -pv /usr/share/applications \
|
|
/usr/share/pixmaps &&
|
|
cp -v libnvidia-gtk* /usr/lib &&
|
|
nvidia_symlink /usr/lib/libnvidia-gtk2 &&
|
|
nvidia_symlink /usr/lib/libnvidia-gtk3 &&
|
|
install -vm755 nvidia-settings /usr/bin &&
|
|
cp -v nvidia-settings.desktop \
|
|
/usr/share/applications &&
|
|
cp -v nvidia-settings.png \
|
|
/usr/share/pixmaps &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>NVIDIA-XConfig</title>
|
|
|
|
<para>
|
|
Add to the script if you want <command>nvidia-xconfig</command> which
|
|
can generate X11 configuration files.
|
|
</para>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing NVIDIA-XConfig"
|
|
install -vm755 nvidia-xconfig /usr/bin &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>NVIDIA-SMI</title>
|
|
|
|
<para>
|
|
Add to the script if you want <command>nvidia-smi</command> which grabs
|
|
information about GPU loads, temperatures, etc. and display it on the
|
|
command line.
|
|
</para>
|
|
|
|
<screen><userinput>cat >> nvidia-install-soft << "EOF"
|
|
<literal>echo "Installing NVIDIA-SMI"
|
|
install -vm755 nvidia-smi /usr/bin &&
|
|
</literal>
|
|
EOF</userinput></screen>
|
|
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>Installing the Install Script</title>
|
|
|
|
<para>
|
|
Now that you have a custom install script made, it's time to install it
|
|
to the system so it can be ran whenever you update the driver. Do so
|
|
now as the &root; user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>cat >> nvidia-install-soft << "EOF" &&
|
|
<literal># Probe all modules and recreate modules.dep and map files to ensure NVIDIA
|
|
# loads at boot.
|
|
depmod -a &&
|
|
|
|
echo "Installation of NVIDIA driver software complete!"</literal>
|
|
EOF
|
|
|
|
install -vm755 nvidia-install-soft /usr/sbin</userinput></screen>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="nvidia-install" role="installation">
|
|
<title>Installing the NVIDIA Driver Software</title>
|
|
|
|
<note><para>
|
|
If you have an existing installation, it may be a good idea to follow
|
|
<xref linkend="nvidia-uninstalling"/> first before going through this
|
|
section to remove some cruft and leftover libraries. This is not
|
|
necessary for the most part though.
|
|
</para></note>
|
|
|
|
<para>
|
|
After you have made a custom install script, run it in a TTY or chroot as
|
|
the &root; user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>/sbin/nvidia-install-soft</userinput></screen>
|
|
|
|
<para>
|
|
If you want to install the documentation, do so now as the &root; user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>mkdir -pv /usr/share/doc/nvidia-&nvidia-version; &&
|
|
cp -vR html /usr/share/doc/nvidia-&nvidia-version;</userinput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2 id="nvidia-uninstalling">
|
|
<title>Uninstalling the NVIDIA Driver</title>
|
|
|
|
<para>
|
|
If something went wrong with the install process, you want to switch to
|
|
another driver without keeping this driver, or want to remove a previous
|
|
installation before installing a new driver, create the following script
|
|
as the &root; user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>cat > nvidia-uninstall << "EOF" &&
|
|
<literal>#!/bin/bash
|
|
# This script uninstalls the NVIDIA driver.
|
|
# Made by ©holder;, ©rightdate;.
|
|
PRESERVE_FIRMWARE=0
|
|
PRESERVE_KERNEL=0
|
|
PRESERVE_PROG=0
|
|
PRESERVE_LIB=0
|
|
while [ $# -gt 0 ]; do
|
|
case "$1" in
|
|
--preserve-firmware )
|
|
echo "Keeping firmware."
|
|
PRESERVE_FIRMWARE=1
|
|
;;
|
|
|
|
--preserve-kernel-modules )
|
|
echo "Keeping kernel modules."
|
|
PRESERVE_KERNEL=1
|
|
;;
|
|
|
|
--preserve-programs )
|
|
echo "Keeping programs."
|
|
PRESERVE_PROG=1
|
|
;;
|
|
|
|
--preserve-libraries )
|
|
echo "Keeping libraries."
|
|
PRESERVE_LIB=1
|
|
;;
|
|
|
|
--help | -h )
|
|
echo "Usage: nvidia-uninstall [OPTION]"
|
|
echo " --preserve-firmware Do not delete firmware"
|
|
echo " --preserve-kernel-modules Do not delete kernel modules"
|
|
echo " --preserve-programs Do not delete programs"
|
|
echo " --preserve-libraries Do not delete libraries"
|
|
echo " -h, --help Display this help and exit"
|
|
exit
|
|
;;
|
|
|
|
* )
|
|
echo "Unknown option: $1"
|
|
;;
|
|
esac
|
|
shift 1
|
|
done
|
|
|
|
echo "Uninstalling the NVIDIA driver..."
|
|
nvidia_lib=(
|
|
libnvidia-cfg
|
|
libnvidia-eglcore
|
|
libnvidia-glcore
|
|
libnvidia-glsi
|
|
libnvidia-glvkspirv
|
|
libnvidia-gpucomp
|
|
libnvidia-ml
|
|
libnvidia-pkcs11
|
|
libnvidia-rtcore
|
|
libnvidia-tls
|
|
libnvidia-allocator
|
|
libGLX_nvidia
|
|
libnvidia-fbc
|
|
libEGL_nvidia
|
|
libnvidia-wayland-client
|
|
libGLESv2_nvidia
|
|
libOpenCL
|
|
libnvidia-opencl
|
|
libcuda
|
|
libcudadebugger
|
|
libnvidia-encode
|
|
libnvidia-opticalflow
|
|
libnvidia-ptxjitcompiler
|
|
libnvidia-nvvm
|
|
libnvidia-nvvm70
|
|
libnvcuvid
|
|
libnvidia-api
|
|
libnvidia-ngx
|
|
libnvoptix
|
|
libnvidia-gtk2
|
|
libnvidia-gtk3
|
|
)
|
|
|
|
rm -rvf /usr/share/doc/nvidia* &&
|
|
if [ "$PRESERVE_FIRMWARE" = "0" ]; then
|
|
rm -rvf /usr/lib/firmware/nvidia/[0-9]*
|
|
fi
|
|
|
|
if [ "$PRESERVE_LIB" = "0" ]; then
|
|
rm -rvf /usr/lib/nvidia &&
|
|
rm -vf /usr/lib{,32}/gbm/nvidia-drm_gbm.so &&
|
|
rm -vf /usr/lib/xorg/modules/drivers/nvidia_drv.so* &&
|
|
rm -vf /usr/lib/xorg/modules/extensions/libglxserver_nvidia.so* &&
|
|
rm -vf /usr/lib{,32}/vdpau/libvdpau_nvidia.so* &&
|
|
rm -vf /usr/share/glvnd/egl_vendor.d/10_nvidia.json &&
|
|
rm -vf /usr/share/vulkan/icd.d/nvidia_icd.json &&
|
|
rm -vf /usr/share/X11/xorg.conf.d/nvidia-drm-outputclass.conf &&
|
|
rm -rvf /usr/share/nvidia &&
|
|
for lib in ${nvidia_lib[@]}; do
|
|
rm -vf /usr/lib{,32}/$lib.so*
|
|
done
|
|
fi
|
|
|
|
if [ "$PRESERVE_PROG" = "0" ]; then
|
|
for bin in nvidia-{modprobe,settings,smi,xconfig}; do
|
|
rm -vf /usr/{,s}bin/$bin
|
|
done &&
|
|
rm -vf /usr/share/applications/nvidia-settings.desktop &&
|
|
rm -vf /usr/share/pixmaps/nvidia-settings.png
|
|
fi
|
|
|
|
if [ "$PRESERVE_KERNEL" = "0" ]; then
|
|
for mod in nvidia{,-drm,-modeset,-peermem,-uvm}; do
|
|
rm -vf /usr/lib/modules/$(uname -r)/kernel/drivers/video/$mod.ko
|
|
done
|
|
fi
|
|
|
|
depmod -a &&
|
|
echo "Uninstallation complete!"
|
|
echo "Whitelist Nouveau to have a working framebuffer!"</literal>
|
|
EOF
|
|
|
|
install -vm755 nvidia-uninstall /usr/sbin</userinput></screen>
|
|
|
|
<para>
|
|
Now run it in a TTY or chroot whenever you need to as the &root; user:
|
|
</para>
|
|
|
|
<screen role="nodump"><computeroutput>/sbin/nvidia-uninstall</computeroutput></screen>
|
|
|
|
</sect2>
|
|
|
|
<sect2 role="configuration">
|
|
<title>Configuring NVIDIA</title>
|
|
|
|
<sect3 id="nvidia-config">
|
|
<title>Config Files</title>
|
|
<para>
|
|
<filename>/usr/lib/modprobe.d/nvfb.conf</filename>
|
|
</para>
|
|
<para>
|
|
<filename>/usr/lib/modprobe.d/nvidia_drm.conf</filename>
|
|
</para>
|
|
<para>
|
|
<filename>/usr/lib/modprobe.d/nvidia.conf</filename>
|
|
</para>
|
|
</sect3>
|
|
|
|
<sect3>
|
|
<title>List of Packages With Issues</title>
|
|
|
|
<para>
|
|
Using this driver can come with compromises. So far, these issues seem
|
|
limited to Wayland, desktop environments, and display managers. The
|
|
list below documents the known packages that have issues with this
|
|
driver.
|
|
</para>
|
|
|
|
<itemizedlist>
|
|
<listitem revision="sysv">
|
|
<para><ulink url="&blfs-svn;/x/gdm.html">GDM</ulink>: Using this
|
|
package on SysVinit systems will result in failure as GDM does not
|
|
want to use Wayland for NVIDIA GPUs, but a permission issue with SysV
|
|
prevents X11 from being used. You must launch
|
|
<ulink url="&blfs-svn;/gnome/mutter.html">Mutter</ulink> or
|
|
<ulink url="&blfs-svn;/gnome/gnome-session.html">gnome-session</ulink>
|
|
through the terminal instead. Read the Mutter entry.</para>
|
|
</listitem>
|
|
<listitem revision="sysv"><para>
|
|
<ulink url="&blfs-svn;/gnome/gnome-session.html">gnome-session</ulink>:
|
|
Only the Wayland version can be used right now and cannot be
|
|
launched via GDM.
|
|
</para></listitem>
|
|
<listitem>
|
|
<para><ulink url="&blfs-svn;/gnome/mutter.html">Mutter</ulink>:
|
|
Compile this package with
|
|
<parameter>-D wayland_eglstream=true</parameter> and
|
|
<parameter>-D egl_device=true</parameter> to enable launching with
|
|
Wayland. Ensure the <xref linkend="nvidia-egl"/> are
|
|
installed.</para>
|
|
<para revision="sysv">On SysVinit systems, Mutter can only be
|
|
launched via a TTY or a display manager other than GDM if using X11
|
|
as of now.</para>
|
|
</listitem>
|
|
</itemizedlist>
|
|
|
|
</sect3>
|
|
|
|
<sect3><title>Configuration Information</title>
|
|
|
|
<para>
|
|
Nouveau and NVIDIAFB support was compiled into the kernel to make the
|
|
NVIDIA kernel modules build successfully. However, Nouveau and NVIDIAFB
|
|
conflict with the NVIDIA kernel modules, so they should be blacklisted.
|
|
</para>
|
|
|
|
<para>
|
|
As the &root; user, create the file
|
|
<filename>/usr/lib/modprobe.d/nvfb.conf</filename> to blacklist Nouveau
|
|
and NVIDIAFB:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>mkdir -pv /usr/lib/modprobe.d &&
|
|
cat > /usr/lib/modprobe.d/nvfb.conf << "EOF"
|
|
<literal># Begin /usr/lib/modprobe.d/nvfb.conf
|
|
|
|
blacklist nouveau
|
|
blacklist nvidiafb
|
|
|
|
# End /usr/lib/modprobe.d/nvfb.conf</literal>
|
|
EOF</userinput></screen>
|
|
|
|
<para>
|
|
The DRM kernel module does not use modesetting by default which is
|
|
needed by Wayland compositors. Make it use modesetting as the &root;
|
|
user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>cat > /usr/lib/modprobe.d/nvidia_drm.conf << "EOF"
|
|
<literal># Begin /usr/lib/modprobe.d/nvidia_drm.conf
|
|
|
|
options nvidia_drm modeset=1
|
|
|
|
# End /usr/lib/modprobe.d/nvidia_drm.conf</literal>
|
|
EOF</userinput></screen>
|
|
|
|
<para>
|
|
When the GPU sleeps/hibernates, it will lose all memory allocations by
|
|
default. You can prevent this by setting two options for the NVIDIA
|
|
module as the &root; user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>cat > /usr/lib/modprobe.d/nvidia.conf << "EOF"
|
|
<literal># Begin /usr/lib/modprobe.d/nvidia.conf
|
|
|
|
options nvidia NVreg_PreserveVideoMemoryAllocations=1
|
|
options nvidia NVreg_TemporaryFilePath=/var/tmp
|
|
|
|
# End /usr/lib/modprobe.d/nvidia.conf</literal>
|
|
EOF</userinput></screen>
|
|
|
|
<para>
|
|
Furthermore, this driver does not install DRI
|
|
<footnote><para>
|
|
Direct Rendering Infrastructure.
|
|
</para></footnote>
|
|
drivers or driver stubs. Likewise, it does not install a
|
|
<application>pkg-config</application> file saying where to find the
|
|
associated files. The files aren't needed with this driver. However,
|
|
some applications expect the <application>pkg-config</application> file
|
|
to exist, namely <xref linkend="xorg-server"/>. Create one now as the
|
|
&root; user:
|
|
</para>
|
|
|
|
<screen role="root"><userinput>cat > /usr/lib/pkgconfig/dri.pc << "EOF"
|
|
<literal>prefix=/usr
|
|
includedir=${prefix}/include
|
|
|
|
dridriverdir=/usr/lib/dri
|
|
|
|
Name: dri
|
|
Description: Direct Rendering Infrastructure
|
|
Version: &nvidia-version;
|
|
Requires.private: libdrm >= 2.4.109
|
|
Cflags: -I${includedir}</literal>
|
|
EOF</userinput></screen>
|
|
|
|
<para>
|
|
Applications that do require this file typically will not link against
|
|
any library in <filename class="libraryfile">/usr/lib/dri</filename>.
|
|
If you are worried that an application will try to link against
|
|
non-existent libraries, you can compile <xref linkend="mesa"/> to get
|
|
these libraries and a real <application>pkg-config</application> file.
|
|
Note that those libraries will not be used when this driver is in use.
|
|
</para>
|
|
|
|
<note><para>
|
|
Now you should skip to <xref linkend="xcb-utils"/>.
|
|
</para></note>
|
|
|
|
</sect3>
|
|
|
|
</sect2>
|
|
|
|
<sect2 role="content">
|
|
<title>Contents</title>
|
|
|
|
<segmentedlist>
|
|
<segtitle>Installed Programs</segtitle>
|
|
<segtitle>Installed Firmware</segtitle>
|
|
<segtitle>Installed Libraries</segtitle>
|
|
<segtitle>Installed Directories</segtitle>
|
|
|
|
<seglistitem>
|
|
<seg>
|
|
nvidia-install-soft,
|
|
nvidia-modprobe,
|
|
nvidia-settings,
|
|
nvidia-smi,
|
|
nvidia-uninstall, and
|
|
nvidia-xconfig
|
|
</seg>
|
|
<seg>
|
|
gsp_ga10x.bin and
|
|
gsp_tu10x.bin
|
|
</seg>
|
|
<seg>
|
|
libcudadebugger,
|
|
libcuda,
|
|
libEGL_nvidia,
|
|
libGLESv2_nvidia,
|
|
libGLX_nvidia,
|
|
libglxserver_nvidia,
|
|
libnvcuvid,
|
|
libnvoptix,
|
|
libnvidia-allocator,
|
|
libnvidia-api,
|
|
libnvidia-cfg,
|
|
libnvidia-eglcore,
|
|
libnvidia-encode,
|
|
libnvidia-fbc,
|
|
libnvidia-glcore,
|
|
libnvidia-glsi,
|
|
libnvidia-glvkspirv,
|
|
libnvidia-gpucomp,
|
|
libnvidia-gtk2,
|
|
libnvidia-gtk3,
|
|
libnvidia-ml,
|
|
libnvidia-ngx,
|
|
libnvidia-nvvm{70,},
|
|
libnvidia-opencl,
|
|
libnvidia-opticalflow,
|
|
libnvidia-pkcs11-openssl3,
|
|
libnvidia-pkcs11,
|
|
libnvidia-ptxjitcompiler,
|
|
libnvidia-rtcore,
|
|
libnvidia-tls,
|
|
libnvidia-wayland-client,
|
|
libOpenCL.so,
|
|
libvdpau_nvidia,
|
|
nvidia-drm_gbm,
|
|
nvidia_drv, and
|
|
for <xref linkend="wine"/> (_nvngx,
|
|
nvngx, and
|
|
nvngx_dlssg; all three are DLLs)
|
|
</seg>
|
|
<seg>
|
|
/usr/lib/firmware/nvidia/&nvidia-version;,
|
|
/usr/lib/nvidia/wine,
|
|
/usr/share/glvnd/egl_vendor.d, and
|
|
/usr/share/nvidia
|
|
</seg>
|
|
</seglistitem>
|
|
</segmentedlist>
|
|
|
|
<variablelist>
|
|
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
|
|
<?dbfo list-presentation="list"?>
|
|
<?dbhtml list-presentation="table"?>
|
|
|
|
<varlistentry id="nvidia-install-soft">
|
|
<term><command>nvidia-install-soft</command></term>
|
|
<listitem>
|
|
<para>
|
|
is a custom-made install script that installs all the software from
|
|
this driver that you need
|
|
</para>
|
|
<indexterm zone="nvidia nvidia-install-soft">
|
|
<primary sortas="b-nvidia-install-soft">nvidia-install-soft</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="nvidia-modprobe">
|
|
<term><command>nvidia-modprobe</command></term>
|
|
<listitem>
|
|
<para>
|
|
is a suid program which populates <filename
|
|
class="directory">/dev</filename> with directories and files for
|
|
this driver and is loaded when starting a display server
|
|
</para>
|
|
<indexterm zone="nvidia nvidia-modprobe">
|
|
<primary sortas="b-nvidia-modprobe">nvidia-modprobe</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="nvidia-settings">
|
|
<term><command>nvidia-settings</command></term>
|
|
<listitem>
|
|
<para>
|
|
a GUI application relying on <ulink url="&blfs-svn;/x/gtk3.html">GTK-3
|
|
</ulink> that allows tweaking settings like resolution and refresh rate
|
|
</para>
|
|
<indexterm zone="nvidia nvidia-settings">
|
|
<primary sortas="b-nvidia-settings">nvidia-settings</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="nvidia-smi">
|
|
<term><command>nvidia-smi</command></term>
|
|
<listitem>
|
|
<para>
|
|
provides NVIDIA GPU monitoring information
|
|
</para>
|
|
<indexterm zone="nvidia nvidia-smi">
|
|
<primary sortas="b-nvidia-smi">nvidia-smi</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="nvidia-uninstall">
|
|
<term><command>nvidia-uninstall</command></term>
|
|
<listitem>
|
|
<para>
|
|
is a custom-made install script that uninstalls the driver
|
|
</para>
|
|
<indexterm zone="nvidia nvidia-uninstall">
|
|
<primary sortas="b-nvidia-uninstall">nvidia-uninstall</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="nvidia-xconfig">
|
|
<term><command>nvidia-xconfig</command></term>
|
|
<listitem>
|
|
<para>
|
|
manipulates <application>X11</application> configuration files
|
|
to allow the <application>NVIDIA</application> driver to be used
|
|
when starting <application>X11</application>
|
|
</para>
|
|
<indexterm zone="nvidia nvidia-xconfig">
|
|
<primary sortas="b-nvidia-xconfig">nvidia-xconfig</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libcudadebugger">
|
|
<term><filename class="libraryfile">libcudadebugger</filename></term>
|
|
<listitem>
|
|
<para>
|
|
allows debugging <application>CUDA</application> applications
|
|
</para>
|
|
<indexterm zone="nvidia libcudadebugger">
|
|
<primary sortas="c-libcudadebugger">libcudadebugger</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libcuda">
|
|
<term><filename class="libraryfile">libcuda</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides support for applications that use
|
|
<application>CUDA</application>
|
|
</para>
|
|
<indexterm zone="nvidia libcuda">
|
|
<primary sortas="c-libcuda">libcuda</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libEGL_nvidia">
|
|
<term><filename class="libraryfile">libEGL_nvidia</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides the <application>NVIDIA</application> implementation
|
|
of EGL
|
|
</para>
|
|
<indexterm zone="nvidia libEGL_nvidia">
|
|
<primary sortas="c-libEGL_nvidia">libEGL_nvidia</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libGLESv2_nvidia">
|
|
<term><filename class="libraryfile">libGLESv2_nvidia</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides the <application>NVIDIA</application> implementation
|
|
of OpenGL ES v2
|
|
</para>
|
|
<indexterm zone="nvidia libGLESv2_nvidia">
|
|
<primary sortas="c-libGLESv2_nvidia">libGLESv2_nvidia</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libGLX_nvidia">
|
|
<term><filename class="libraryfile">libGLX_nvidia</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides the <application>NVIDIA</application> implementation
|
|
of GLX
|
|
</para>
|
|
<indexterm zone="nvidia libGLX_nvidia">
|
|
<primary sortas="c-libGLX_nvidia">libGLX_nvidia</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libglxserver_nvidia">
|
|
<term><filename class="libraryfile">libglxserver_nvidia</filename></term>
|
|
<listitem>
|
|
<para>
|
|
is the <application>NVIDIA</application> X11 GLX extension module
|
|
</para>
|
|
<indexterm zone="nvidia libglxserver_nvidia">
|
|
<primary sortas="c-libglxserver_nvidia">libglxserver_nvidia</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvcuvid">
|
|
<term><filename class="libraryfile">libnvcuvid</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides an interface to hardware accelerated decoding
|
|
</para>
|
|
<indexterm zone="nvidia libnvcuvid">
|
|
<primary sortas="c-libnvcuvid">libnvcuvid</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvoptix">
|
|
<term><filename class="libraryfile">libnvoptix</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides the OptiX Ray Tracing API
|
|
</para>
|
|
<indexterm zone="nvidia libnvoptix">
|
|
<primary sortas="c-libnvoptix">libnvoptix</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-allocator">
|
|
<term><filename class="libraryfile">libnvidia-allocator</filename></term>
|
|
<listitem>
|
|
<para>
|
|
handles NVIDIA GPU memory management
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-allocator">
|
|
<primary sortas="c-libnvidia-allocator">libnvidia-allocator</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-api">
|
|
<term><filename class="libraryfile">libnvidia-api</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides the NVAPI interface
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-api">
|
|
<primary sortas="c-libnvidia-api">libnvidia-api</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-cfg">
|
|
<term><filename class="libraryfile">libnvidia-cfg</filename></term>
|
|
<listitem>
|
|
<para>
|
|
queries a NVIDIA GPU's configuration settings
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-cfg">
|
|
<primary sortas="c-libnvidia-cfg">libnvidia-cfg</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-eglcore">
|
|
<term><filename class="libraryfile">libnvidia-eglcore</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides primary EGL functionality to other components of the
|
|
driver
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-eglcore">
|
|
<primary sortas="c-libnvidia-eglcore">libnvidia-eglcore</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-encode">
|
|
<term><filename class="libraryfile">libnvidia-encode</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides an interface to video encoder hardware
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-encode">
|
|
<primary sortas="c-libnvidia-encode">libnvidia-encode</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-fbc">
|
|
<term><filename class="libraryfile">libnvidia-fbc</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides an interface to capture and optionally encode the
|
|
framebuffer of an <application>X11</application> server screen
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-fbc">
|
|
<primary sortas="c-libnvidia-fbc">libnvidia-fbc</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-glcore">
|
|
<term><filename class="libraryfile">libnvidia-glcore</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides the primary OpenGL functionality for other components of
|
|
this driver
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-glcore">
|
|
<primary sortas="c-libnvidia-glcore">libnvidia-glcore</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-glsi">
|
|
<term><filename class="libraryfile">libnvidia-glsi</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides the OpenGL Shader Interface for other components of this
|
|
driver
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-glsi">
|
|
<primary sortas="c-libnvidia-glsi">libnvidia-glsi</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-glvkspirv">
|
|
<term><filename class="libraryfile">libnvidia-glvkspirv</filename></term>
|
|
<listitem>
|
|
<para>
|
|
allows using SPIR-V shaders in OpenGL
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-glvkspirv">
|
|
<primary sortas="c-libnvidia-glvkspirv">libnvidia-glvkspirv</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-gpucomp">
|
|
<term><filename class="libraryfile">libnvidia-gpucomp</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides primary functionality for allowing computations being done
|
|
on the GPU for use with other components in this driver
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-gpucomp">
|
|
<primary sortas="c-libnvidia-gpucomp">libnvidia-gpucomp</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-gtk2">
|
|
<term><filename class="libraryfile">libnvidia-gtk2</filename></term>
|
|
<listitem>
|
|
<para>
|
|
for <command>nvidia-settings</command>; utilizes
|
|
<application>GTK-2</application>
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-gtk2">
|
|
<primary sortas="c-libnvidia-gtk2">libnvidia-gtk2</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-gtk3">
|
|
<term><filename class="libraryfile">libnvidia-gtk3</filename></term>
|
|
<listitem>
|
|
<para>
|
|
for <command>nvidia-settings</command>; utilizes
|
|
<application>GTK-3</application>
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-gtk3">
|
|
<primary sortas="c-liblnvidia-gtk3">libnvidia-gtk3</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-ml">
|
|
<term><filename class="libraryfile">libnvidia-ml</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides a monitoring and management API
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-ml">
|
|
<primary sortas="c-libnvidia-ml">libnvidia-ml</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-ngx">
|
|
<term><filename class="libraryfile">libnvidia-ngx</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides functions for DLSS support
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-ngx">
|
|
<primary sortas="c-libnvidia-ngx">libnvidia-ngx</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-nvvm">
|
|
<term><filename class="libraryfile">libnvidia-nvvm</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides JIT LTO for CUDA
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-nvvm">
|
|
<primary sortas="c-libnvidia-nvvm">libnvidia-nvvm</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-opencl">
|
|
<term><filename class="libraryfile">libnvidia-opencl</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides <application>NVIDIA</application>'s implementation of
|
|
the OpenCL API standard
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-opencl">
|
|
<primary sortas="c-libnvidia-opencl">libnvidia-opencl</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-opticalflow">
|
|
<term><filename class="libraryfile">libnvidia-opticalflow</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides Optical Flow support which improves frames, similar to
|
|
DLSS, with the help of CUDA
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-opticalflow">
|
|
<primary sortas="c-libnvidia-opticalflow">libnvidia-opticalflow</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-pkcs11">
|
|
<term><filename class="libraryfile">libnvidia-pkcs11</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides cryptography functions when the driver is operating in
|
|
Confidential Compute mode
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-pkcs11">
|
|
<primary sortas="c-libnvidia-pkcs11">libnvidia-pkcs11</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-ptxjitcompiler">
|
|
<term><filename class="libraryfile">libnvidia-ptxjitcompiler</filename></term>
|
|
<listitem>
|
|
<para>
|
|
is a JIT compiler which compiles PTX into GPU machine code;
|
|
used by CUDA
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-ptxjitcompiler">
|
|
<primary sortas="c-libnvidia-ptxjitcompiler">libnvidia-ptxjitcompiler</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-rtcore">
|
|
<term><filename class="libraryfile">libnvidia-rtcore</filename></term>
|
|
<listitem>
|
|
<para>
|
|
implements the RT (Ray Tracing) core functionality and is used by
|
|
other components in this driver
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-rtcore">
|
|
<primary sortas="c-libnvidia-rtcore">libnvidia-rtcore</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-tls">
|
|
<term><filename class="libraryfile">libnvidia-tls</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides TLS support for the <application>NVIDIA
|
|
</application> OpenGL implementations
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-tls">
|
|
<primary sortas="c-libnvidia-tls">libnvidia-tls</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libnvidia-wayland-client">
|
|
<term><filename class="libraryfile">libnvidia-wayland-client</filename></term>
|
|
<listitem>
|
|
<para>
|
|
is required for <command>nvidia-settings</command> on
|
|
<application>Wayland</application>
|
|
</para>
|
|
<indexterm zone="nvidia libnvidia-wayland-client">
|
|
<primary sortas="c-libnvidia-wayland-client">libnvidia-wayland-client</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="libvdpau_nvidia">
|
|
<term><filename class="libraryfile">libvdpau_nvidia</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides the <application>NVIDIA</application> implementation for
|
|
the VDPAU API
|
|
</para>
|
|
<indexterm zone="nvidia libvdpau_nvidia">
|
|
<primary sortas="c-libvdpau_nvidia">libvdpau_nvidia</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="_nvngx">
|
|
<term><filename class="libraryfile">_nvngx</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides DLSS support for use with Proton
|
|
</para>
|
|
<indexterm zone="nvidia _nvngx">
|
|
<primary sortas="c-_nvngx">_nvngx</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="nvngx">
|
|
<term><filename class="libraryfile">nvngx</filename></term>
|
|
<listitem>
|
|
<para>
|
|
provides DLSS support for use with <application>Wine</application>
|
|
</para>
|
|
<indexterm zone="nvidia nvngx">
|
|
<primary sortas="c-nvngx">nvngx</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="nvngx_dlssg">
|
|
<term><filename class="libraryfile">nvngx_dlssg</filename></term>
|
|
<listitem>
|
|
<para>
|
|
is the DLSS 3 Frame Generation library
|
|
</para>
|
|
<indexterm zone="nvidia nvngx_dlssg">
|
|
<primary sortas="c-nvngx_dlssg">nvngx_dlssg</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="nvidia-drm_gbm">
|
|
<term><filename class="libraryfile">nvidia-drm_gbm</filename></term>
|
|
<listitem>
|
|
<para>
|
|
is the <application>NVIDIA</application> GBM driver
|
|
</para>
|
|
<indexterm zone="nvidia nvidia-drm_gbm">
|
|
<primary sortas="c-nvidia-drm_gbm">nvidia-drm_gbm</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
<varlistentry id="nvidia_drv">
|
|
<term><filename class="libraryfile">nvidia_drv</filename></term>
|
|
<listitem>
|
|
<para>
|
|
is the <application>NVIDIA</application> <application>X11
|
|
</application> driver
|
|
</para>
|
|
<indexterm zone="nvidia nvidia_drv">
|
|
<primary sortas="c-nvidia_drv">nvidia_drv</primary>
|
|
</indexterm>
|
|
</listitem>
|
|
</varlistentry>
|
|
|
|
</variablelist>
|
|
|
|
</sect2>
|
|
|
|
</sect1>
|