NVIDIA videokaardi kasutamine operatsioonisüsteemiga Debian

Allikas: Imre kasutab arvutit

Sissejuhatus

NVIDIA http://www.nvidia.com/ toodab graafikaprotsessoreid (ingl. k. Graphic Processing Unit, GPU), kusjuures praktiliselt mitmed muud tootjad pakendavad lõppkasutajale mõeldud toote, st graafikakaardi. Käesolev tekst keskendub sellistele teemadele

  • orienteerumine NVIDIA erinevate graafikakaartide vahel
  • millised võimalused on graafikakaarti kasutusele võtta (erinevate draiverite ja teekide valik)
  • juurutatud süsteemi seadistamine (nt mitme monitori ühe dual-head kaardiga kasutamine, mitme füüsilise kaardi kasutamine mitme monitoriga, mitme füüsilise kaardi kasutamine ühe monitoriga (SLI))

Tööpõhimõte

Kasutamiseks peab süsteemis olema muu hulgas

  • tuuma moodul - nt pakett nvidia-kernel-3.2.0-4-amd64 (NVIDIA binary kernel module for Linux 3.2.0-4-amd64)
  • X.Org tarkvara sh kaardiga sobiv X.Org driver - nt pakett xserver-xorg-video-nvidia (NVIDIA binary Xorg driver)
  • OpenGL teegid - nt pakett libgl1-nvidia-glx (NVIDIA binary OpenGL libraries)

Need kolm peavad omavahel kokku sobima, st moodustama komplekti, NVIDIA puhul saab valida erinevaid komplekte, nt

  • nouveau - vabatarkvaraline, paketihaldusest (tõenäoliselt kõige tagasihoidlikemate omadustega, nt 2D/3D toe osas)
  • v. 96xx - paketihalduse non-free repositooriumist
  • v. 173xx - paketihalduse non-free repositooriumist
  • v. 304 - paketihalduse non-free repositooriumist
  • tootja kodulehelt kopeerida nö skript, mis sisaldab kõiki kolme

nouveau töötab opensource OpenGL Mesa teekidega, teised töötavad kommerts OpenGL teekidega.

Süsteemi saab neid komplekte osaliselt ka samaaegselt paigaldada, milliste parasjagu kasutatakse määrab

  • milline tuuma moodul on laaditud
  • kuhu lahenevad alternatives lingid
SKEEM TODO

Riistvara

Tundub, et 2013 aastal on kõige põhilisem tooteperekond GeForce, aadressilt http://www.nvidia.com/ leiab tõenäoliselt ammendavat infot konkreetsete mudelite kohta ja nende võrdlusi. Oluline on tähele panna, et NVIDIA ise praktiliselt lõppkasutajale kasutatavaid videokaarte ei tooda, toodavad teised, nt GIGABYTE, Phy.

Arvutisse paigaldatud kaarti kohta saab küsida nt nii

# lspci | grep VGA
01:00.0 VGA compatible controller: NVIDIA Corporation G73 [GeForce 7600 GS] (rev a1)

Tarkvara

X.org draiver

Selliselt saab küsida, millised pakendatud versioonid X.Org draiverist on parasjagu paketihalduse kaudu kasutada

# apt-cache search "xserver-xorg-video-nvidia|xserver-xorg-video-nouveau"
xserver-xorg-video-nouveau - X.Org X server -- Nouveau display driver
xserver-xorg-video-nouveau-dbg - X.Org X server -- Nouveau display driver (debug symbols)
xserver-xorg-video-nvidia - NVIDIA binary Xorg driver
xserver-xorg-video-nvidia-legacy-173xx - NVIDIA binary Xorg driver (173xx legacy version)
xserver-xorg-video-nvidia-legacy-71xx - OBSOLETE NVIDIA binary Xorg driver (71xx legacy version)
xserver-xorg-video-nvidia-legacy-96xx - NVIDIA binary Xorg driver (96xx legacy version)

kus

  • nouveau - /usr/lib/xorg/modules/drivers/nouveau_drv.so, vaba tarkvaraline X.Org draiver
  • nvidia* - erinevad versioonid tootja pakendatud X.Org draiverist

