Xorg-7 Testing og Konfigurasjon

Teste Xorg

[Notat]

Notat

Før du starter Xorg for første gang, er det nyttig å gjenoppbygge bibliotekets hurtiglager ved å kjøre ldconfig som root bruker.

[Notat]

Notat

Før du starter Xorg for første gang, er det ofte nødvendig å starte systemet på nytt for å sikre at alle passende nisser startes og passende sikkerhetsproblemer er riktig innstilt. Som et alternativ kan utlogging og innlogging fungere, men dette er ikke testet.

[Advarsel]

Advarsel

Hvis Xorg henger av en eller annen grunn (for eksempel mangler en skikkelig inndata driver), kan systemet slutte å svare på brukerinndata. Som en forholdsregel kan du aktivere en magisk SysRq tast før du tester Xorg. Som root bruker, utsted:

echo 4 > /proc/sys/kernel/sysrq

Så hvis Xorg henger, er det mulig å bruke Alt+SysRq+R for å tilbakestille tastaturmodus. Nå skal det kunne brukes Ctrl+Alt+Fx (erstatte x med et VT nummer) for å bytte til en annen VT. Hvis det fungerer, logg inn og drep Xorg ved å bruke kommandolinjen i den nye VT.

For å teste Xorg installasjonen, utsted startx. Denne kommandoen viser en grunnleggende vindusbehandler kalt twm med tre xterm vinduer og ett xclock vindu. Xterm vinduet øverst til venstre er en påloggingsterminal og kjøre exit fra denne terminalen vil avslutte X Window økten. Det tredje xterm vinduet kan bli skjult på systemet ditt av de to andre xtermene.

[Notat]

Notat

Ved testing av Xorg med twm vindusbehandler, det blir flere advarsler i Xorg loggfilen, $HOME/.local/share/xorg/Xorg.0.log, om manglende fontfiler. I tillegg vil det være flere advarsler på tekstmodus terminalen (vanligvis tty1) om manglende fonter. Disse advarslene påvirker ikke funksjonaliteten, men kan fjernes om ønskelig ved å installere Xorg Legacy Fonts.

[Notat]

Notat

På systemer med NVIDIA GPUer som bruker Nouveau kjernedriveren, kan du støte på sporadiske GPU krasj og henger. Hvis dette problemet oppstår, nedgrader til den nyeste versjonen av Linux 6.1-kjernen.

Vanligvis er det ingen spesifikk konfigurasjon som kreves for Xorg, men tilpasning er mulig. For detaljer, se «Sette opp Xorg Enheter» under.

Sjekke Direkte Gjengivelsesinfrastruktur (DRI) Installasjonen

DRI er et rammeverk for å gi programvare tilgang til grafikkmaskinvare på en sikker og effektiv måte. Den er installert i X som standard (ved hjelp av Mesa) hvis du har et støttet skjermkort.

For å sjekke om DRI drivere er riktig installert, sjekk loggfilen $HOME/.local/share/xorg/Xorg.0.log (eller /var/log/Xorg.0.log hvis du har bygget Xorg-Server-21.1.13 med suid biten) for uttalelser som:

(II) modeset(0): [DRI2] Setup complete
(II) modeset(0): [DRI2]   DRI driver: crocus
(II) modeset(0): [DRI2]   VDPAU driver: va_gl
[Notat]

Notat

DRI konfigurasjonen kan variere hvis du bruker alternative drivere, for eksempel som tradisjonelle DDX drivere, eller proprietære drivere fra NVIDIA eller AMD.

En annen måte å finne ut om DRI fungerer som den skal, er å bruke en av to valgfrie installerte OpenGL demoprogrammer i Mesa-24.2.3. Fra en X terminal, kjør glxinfo -B og se etter uttrykket:

name of display: :0
display: :0  screen: 0
direct rendering: Yes

Hvis direkte gjengivelse er aktivert, kan du legge til detaljer ved å kjøre LIBGL_DEBUG=verbose glxinfo. Dette vil vise drivere, enhetsnoder og filer som brukes av DRI systemet.

