Forberedelser til NVIDIA installasjonen
Først aktiverer du XFree86 DRI og Nouveau
støtte i kjernen og kompiler på nytt 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-595.58.03.run -x &&
cd NVIDIA-Linux-x86_64-595.58.03
Installasjon av NVIDIA kjernemodulene
Endre til kernel-open mappen:
cd kernel-open
Notat
Hvis den nåværende kjernen som kjører er en annen versjon enn den
du sikter mot, sannsynligvis som et resultat av at du er i en
chroot eller ikke har startet på nytt etter en kjerneoppgradering
ennå, vil bygging av kjernemodulene føre til en byggefeil eller
installere moduler for en kjerne som ikke er målet.
Standardvariabelen som kjernebyggesystemet bruker for å sjekke
kjerneversjonen vil bruke uname
-r, som igjen rapporterer kjerneversjonen av den
for øyeblikket kjørende vertskjernen og ikke målet. Dette kan
omgås ved å spesifise KERNEL_UNAME=<x.x.x> som vil
overstyre kjerneversjonen som skal bygges mot og installeres til.
Målkjerneversjonen 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 et .0 på
slutten, som 6.16.0. Den skal samsvare
med versjonen som finnes i /usr/lib/modules.
Hvis tilfellet ovenfor gjelder deg, enten du er i en chroot eller
ikke har startet på nytt etter en kjerneoppgradering, spesifiser
kjernemålet ved å eksportere variabelen nå på forhånd for å unngå
å måtte spesifisere den for hver kommando:
export KERNEL_UNAME=<x.x.x>
Det vil bli bygget 5 eller 6 kjernemoduler. Avhengig av
brukstilfellet ditt, kan du hoppe over å bygge en eller to moduler.
UVM-modulen (Unified Virtual Memory) modulen er til bruk med CUDA.
Hvis du ikke vil bruke den, eller ikke ø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 for make kommandoen. Variabelen skal
skilles, slik som: NV_EXCLUDE_KERNEL_MODULES="nvidia-uvm
nvidia-peermem". make kommandoen vil ha variabelen
satt til ingenting. Legg til noe i den etter eget ønske.
Bygg nå kjernemodulene ved å kjøre følgende kommando:
make 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 det i de fleste tilfeller fikses ved å
nedgradere kjernen. Når en ny driverutgivelse kommer, vil
driveren mest sannsynlig støtte den aktuelle kjerneversjonen.
Øverst i denne delen er den anbefalte kjerneserien som skal
brukes med denne driveren nevnt for å gi en idé om hva den
ideelle kjerneversjonen å bygge mot er.
Viktig
Når du gjenoppbygger/oppgraderer kjernen, må du også installere
NVIDIA kjernemodulene 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 den 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.
WNå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 modules_install &&
cd ..
Hvis du satte KERNEL_UNAME variabelen,
fjern den nå:
unset KERNEL_UNAME
Installer fastvaren som root
bruker:
rm -rvf /usr/lib/firmware/nvidia/[0-9]* &&
mkdir -pv /usr/lib/firmware/nvidia/595.58.03 &&
cp -v firmware/*.bin /usr/lib/firmware/nvidia/595.58.03
Installere NVIDIA driverprogramvaren
Installer installasjonsskriptet og manifestfilen for skriptet som
root bruker:
install -vdm755 /usr/share/nvidia &&
install -vDm755 ../install-NVIDIA-2 /usr/sbin/nvidia-install &&
install -vDm644 ../manifest-NVIDIA-2 /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 problemene ut til å være 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.21: Selv om
denne pakken fungerer helt fint, vil TearFree oppdateringen
og konfigurasjonsfilen være ubrukelig siden 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.
-
EGL_EXT Enhetsforespørsel og Enumeration: libglvnd setter
opp viktige utvidelser som er en del av EGL spesifikasjonen
og leveres via deklarasjonsfiler. Disse deklarasjonsfilene
tilbyr også funksjonsdeklarasjoner, slik at adressene deres
kan hentes. NVIDIAs biblioteker tilbyr ikke to utvidelser:
EGL_EXT_device_query og
EGL_EXT_device_enumeration.
Driveren gir imidlertid funksjonsdefinisjoner for å spørre
enheter via EGL. Dette betyr at når en pakke eksplisitt
sjekker etter utvidelsene, hvis Mesa-26.0.1 ikke er
installert, vil pakken håndtere tilfellet for manglende
utvidelser, uansett om funksjonene som håndterer
enhetsspørringer faktisk finnes eller ikke.
De fleste pakker gjør ikke dette. Men hvis du støter på en
slik situasjon, må du sørge for at pakken ikke sjekker
etter disse utvidelsene for å forhindre potensielle feil.
Niri, som bruker smithay, lider av dette. Dette blir
forsøkt løst oppstrøms med smithay. Ideelt sett bør NVIDIA
eksportere disse utvidelsene. Den gjør ikke det på noen
måte, den tilbyr bare funksjonene som gjør enhetsspørring
mulig.
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
Fortsette
Hvis du installerte libglvnd-1.7.0, libgbm-1.0.6, og DRI fra
Mesa-26.0.1, burde du ikke trenge Mesa som en avhengighet for
noen pakke i noen av LFS bøkene.
Med dette Mesa frie oppsettet, kan du hoppe til Kapittel 14, X11 og
forvent problemfri bruk. Hvis du vil, kan du imidlertid også
installere CUDA i denne underseksjonen for å forbedre ytelsen, noe
som er opp til deg.