Iga variant sisaldab mingit hulka riistvara tuge, nt (valida tuleks võimalikult uus versioon, milles on veel kõnealuse kaardi tugi olemas)

# apt-cache show xserver-xorg-video-nvidia-legacy-173xx
..
Description-en: NVIDIA binary Xorg driver (173xx legacy version)
 These binary drivers provide optimized hardware acceleration of
 OpenGL applications via a direct-rendering X Server.
 AGP, PCIe, SLI, TV-out and flat panel displays are also supported.
 .
 Please see the nvidia-kernel-legacy-173xx-dkms or
 nvidia-kernel-legacy-173xx-source packages
 for building the kernel module required by this package.
 This will provide nvidia-kernel-173.14.35.
 .
 This legacy version is the last release that supports the following GPUs:
 GeForce FX 5100 [NV34], GeForce FX 5200 [NV34], GeForce FX 5200 Ultra [NV34],
 GeForce FX 5200LE [NV34], GeForce FX 5500 [NV34], GeForce FX 5600 [NV31],
 GeForce FX 5600 Ultra [NV31], GeForce FX 5600XT [NV31],
 GeForce FX 5700 [NV36.2], GeForce FX 5700 Ultra [NV36.1],
 GeForce FX 5700LE [NV36], GeForce FX 5700VE [NV36.4], GeForce FX 5800 [NV30],
 GeForce FX 5800 Ultra [NV30], GeForce FX 5900 [NV35],
 GeForce FX 5900 Ultra [NV35], GeForce FX 5900XT [NV35],
 ...

OpenGL teegid

Sarnaselt on olemas vastavad OpenGL teegid

  • libgl1-mesa-glx:amd64 - /usr/lib/x86_64-linux-gnu/dri/nouveau_dri.so, vabatarkvaraline Mesa GLX ja DRI teegid (sõltuvuste kaudu)
  • nvidia-glx* - tootja pakendatud GLX ja DRI teegid (sõltuvuste kaudu)

Tuuma moodulid

Sarnaselt on olemas vastavad tuuma moodulid

  • nvidia-kernel-3.2.0-4-amd64 - /lib/modules/3.2.0-4-amd64/nvidia/nvidia.ko (tootaja pakendatud)
  • vaikimisi Debiani tuumas - /lib/modules/3.2.0-4-amd64/kernel/drivers/gpu/drm/nouveau/nouveau.ko

X.Org

X.Org http://en.wikipedia.org/wiki/X.Org_Server on X Window System http://en.wikipedia.org/wiki/X_Window_System protokolli populaarne vaba tarkvaraline implementatsioon ja tõenäoliselt on praktiline enne igasuguste OpenGL teekite, tuuma draiverite ja Xorg draiveritega õiendamist paigaldada arvutisse nö graafilise keskkonna tarkvara. Kui see pole juba olemas, sobib GNOME kasutamiseks öelda

# apt-get install gnome

Tulemusena paigaldadakse muu hulgas X.Org tarkvara, st xserver-xorg pakett, mis omakorda sõltuvustane paigaldab suure hulga muid vajalikke pakette. Debian Wheezy X.Org serveri versioon on 7.7.

X.Org ei ole ainuke X Window System protokolli implementatsioon, enne seda oli populaarne XFree86. Kusjuures X Window System ei ole samuti ainuke nö graafilise kasutajaliidesega tegelev protokoll, lisaks on näiteks olemas Wayland http://en.wikipedia.org/wiki/Wayland_%28display_server_protocol%29. Ja lisaks, tundub, et on tekkimas Mir http://en.wikipedia.org/wiki/Mir_%28display_server%29.

Vaba tarkvaralise variandi kasutamine

Vaba tarkvaraline nouveau draiver töötab nö suhteliselt automaatselt, /etc/X11/xorg.conf fail ei ole tavalisemal kasutusjuhul vajalik.

Viimase tootja pakendatud versiooni tarkvara paigaldamine

Viimase versiooni (2013 kevadel on see v. 304) tuuma mooduli paigaldamiseks sobib öelda