For å bekrefte at DRI2 maskinvareakselerasjon fungerer, kan du (fortsatt i X terminalen) kjør kommandoen glxinfo | grep -E "(OpenGL vendor|OpenGL renderer|OpenGL version)". Hvis det melder noe annet enn Software Rasterizer så har du en akselerasjon som virker for brukeren som kjørte kommandoen.

Hvis maskinvaren din ikke har noen DRI2 driver tilgjengelig, vil den bruke en programvarerasterer for direkte gjengivelse. I slike tilfeller kan du bruke en ny, LLVM akselerert, programvarerasterer kalt LLVMPipe. For å bygge LLVMPipe bare sørg for at LLVM-19.1.0 er tilstede ved Mesa byggetid. Merk at all dekoding gjøres på CPU i stedet for GPUen, slik at skjermen vil kjøre langsommere enn med maskinvareakselerasjon. For å sjekke om du bruker LLVMpipe, se gjennom utdataene til glxinfo kommandoen ovenfor. Et eksempel på utdata med programvarerasterer er vist nedenfor:

OpenGL vendor string: VMware, Inc.
OpenGL renderer string: Gallium 0.4 on llvmpipe (LLVM 3.5, 256 bits)
OpenGL version string: 3.0 Mesa 10.4.5

Du kan også tvinge LLVMPipe ved å eksportere LIBGL_ALWAYS_SOFTWARE=1 miljøvariabelen når Xorg starter.

Igjen, hvis du har bygget Mesa OpenGL demoene, kan du også kjøre testprogrammet glxgears. Dette programmet får opp et vindu med tre gir spinnende rundt. X terminalen vil vise hvor mange bilder det ble tegnet hvert femte sekund, så dette vil gi en grov benchmark. Vinduet er skalerbar, og bildene som tegnes per sekund er svært avhengig av størrelsen på vinduet. På noe maskinvare, glxgears vil kjøre synkronisert med det vertikale oppdateringssignalet og bildefrekvensen vil være omtrent den samme som skjermens oppdateringsfrekvens.

Feilsøke Xorg

Når du starter xorg, er det et par måter å sjekke problemer du måtte ha. Hvis systemet kommer opp, kan du se hvilken driver som brukes ved å kjøre xdriinfo. Hvis det er problemer eller bare for å sjekke, se på Xorg.0.log.

Plasseringen av Xorg.0.log avhenger av hvordan Xorg er installert. Hvis instruksjonene i boken følges nøye og Xorg startes fra kommandolinjen, vil den være plassert i $HOME/.local/share/xorg/ mappen. Hvis Xorg startes av en skjermbehandler (f.eks. lightdm-1.32.0, sddm-0.21.0, or GDM-46.2) eller hvis $XORG_PREFIX/bin/Xorg har suid biten satt, vil den ligge i /var/log/ mappen.

Xorg.0.log Problemer

Når du ser på Xorg.0.log, se etter oppføringer som (EE) eller (WW). Nedenfor er noen vanlige oppføringer:

(WW) Open ACPI failed (/var/run/acpid.socket)

Denne advarselen er fordi acpid-2.0.34 ikke er installert. Hvis du ikke er på en bærbar datamaskin, kan den trygt ignoreres. Installer på en bærbar datamaskin acpid-2.0.34 for å aktivere handlinger som å gjenkjenne når lokket er lukket.

(WW) VGA arbiter: cannot open kernel arbiter, no multi-card support

Denne advarselen vises når en vanlig bruker starter Xorg. Biblioteket libpciaccess.so gir denne advarselen når den prøver å åpne /dev/vga_arbiter. Hvis det ikke er flere enn ett eldre PCI (ikke PCIe) grafikkort på systemet, det kan trygt ignoreres. Hvis det virkelig er nødvendig, kan tillatelsene til denne enheten endres ved å legge til en udev regel og legge til den lokale brukeren i videogruppen. Som root bruker:

cat > /etc/udev/rules.d/99-vga-arbiter.rules << EOF
# /etc/udev/rules.d/99-vga-arbiter.rules: Set vga_arbiter group/mode

ACTION=="add", KERNEL=="vga_arbiter", GROUP="video" MODE="0660"
EOF

