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-590.48.01.run -x &&
cd NVIDIA-Linux-x86_64-590.48.01
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) er til bruk med CUDA.
If you won't use it, nor wish to use its capabilities, 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/590.48.01 &&
cp -v firmware/*.bin /usr/lib/firmware/nvidia/590.48.01
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.
Installasjon av NVIDIA-Powerd
Hvis du vil ha NVIDIA-Powerd, som kan settes i dvalemodus og gå i
hvilemodus, kjør følgende kommandoer som root bruker for å installere daemonen og
Systemd enhetsfilene:
mkdir -pv /usr/lib/systemd/system \
/usr/lib/systemd/system-sleep \
/usr/share/dbus-1/system.d &&
install -vDm755 nvidia-powerd -t /usr/bin/ &&
install -vDm755 systemd/nvidia-sleep.sh \
-t /usr/bin/ &&
install -vDm755 systemd/system-sleep/nvidia \
-t /usr/lib/systemd/system-sleep/ &&
cp -v systemd/system/*.service \
/usr/lib/systemd/system &&
cp -v nvidia-dbus.conf \
/usr/share/dbus-1/system.d &&
cat > systemd-homed-override.conf << "EOF" &&
[Service]
Environment="SYSTEMD_HOME_LOCK_FREEZE_SESSION=false"
EOF
cat > systemd-suspend-override.conf << "EOF" &&
[Service]
Environment="SYSTEMD_SLEEP_FREEZE_USER_SESSIONS=false"
EOF
for service in {homed,suspend,suspend-then-hibernate,hibernate,hybrid-sleep}; do
mkdir -pv /usr/lib/systemd/system/systemd-"$service".service.d
done &&
cp -v systemd-homed-override.conf \
/usr/lib/systemd/system/systemd-homed.service.d/10-nvidia-no-freeze-session.conf &&
for service in {suspend,suspend-then-hibernate,hibernate,hybrid-sleep}; do
cp -v systemd-suspend-override.conf \
/usr/lib/systemd/system/systemd-"$service".service.d/10-nvidia-no-freeze-session.conf
done
Systemd enhetene må kjøres ved oppstart. Aktiver dem som
root bruker:
for service in nvidia-{resume,hibernate,suspend}; do
systemctl enable $service
done
Konfigure NVIDIA
Konfigurasjonsfiler
/usr/lib/modprobe.d/nouveau.conf
/usr/lib/modprobe.d/nvidia_drm.conf
/usr/lib/modprobe.d/nvidia.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.21: 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
Når GPU-en går i hvilemodus/dvalemodus, mister den som standard
alle minnetildelinger. Du kan forhindre dette ved å angi to
alternativer for NVIDIA modulen. Hvis du ikke bruker
hvilemodus/dvalemodus, kan du hoppe over å lage følgende
konfigurasjonsfil. Ellers, som root bruker:
cat > /usr/lib/modprobe.d/nvidia.conf << "EOF"
# 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
EOF
Fortsette
Hvis du installerte libglvnd-1.7.0, libgbm-1.0.4, og DRI fra
Mesa-25.3.5, 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 13, 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.