# apt-get install nvidia-kernel-amd64

sõltuvustena paigaldatakse paketid

nvidia-kernel-3.2.0-4-amd64
nvidia-kernel-amd64
nvidia-kernel-common

Muu hulgas lisandub failisüsteemi nvidia-kernel-3.2.0-4-amd64 poolt tuuma moodul

/lib/modules/3.2.0-4-amd64/nvidia/nvidia.ko

ja nvidia-kernel-common poolt mõned skriptid ja seadistusfailid

/etc/init.d/nvidia-kernel
/etc/default/nvidia-kernel 

kus

# cat /etc/default/nvidia-kernel 
# How many nVidia cards are in the system?

NVIDIA_CARDS=1

ja /etc/modprobe.d/nvidia-kernel-common.conf, kus on oluline, et nouveau vaba tarkvaraline tuuma moodul blacklistitakse (tõnäoliselt öeldakse paigaldamise ajal ka update-initramfs -u et initramfs sees samasugune muudatus toimuks)

# cat /etc/modprobe.d/nvidia-kernel-common.conf
alias char-major-195* nvidia
options nvidia NVreg_DeviceFileUID=0 NVreg_DeviceFileGID=44 NVreg_DeviceFileMode=0660
# To enable FastWrites and Sidebus addressing, uncomment these lines
# options nvidia NVreg_EnableAGPSBA=1
# options nvidia NVreg_EnableAGPFW=1

# see #580894
blacklist nouveau

ja viimase versiooni (v. 304) Xorg draiveri ja teekide paigaldamiseks paigaldada metapakett nvidia-glx

$ apt-cache show nvidia-glx
Package: nvidia-glx
Source: nvidia-graphics-drivers
..
Description-en: NVIDIA metapackage
This metapackage depends on the NVIDIA binary driver and libraries
that provide optimized hardware acceleration of
OpenGL applications via a direct-rendering X Server.
AGP, PCIe, SLI, TV-out and flat panel displays are also supported.
.
Please see the nvidia-kernel-dkms or
nvidia-kernel-source packages
for building the kernel module required by this package.
This will provide nvidia-kernel-304.88.
.
This version only supports GeForce 6xxx and higher of the Geforce GPUs
plus complimentary Quadros and nforce.  Look at the legacy packages
for older cards.

öelda

# apt-get install nvidia-glx

kusjuures sõltuvustena paigaldatakse mh paketid

glx-alternative-mesa
glx-alternative-nvidia
glx-diversions
libgl1-nvidia-alternatives
libgl1-nvidia-glx 
libglx-nvidia-alternatives
libxnvctrl0
libxvmcnvidia1
nvidia-alternative
nvidia-installer-cleanup
nvidia-settings
nvidia-support
nvidia-vdpau-driver
xserver-xorg-video-nvidia

Vanema tootja pakendatud versiooni tarkvara paigaldamine

Ideeliselt sarnane kui eelmine punkt, kuid tuleb öelda

# apt-get install nvidia-kernel-legacy-173xx-dkms
# apt-get install nvidia-glx-legacy-173xx

kusjuures DKMS moodul paigutatakse failisüsteemis

/lib/modules/3.2.0-4-amd64/updates/dkms/nvidia.ko

Draiverite ja teekide ümberlülitamine

Erinevate nö tootjate vahel ümberlülitamiseks, kui see ei toimu automaatselt vastavate pakettide paigaldamise käigus, sobib öelda nii (lisaks peab tuuma mooduli asendama, nt nouveau -> nvidia, ehk on kõige lihtsam selleks arvuti rebootida)

# update-alternatives --config glx
There are 3 choices for the alternative glx (providing /usr/lib/glx).

  Selection    Path                    Priority   Status
------------------------------------------------------------
* 0            /usr/lib/nvidia          100       auto mode
  1            /usr/lib/fglrx           99        manual mode
  2            /usr/lib/mesa-diverted   5         manual mode
  3            /usr/lib/nvidia          100       manual mode