usermod -a -G video <user running xorg>

Hybrid Grafikk

Hybrid Grafikk er fortsatt i eksperimentell tilstand for Linux. Xorg utviklere har utviklet en teknologi kalt PRIME som kan brukes til å bytte mellom integrert og muxless diskret GPU etter ønske. Automatisk veksling er ikke mulig for øyeblikket.

For å bruke PRIME for GPU bytte, sørg for at du bruker Linux Kernel 3.4 eller nyere (anbefalt). Du trenger siste DRI og DDX drivere for din maskinvare og Xorg Server 1.13 eller senere.

Xorg Server burde laste begge GPU driverne automatisk. Du kan sjekke det ved å kjøre:

xrandr --listproviders

Det bør for eksempel være to (eller flere) leverandører oppført, for eksempel:

Providers: number : 2
Provider 0: id: 0x7d cap: 0xb, Source Output, Sink Output, Sink Offload crtcs: 3 outputs: 4 associated providers: 1 name:modesetting
Provider 1: id: 0x56 cap: 0xf, Source Output, Sink Output, Source Offload, Sink Offload crtcs: 6 outputs: 1 associated providers: 1 name:modesetting

For å kunne kjøre en GLX applikasjon på en diskret GPU, vil du må kjøre følgende kommando, hvor <provider> er id-en til det kraftigere diskrete kortet, og <sink> er ID-en til kortet som har en skjerm tilkoblet:

xrandr --setprovideroffloadsink <provider> <sink>
[Notat]

Notat

Med Xorg modusinnstillingsdriver, som er DRI3 kompatibel, er ikke kommandoen ovenfor lenger nødvendig. Det skader imidlertid ikke.

Deretter må du eksportere DRI_PRIME=1 miljøvariabelen hver gang du vil at den kraftige GPUen skal brukes. For eksempel,

DRI_PRIME=1 glxinfo | grep -E "(OpenGL vendor|OpenGL renderer|OpenGL version)"

vil vise OpenGL leverandør, renderer og versjon for den diskrete GPUen.

Hvis den siste kommandoen rapporterer samme OpenGL renderer med og uten DRI_PRIME=1, må du sjekke installasjonen.

Sette opp Xorg Enheter

For de fleste maskinvarekonfigurasjoner vil moderne Xorg automatisk få serverkonfigurasjonen riktig uten brukerintervensjon. Det er imidlertid noen tilfeller der automatisk konfigurasjon vil være feil. Følgende er noen eksempler på manuelle konfigurasjonselementer som kan være nyttige i disse tilfellene.

Sette opp X Inndataenheter

For de fleste inndataenheter vil ingen ekstra konfigurasjon være nødvendig. Denne delen er kun gitt for informasjonsformål.

Et eksempel på standard XKB oppsett kan se ut som følgende (utført som root bruker):

cat > /etc/X11/xorg.conf.d/xkb-defaults.conf << "EOF"
Section "InputClass"
    Identifier "XKB Defaults"
    MatchIsKeyboard "yes"
    Option "XkbLayout" "fr"
    Option "XkbOptions" "terminate:ctrl_alt_bksp"
EndSection
EOF

«XkbLayout» linjen er et eksempel for en fransk (AZERTY) tastatur. Endre den til din tastaturmodell. Den linjen er ikke nødvendig for et QWERTY (USA) tastatur.

Finjustere Skjerminnstillinger

Hvis du vil angi skjermoppløsningen for Xorg, kjør først xrandr i en X terminal for å liste de støttede oppløsninger og tilsvarende oppdateringsfrekvenser. For eksempel, det gir ut følgende for én skjerm:

Screen 0: minimum 16 x 16, current 5760 x 2160, maximum 32767 x 32767
DP-1 connected primary 3840x2160+0+0 (normal left inverted right x axis y axis) 600mm x 340mm
   3840x2160     59.98*+
   2048x1536     59.95
   1920x1440     59.90
   1600x1200     59.87
   1440x1080     59.99
   1400x1050     59.98
   1280x1024     59.89
   1280x960      59.94
   1152x864      59.96
   1024x768      59.92
   800x600       59.86
   640x480       59.38

