Forberedelser til NVIDIA installasjonen
Første aktiver XFree86 DRI og Nouveau støtte i
kjernen og rekompilere om nødvendig.
Device Drivers --->
Graphics support --->
<*/M> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
... [DRM]
<M> Nouveau (NVIDIA) cards [DRM_NOUVEAU]
Frame buffer Devices --->
<M> nVidia Framebuffer Support [FB_NVIDIA]
< /M> Simple framebuffer support [FB_SIMPLE]
Viktig
Bygg disse driverne som kjernemoduler slik at de kan bli
svartelistet på riktig måte.
Pakk ut NVIDIA driver runfile og naviger til den utpakkede mappen:
sh NVIDIA-Linux-x86_64-580.95.05.run -x &&
cd NVIDIA-Linux-x86_64-580.95.05
Installasjon av NVIDIA kjernemodulene
Nå må du bygge kjernemodulene for driveren. Det finnes to typer:
open og proprietary. Hvis du har NVIDIA
Grace Hopper eller NVIDIA Blackwell kort, må du kompilere
open kjernemoduler. Hvis
du har Turing, Ampere, Ada Lovelace, eller Hopper kort, anbefales
det å nå bygge open
kjernemoduler. Hvis du har Maxwell, Pascal, eller Volta kort, bygg
proprietary
kjernemoduler. Hvis du bruker både et eldre og et nyere kort, men
ikke de nyeste kortene, bygg proprietary kjernemoduler.
Hvis du skal bygge åpne
kjernemoduler, naviger til kernel-open
mappen:
cd kernel-open
Hvis du i stedet skal bygge proprietary kjernemoduler, sett
NVIDIA_KERNEL_TYPE
variabelen:
export NVIDIA_KERNEL_TYPE="kernel"
Det vil bli bygget 5 eller 6 kjernemoduler. Avhengig av
brukstilfellet ditt, kan du hoppe over å bygge en eller to moduler.
UVM modulen (UnifiedVirtual Memory) er til bruk med CUDA. Hvis
du ikke vil bruke den, eller ønsker å bruke dens funksjoner, kan du
hoppe over å bygge UVM kjernemodulen. Det finnes også PeerMem
modulen som er for datasentre. For spilling kan den trygt
deaktiveres.
For UVM heter modulen nvidia-uvm
. For PeerMem vil den bli kalt
nvidia-peermem
. For å hoppe
over disse, legg til modulnavnene til NV_EXCLUDE_KERNEL_MODULES
i make kommandoen. Variabelen bør
være separert, slik som dette: NV_EXCLUDE_KERNEL_MODULES="nvidia-uvm
nvidia-peermem"
. make kommandoen vil ha variabelen
satt til ingenting. Legg til noe i den etter eget ønske.
Notat
Å bygge kjernemodulene i en chroot vil sannsynligvis føre til en
byggefeil. Det anbefales å bygge dem når de startes opp i LFS
målet. Standardvariabelen som kjernebyggesystemet bruker for å
sjekke kjerneversjonen, er uname
-r, som rapporterer kjerneversjonen til verten i
stedet for målet. Dette fører til at byggefiler ikke kan bli
funnet. Dette kan omgås ved å spesifisere KERNEL_UNAME=<x.x.x>
i hver
make kommando som
vil overstyre kjerneversjonen som skal bygges mot og installeres
til. Kjerneversjonen må allerede være bygget for at dette skal
fungere. Hvis kjerneversjonen ikke har et tredje siffer, som 6.16
i stedet for 6.16.1, legg til en .0
på
enden, som 6.16.0
. Den skal samsvare
med versjonen som finnes i /usr/lib/modules
. make kommandoen spesifiserer
KERNEL_UNAME=`uname -r`
slik det
vanligvis ville gjort med byggesystemet. Rediger det om
nødvendig. `
tegn angir en kommando
som returnerer en utdata når den er omgitt av tegn. Når du
spesifiserer en kjerneversjon til den, fjern tegnene rundt
`
tegn slik at versjonen ikke blir
analysert som en kommando, som ikke returnerer noe.
Bygg nå kjernemodulene ved å kjøre følgende kommando:
make KERNEL_UNAME=`uname -r`
NV_EXCLUDE_KERNEL_MODULES=
Notat
Kildekoden du bygde kjernen fra må være på samme sted som du
bygde kjernen fra. Hvis du for eksempel bygde kjernen i
/sources/linux-6.16.1
, kildekoden
skal bli værende der og må ikke slettes før tredjeparts modulene
er bygget. Noen Linux distribusjoner omgår dette ved å installere
utviklingsfiler i /usr/src
, men det
er utenfor rammen av denne boken.
Notat
Du kan støte på diverse byggefeil. Dette skjer vanligvis fordi
modulkoden er inkompatibel med den gjeldende kjerneversjonen.
Hvis dette skjer, kan dette i de fleste tilfeller fikses ved å
nedgradere kjernen. Når en ny driverutgivelse kommer, vil
driveren mest sannsynlig støtte kjerneversjonen på det
tidspunktet. Øverst i denne delen er den anbefalte kjerneserien
som skal brukes med denne driveren nevnt for å gi en idé om hva
den ideelle kjerneversjonen er å bygge mot.
Viktig
Når du gjenoppbygger/oppgraderer kjernen, må du også installere .
NVIDIA kjernemoduler på nytt.
Kjernemoduler installeres i en versjonert mappe som, når de
bygges mot en annen kjerneversjon, ikke lenger vil samsvare med
den oppstartede kjerneversjonen og kan ikke brukes. Videre er det
en limmekanisme bygget, så eventuelle endringer i kjernen kan
ødelegge denne limmekanismen. For kjernemoduler i Linux
kildetreet, kjent som førstepartsmoduler, blir de oppdatert og
gjenoppbygd sammen med kjernen, slik at det ikke oppstår
problemer for førstepartsmoduler. Tredjepartsmoduler blir
imidlertid ikke det, og må oppdateres/gjenoppbygges.
Når du gjenoppbygger/oppgraderer kjernen mot samme NVIDIA
driverversjon, trenger du bare å installere kjernemodulene på
nytt. Du må også installere driverprogramvaren på nytt hvis du
oppgraderer fra en tidligere driverversjon.
Nå som root
bruker:
make KERNEL_UNAME=`uname -r`
modules_install &&
cd ..
Installer fastvaren som root
bruker:
rm -rvf /usr/lib/firmware/nvidia/[0-9]* &&
mkdir -pv /usr/lib/firmware/nvidia/580.95.05 &&
cp -v firmware/*.bin /usr/lib/firmware/nvidia/580.95.05
Installere NVIDIA driverprogramvaren
Installer installasjonsskriptet og manifestfilen for skriptet som
root
bruker:
install -vdm755 /usr/share/nvidia &&
install -vDm755 ../install-NVIDIA-1 /usr/sbin/nvidia-install &&
install -vDm644 ../manifest-NVIDIA-1 /usr/share/nvidia/manifest
Se nå hvilke alternativer som finnes og hva du vil installere ved å
kjøre /sbin/nvidia-install
--help.
Hvis du vil gjøre standardinstallasjonen, kan du bare kjøre
følgende kommando som root
bruker:
/sbin/nvidia-install
Viktig
Hvis du starter opp i systemet du kjører kommandoene for, kan det
å gjøre det for kommandoen ovenfor i et grafisk miljø krasje det
miljøet og føre deg tilbake til en TTY. Ikke gjør det, bare kjør
den fra en TTY eller i en chroot der skjermen ikke er avhengig av
bibliotekene som leveres av denne driveren. Når det gjelder TTY,
drives den faktisk av kjernen eller dens moduler, ikke
bibliotekene. Det er derfor det er trygt å kjøre kommandoen
ovenfor i en TTY.—den overskriver ikke kjernemodulene.
Konfigure NVIDIA
Konfigurasjonsfiler
/usr/lib/modprobe.d/nouveau.conf
/usr/lib/modprobe.d/nvidia_drm.conf
Liste over pakker med problemer
Bruk av denne driveren kan føre til kompromisser. Så langt ser
disse begrenset til Wayland og vindusbehandlere. Listen nedenfor
dokumenterer de kjente pakkene som har problemer med denne
driveren.
-
Mutter:
Kompiler denne pakken med -D
wayland_eglstream=true
og -D egl_device=true
for å
aktivere oppstart med Wayland. Sørg for at NVIDIA EGL Biblioteker er
installert.
-
Xorg-Server-21.1.18: Selv om
denne pakken fungerer helt fint, vil TearFree oppdateringen
og konfigurasjonsfilen være ubrukelig ettersom Xorg
driveren (nvidia_drv
) vil bli
brukt i stedet for modusinnstillingsdriveren. TearFree
oppdateringen og konfigurasjonsfilen er
modusinnstillingsspesifikk. Derfor må du finne en annen
måte å bli kvitt skjermriving hvis det er ditt ønske. Slike
rettelser kan redusere ytelsen drastisk, slik at 144 FPS
kan falle til 60 FPS.
Konfigurasjonsinformasjon
For at driverne skal fungere ordentlig, må enhetsnoder opprettes
på forhånd. Under visse forhold eller konfigurasjoner opprettes
ikke disse automatisk når en skjermserver startes. Som
root
bruker, opprett en udev
regel for alltid å opprette disse nodene ved oppstart:
mkdir -pv /usr/lib/udev/rules.d &&
cat > /usr/lib/udev/rules.d/60-nvidia.rules << "EOF"
# Always create NVIDIA device nodes at boot time.
ACTION=="add|bind", \
ATTR{vendor}=="0x10de", \
ATTR{class}=="0x03[0-9]*", \
DRIVER=="nvidia", \
TEST!="/dev/nvidiactl", \
RUN+="/usr/bin/nvidia-modprobe", \
RUN+="/usr/bin/nvidia-modprobe -c0 -u"
EOF
Støtte for Nouveau og NVIDIAFB ble kompilert inn i kjernen for å
sikre at NVIDIA kjernemodulene ble bygd på en vellykket måte.
Nouveau og NVIDIAFB er imidlertid i konflikt med NVIDIA
kjernemodulene, så de bør svartelistes. Videre kan det hende at
andre moduler har blitt bygget som kan komme i konflikt, og bør
likeledes deaktiveres. Som root
bruker, opprett filen /usr/lib/modprobe.d/nouveau.conf
for å
svarteliste Nouveau og NVIDIAFB, samt andre motstridende moduler:
mkdir -pv /usr/lib/modprobe.d &&
cat > /usr/lib/modprobe.d/nouveau.conf << "EOF"
# Begin /usr/lib/modprobe.d/nouveau.conf
blacklist nouveau
blacklist nvidiafb
blacklist nova_core
blacklist nova_drm
# End /usr/lib/modprobe.d/nouveau.conf
EOF
DRM kjernemodulen bruker ikke modusinnstilling som standard, noe
som er nødvendig for Wayland kompositorer. Gjør at den bruker
modusinnstilling som root
bruker:
cat > /usr/lib/modprobe.d/nvidia_drm.conf << "EOF"
# Begin /usr/lib/modprobe.d/nvidia_drm.conf
options nvidia_drm modeset=1
# End /usr/lib/modprobe.d/nvidia_drm.conf
EOF
Denne driveren installerer ikke DRI
drivere eller driverstubber. På samme måte installerer den ikke
en pkgconf fil som sier hvor du finner de tilknyttede filene.
Filene er ikke nødvendige med denne driveren. Imidlertid
forventer noen applikasjoner at pkg-config filen eksisterer,
nemlig Xorg-Server-21.1.18. Opprett en nå som
root
bruker:
cat > /usr/lib/pkgconfig/dri.pc << "EOF"
prefix=/usr
includedir=${prefix}/include
dridriverdir=/usr/lib/dri
Name: dri
Description: Direct Rendering Infrastructure
Version: 580.95.05
Requires.private: libdrm >= 2.4.109
Cflags: -I${includedir}
EOF
Programmer som krever denne filen vil vanligvis ikke lenke mot
noe bibliotek i /usr/lib/dri
. Hvis
du er bekymret for at et program vil prøve å lenke mot
ikke-eksisterende biblioteker, kan du kompilere Mesa-25.2.2 å få disse
bibliotekene og en ekte pkg-config fil. Merk at disse
bibliotekene ikke vil bli brukt når denne driveren er i bruk.
Som med situasjonen angående DRI, finnes det et par
deklarasjonsfiler som bare er installert av Mesa-25.2.2 men kan brukes
uten problemer. En er for å deklarere DRI grensesnittet og en for
å deklarere Mesas EGL EXT system som brukes av noe programvare
som GNOMEs mutter. Bruk Wget-1.25.0, til å laste ned og installere dem
som root
bruker:
install -vdm755 /usr/include/GL/internal /usr/include/EGL &&
wget https://gitlab.freedesktop.org/mesa/mesa/-/raw/25.2/include/GL/internal/dri_interface.h \
-O /usr/include/GL/internal/dri_interface.h &&
wget https://gitlab.freedesktop.org/mesa/mesa/-/raw/25.2/include/EGL/eglmesaext.h \
-O /usr/include/EGL/eglmesaext.h
Notat
Du bør hoppe over til XCB Verktøy etter at du er ferdig med
denne siden med mindre du ønsker å installere ekstra
programvare.