Sama tootja erineva tarkvara vahel ümberlülitamiseks, kui see ei toimu automaatselt vastavate pakettide paigaldamise käigus, sobib öelda nii

# update-alternatives --config nvidia
There are 2 choices for the alternative nvidia (providing /usr/lib/nvidia/nvidia).

  Selection    Path                          Priority   Status
------------------------------------------------------------
* 0            /usr/lib/nvidia/legacy-173xx   173       auto mode
  1            /usr/lib/nvidia/legacy-173xx   173       manual mode
  2            /usr/lib/nvidia/legacy-96xx    96        manual mode

Tundub, et vaba tarkvaralise kerneli mooduli ja samanimelise X.org draiveriga (nouveau, radeon jne) sobib kasutada /usr/lib/mesa-diverted teeke).

Kasulikud lisamaterjalid

  • /usr/share/doc/glx-diversions/README.Debian.gz
  • /usr/share/doc/glx-alternative-nvidia/README.Debian.gz
  • /usr/share/doc/glx-alternative-mesa/README.Debian.gz
  • /usr/share/doc/glx-alternative-fglrx/README.Debian.gz

Tooja .bin kasutamine

Tootja .bin kasutamiseks tuleb tarkvara kopeerida Nvidia veebikohast, nt (tundub, et seal on kõige kaartide tugi sees)

NVIDIA-Linux-x86_64-331.38.run

ning käivitada root kasutajana

# ./NVIDIA-Linux-x86_64-331.38.run

Eduka käivitamise eelduseks on

  • süsteemis on nö piisavalt kompileerimiseks vajalikku kraami, vajadusel öelda midagi sellist
# apt-get build-dep xserver-xorg-video-nouveau
  • süsteemis oleva c kompilaator ning millega tuuma on tehtud, peavad olema samasugused (vajadusel paigaldada sobiv gcc pakett)
# cat /proc/version 
Linux version 3.2.0-4-amd64 (debian-kernel@lists.debian.org) \
  (gcc version 4.6.3 (Debian 4.6.3-14) ) #1  SMP Debian 3.2.51-1
# CC=/usr/bin/gcc-4.6 ./NVIDIA-Linux-x86_64-331.38.run

Tarkvara seadistamine

Tundub, et uuemal ajal ei ole /etc/X11/xorg.conf enam tingimata vajalik, aga spetsiifilisematel juhtumitel on selle kasutamisest abi

  • arvutis on mitu videokaarti
  • arvutisse on paigaldatud erinevate tootjate seadmeid toetavat tarkvara
  • arvuti kasutab mitut monitori

Mingil määral võib olla paketiga nvidia-xconfig tulevast nvidia-xconfig utiliidist

# apt-get install nvidia-xconfig

X serveri käivitamine

X serveri käivitamiseks sobib öelda nt

# /etc/init.d/gdm3 start

ning seejärel sisselogimisel valida

  • GNOME - gnome shell v. 3.4
  • GNOME Classic - ilma gnome-shellita gnome v. 3.4 (nn Fallback mode)

Tulemusena peaks olema näha kasutatav versioon nt selliselt

# grep -B2 'Module class: X.Org Video Driver' /var/log/Xorg.0.log
[  6545.727] (II) Module nvidia: vendor="NVIDIA Corporation"
[  6545.727]    compiled for 4.0.2, module version = 1.0.0
[  6545.727]    Module class: X.Org Video Driver

Lisaks saab infot programmidega glxgears ja glxinfo

$ glxinfo | grep "direct rendering"
direct rendering: Yes

Paketist nvidia-settings utiliidiga saab küsida ja kontrollida NVIDIA töötamist, valides

Applications -> System Tools -> Administration -> NVIDIA X Server Settings

Nvidia-1.gif

Märkused

Tundub, et 2015 aastal on Debian v. 8 Jessie kasutamisel asjakohane lisaks muudele tegevustele paigaldada just nvidia-driver nimeline pakett

$ dpkg -l nvidia-driver
...
ii  nvidia-driver                 340.65-2            amd64               NVIDIA metapackage