Fra utdataen kan vi se at skjermen er identifisert DP-1. Velg en passende oppløsning fra utdatalisten, for eksempel 1920x1440. Deretter som root bruker, opprett en konfigurasjonsfil for Xorg serveren:

cat > /etc/X11/xorg.conf.d/monitor-DP-1.conf << "EOF"
Section "Monitor"
    Identifier  "DP-1"
    Option      "PerferredMode" "1920x1440"
EndSection
EOF

Noen ganger xrandr kan ikke oppdage noen oppløsningsinnstillinger som støttes av skjermen. Det skjer vanligvis med virtuelle skjermer av virtuelle maskinforvaltere som qemu-9.1.0 eller VMWare: en virtuell skjerm faktisk støtter alle par med heltall i et område som oppløsningen, men xrandr vil bare liste noen få. Å bruke en oppløsning ikke oppført av xrandr, først kjør cvt for å få moduslinjen for oppløsningen. For eksempel:

cvt 1600 900
# 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz
Modeline "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync

Som root bruker, opprette en Xorg serverkonfigurasjonsfil som inneholder denne moduslinjen, og spesifiser modusen som foretrukket modus:

cat > /etc/X11/xorg.conf.d/monitor-DP-1.conf << "EOF"
Section "Monitor"
    Identifier  "DP-1"
    Modeline    "1600x900_60.00"  118.25  1600 1696 1856 2112  900 903 908 934 -hsync +vsync
    Option      "PerferredMode"   "1600x900_60.00"
 EndSection
 EOF

Noen avanserte LCD skjermer støtter en oppdateringsfrekvens høyere enn 100 Hz men xrandr kan ikke gjenkjenne den støttede oppdateringsfrekvens og bruker 60 Hz i stedet. Dette problemet ville hindre deg fra å utnytte skjermens fulle kapasitet, og kan forårsake at skjermen flimrer eller viser «figurer» som mesh eller rutenett. For å løse problemet, bruk igjen cvt for å få moduslinjen med en egendefinert oppdateringsfrekvens:

cvt 3840 2160 144
# 3840x2160 143.94 Hz (CVT) hsync: 338.25 kHz; pclk: 1829.25 MHz
Modeline "3840x2160_144.00"  1829.25  3840 4200 4624 5408  2160 2163 2168 2350 -hsync +vsync

Deretter limer du den inn i Xorg serverens konfigurasjonsfil og setter den inn som den foretrukne modusen.

Et annet vanlig oppsett er å ha flere serveroppsett for bruk i ulike miljøer. Selv om serveren automatisk oppdager tilstedeværelsen av en annen skjerm, kan den få rekkefølgen feil:

cat > /etc/X11/xorg.conf.d/server-layout.conf << "EOF"
Section "ServerLayout"
    Identifier     "DefaultLayout"
    Screen      0  "Screen0" 0 0
    Screen      1  "Screen1" LeftOf "Screen0"
    Option         "Xinerama"
EndSection
EOF

Når du drar et vindu i twm (eller et ikke-sammensatt vindusbehandler) horisontalt, kan du observere at de vertikale grensene av vinduet er delt inn i flere segmenter. Dette er et eksempel av de visuelle artefaktene kalt skjermrivning. Lag en konfigurasjonsfil for å løse problemene med skjermrivning som aktiverer skjermrivningfrie alternativet. Merk at du må ha skjermrivningfrie oppdatering brukt fra Xorg-Server-21.1.13 for at dette skal fungere ordentlig, og det kan evt øke minnetildelingen og redusere ytelsen.

cat > /etc/X11/xorg.conf.d/20-tearfree.conf << "EOF"
Section "Device"
   Identifier "Graphics Adapter"
   Driver     "modesetting"
   Option     "TearFree" "true"
EndSection
EOF

Med moderne Xorg, liten eller ingen ekstra grafikkortkonfigurasjon er nødvendig. Hvis du skulle trenge ekstra alternativer sendt til din videodriver, legg dem til i Device seksjonen også. Alternativene som støttes av modusinnstillingsdriveren er dokumentert i manualsiden modesetting(4).