Kui kõik kõik on korras, aga monitorid ei ole kaablitega külge ühendatud ja sisselülitatud, siis võib logis olla sellised teated, aitab monitorid töös hoida

# cat /var/log/Xorg.0.log
..
[    10.246] (**) NVIDIA(0): Depth 24, (--) framebuffer bpp 32
[    10.246] (==) NVIDIA(0): RGB weight 888
[    10.246] (==) NVIDIA(0): Default visual is TrueColor
[    10.246] (==) NVIDIA(0): Using gamma correction (1.0, 1.0, 1.0)
[    10.246] (**) NVIDIA(0): Enabling 2D acceleration
[    10.406] (II) NVIDIA(GPU-0): Found DRM driver nvidia-drm (20130102)
[    10.407] (II) NVIDIA(0): NVIDIA GPU Quadro 2000 (GF106GL) at PCI:0:5:0 (GPU-0)
[    10.407] (--) NVIDIA(0): Memory: 1048576 kBytes
[    10.407] (--) NVIDIA(0): VideoBIOS: 70.06.13.00.01
[    10.407] (II) NVIDIA(0): Detected PCI Express Link width: 16X
[    10.407] (--) NVIDIA(0): Valid display device(s) on Quadro 2000 at PCI:0:5:0
[    10.407] (--) NVIDIA(0):     CRT-0
[    10.407] (--) NVIDIA(0):     CRT-1
[    10.408] (--) NVIDIA(0):     DFP-0
[    10.408] (--) NVIDIA(0):     DFP-1
[    10.408] (--) NVIDIA(0):     DFP-2
[    10.408] (--) NVIDIA(GPU-0): CRT-0: 400.0 MHz maximum pixel clock
[    10.408] (--) NVIDIA(GPU-0): CRT-1: 400.0 MHz maximum pixel clock
[    10.408] (--) NVIDIA(0): DFP-0: Internal TMDS
[    10.408] (--) NVIDIA(GPU-0): DFP-0: 330.0 MHz maximum pixel clock
[    10.408] (--) NVIDIA(0): DFP-1: Internal TMDS
[    10.408] (--) NVIDIA(GPU-0): DFP-1: 165.0 MHz maximum pixel clock
[    10.408] (--) NVIDIA(0): DFP-2: Internal TMDS
[    10.408] (--) NVIDIA(GPU-0): DFP-2: 330.0 MHz maximum pixel clock
[    10.408] (EE) NVIDIA(0): Failed to assign any connected display devices to X screen 0. 
[    10.408] (EE) NVIDIA(0):     Set AllowEmptyInitialConfiguration if you want the server
[    10.408] (EE) NVIDIA(0):     to start anyway
[    10.417] (EE) NVIDIA(0): Failing initialization of X screen 0
[    10.417] (II) UnloadModule: "nvidia"
[    10.417] (II) UnloadSubModule: "wfb"
[    10.417] (II) UnloadSubModule: "fb"
[    10.417] (EE) Screen(s) found, but none have a usable configuration.
[    10.417] (EE) 
Fatal server error:
[    10.417] (EE) no screens found(EE) 
[    10.417] (EE)
  • Ebaselge, kas on vajalik nvidia-xconfig abil mingi /etc/X11/xorg.conf tekitada; või kas pärast on 'NVIDIA X Server Settings' graafilise utiliidiga mingi viisakam konf genereerida.

Debian v. 8 Jessie

nvidia-detect soovitab millist draiverit kasutada

# apt-get install nvidia-detect
# nvidia-detect
Detected NVIDIA GPUs:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM206GL [Quadro M2000] [10de:1430] (rev a1)

Checking card:  NVIDIA Corporation GM206GL [Quadro M2000] (rev a1)
Your card is supported by the default drivers.
It is recommended to install the
     nvidia-driver
package.

ning

# apt-get install -t jessie-backports nvidia-driver

Kasulikud lisamaterjalid

Debian v. 9 Stretch

nvidia-detect soovitab millist draiverit kasutada

# apt-get install nvidia-detect
# nvidia-detect
Detected NVIDIA GPUs:
01:00.0 VGA compatible controller [0300]: NVIDIA Corporation GM206GL [Quadro M2000] [10de:1430] (rev a1)

Checking card:  NVIDIA Corporation GM206GL [Quadro M2000] (rev a1)
Your card is supported by the default drivers.
It is recommended to install the
     nvidia-driver
package.

ning

# apt-get install nvidia-driver

Kasulikud lisamaterjalid

NVIDIA kaardi kasutamine arvutis koos teise videokaardiga

Olgu nö tavalisse arvutisse paigaldatud kaks erineva tootja videokaarti, st nad kasutavad erinevat draiverit (nt üks PCIe ja teine PCI siinile). NVIDIA pildi tekitamise kontrollimiseks (juhtimiseks) sobib genereerida esmase sisuga seadistusfail

# nvidia-xconfig

mille tulemusena tekib fail /etc/X11/xorg.conf. Seejärel tuleb küsida NVIDIA videokaardi PCI id väärtus

# lspci | grep NVIDI
01:00.0 VGA compatible controller: NVIDIA Corporation GK107GL [Quadro K600] (rev a1)
01:00.1 Audio device: NVIDIA Corporation GK107 HDMI Audio Controller (rev a1)

teisendada

01:00.0 -> 1:0:0

ja kasutada seda PCI: prefiksiga Device sektsioonis

Section "Device"
  Identifier     "Device0"
  Driver         "nvidia"
  VendorName     "NVIDIA Corporation"
  BusID          "PCI:1:0:0"
EndSection

Hübriid video kasutamine

Hübriid video, mis on tuntud ka kui NVIDIA Optimus tähistab laptop arvutites vahel kasutatavat riistvaralist ja tarkvaralist lahendust, kus

  • riistvaraliselt on kasutada kaks füüsilist graafikakontrollerit (tavaliselt üldotstarbeline onboard Intel + eraldi NVIDIA)
  • füüsiline monitor on ühendatud onboard külge
  • teist videokaarti kasutakse vastavalt vajadusele pildi arvutamiseks
  • teist videokaarti ei saa kasutada iseseisvalt pildi esitamiseks (selles mõttes ei ole Optimus samaväärne olukorraga kui nö desktop arvutis on kaks PCIe x16 siini ja kummalgi on üks video adapter

Tööpõhimõte

Hübrid video kasutamiseks on üldiseks kaks võimalust

  • suuremat video jõudlust vajava rakenduse pildi arvutamisega tegeleb NVIDIA videokaart ja selle tulemust kuvab Indel videokaart
  • kogu desktop pildi arvutamisega tegeleb NVIDIA videkoaart ja seda tulemust kuvab Inteli videokaart

Desktop kasutab NVIDIA video adapterit

  • /etc/X11/xorg.conf sisaldab muu hulgas
Section "Module"
  Load "modesetting"
  Load  "glx"
EndSection

..
Section "Device"
  Identifier  "Card1"
  Driver      "nvidia"
  BusID       "PCI:2:0:0"
  Option      "AllowEmptyInitialConfiguration"
EndSection

...
  • LightDM seadistus sisaldab muu hulgas
# cat /etc/lightdm/lightdm.conf
..
[SeatDefaults]
display-setup-script=/usr/local/bin/switch_nvidia.sh

kus

# cat /usr/local/bin/switch_nvidia.sh 
xrandr --setprovideroutputsource modesetting NVIDIA-0
xrandr --auto
xrandr --dpi 96

Tulemusena peab 'glxgears -info' esitama ca 5500 FPS tulemust. xrandr ütleb nii

Providers: number : 2
Provider 0: id: 0x228 cap: 0x1, Source Output crtcs: 0 outputs: 0 associated providers: 1 name:NVIDIA-0
Provider 1: id: 0x4c cap: 0x2, Sink Output crtcs: 3 outputs: 10 associated providers: 1 name:modesetting

Märkused

  • Tundub, et NVIDIA draiverit ei saa kasutada Xen dom0 keskkonnas mäluhalduse iseärasuste tõttu

Kasulikud lisamaterjalid

Kasulikud lisamaterjalid