Xorg/Guide

From Gentoo Wiki
< Xorg
Jump to:navigation Jump to:search
This page is a translated version of the page Xorg/Guide and the translation is 99% complete.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎polski • ‎svenska • ‎русский • ‎中文(中国大陆)‎ • ‎日本語 • ‎한국어

Xorg är X window server som tillåter användaren att ha en grafisk miljö till sitt förfogande. Denna guide förklarar vad Xorg är, hur man installerar det och de diverse konfigurationsalternativen som finns.

Vad är X window server?

Grafiskt kontra kommandorad

Den genomsnittliga användaren blir kanske lätt skrämd av tanken om att skriva in kommandon i kommandoraden (CLI). Varför skulle man inte kunna peka och klicka sig fram genom friheten som tillhandahålls av Gentoo (och Linux i sin helhet)? Självklart kan man göra det!

Gentoo erbjuder ett brett utbud av pampiga grafiska gränssnitt som fönsterhanterare och skrivbordsmiljöer som kan installeras ovanpå en befintlig installation.

En av de största överraskningarna nya Linux-användare stöter på: grafiska gränssnitt är ingenting mer än ett program (eller i vissa fall en svit av program) som körs på ett system. Det är inte en del av Linux-kärnan eller några andra delar av systemets inre. Med det sagt, GUI:er är kraftfulla verktyg som öppnar upp en arbetsstations grafiska förmågor.

Eftersom standarder är väsentliga så behövs det en standard för att rita och förflytta fönster på en bildskärm, för att samspela mellan datormus, tangentbord och andra grundläggande, men ändå viktiga saker. Detta har skapats och namngets under X window system, förkortat X11 eller enbart X. Detta används av Unix, Linux och Unix-liknande operativsystem runt om i världen.

Programmet som gör det möjligt för Linux-användare att köra grafiska gränssnitt med X11-standarden är Xorg-X11, en fork av XFree86-projektet. XFree86 har bestämt sig för att använda en motstridig licens gentemot GPL-licensen; därför rekommenderas användningen av Xorg istället. XFree86-paket tillhandahålls inte längre av Gentoo-arkivet.

X.org-projektet

X.org-projektet skapade och upprätthåller en fritt utgivningsbar tillämpning av X11-systemet med öppen källkod. Det är en X11-baserad desktop-infrastruktur med öppen källkod.

Xorg ger dig ett gränssnitt mellan hårdvaran och den grafiska mjukvara du vill köra. Förutom det är Xorg dessutom helt nätverksmedveten, dvs att du kan köra program på ett system medan du ser det från ett annat.

Installation

Förbered systemet innan du installerar Xorg. Först och främst, se till att din kernel har stöd för inmatningsapparater och grafikkort. Därefter, förbered /etc/portage/make.conf så att de korrekta drivrutiner och Xorg-paket kompileras och installeras.

Stöd för input-drivrutiner

Stöd för event interface (CONFIG_INPUT_EVDEV) måste aktiveras genom att ändra kärnans konfiguration. Läs Guide för konfiguration av Linux-kärnan om du inte vet hur du sätter upp din Linux-kärna.

KERNEL Aktivera evdev i Linux-kärnan
Device Drivers --->
  Input device support --->
  <*>  Event interface

Lägesinställning av Linux-kärnan

Moderna grafikkort med öppen källa förlitar sig på kernel mode setting (KMS). KMS ger förbättrad grafisk uppstart med mindre flimrande, snabbare växling, en inbyggd rambuffert-konsoll, sömlös övergång mellan konsollen och Xorg, och andra funktioner.

Verifiera att äldre drivrutiner för rambuffertar har avaktiverats

Important
KMS strider mot äldre rambuffertars drivrutiner, samtliga måste förbli avaktiverade i kärnkonfigurationen.

Förbered först kärnan för KMS. Detta steg gäller oavsett vilken grafikdrivrutin som används:

KERNEL Avaktivera stöd för äldre rambuffertar och aktivera basalt stöd rambuffer i konsollen
Device Drivers --->
   Graphics support --->
      Frame Buffer Devices --->
         <*> Support for frame buffer devices --->
         ## (Disable all drivers, including VGA, Intel, NVIDIA, and ATI, except EFI-based Framebuffer Support, only if you are using UEFI)
 
      ## (Further down, enable basic console support. KMS uses this.)
      Console display driver support --->
         <*>  Framebuffer Console Support

Därefter, ge rätt stöd för grafikkortets KMS-drivrutin i Linux-kärnan. Intel, NVIDIA och AMD/ATI är de vanligaste grafikkorten, så följ instruktionerna för respektive kort nedan.

Intel

För Intel-kort, se Linux-kärnans avsnitt i Intel-artikeln.

NVIDIA

För NVIDIA-kort finns det två alternativ. För ett system med enbart öppen källkod, rekommenderas en drivrutin med namnet Nouveau. Det andra alternativet är den proprietära NVIDIA-drivrutinen, som stöds officiellt av NVIDIA. Denna artikeln föredrar Nouveau-drivrutinen, hur som helst, lägg märke till att det kan finnas brister på funktionalitet gällande den.

Utöver Linux-kärnans drivrutiner, kräver en del kort inbyggd programvara med stängd källa. Baserat på vilken drivrutin läsaren väljer borde man läsa respektive artikel för att kolla om inbyggd programvara (från sys-kernel/linux-firmware-paketet) är nödvändigt för deras specifika grafikkort.

KERNEL Stöd för NVIDIA-grafikkort i kärnan
Device Drivers --->
   Graphics support --->
      <M/*>  Nouveau (NVIDIA) cards

AMD/ATI

För modernare AMD/ATI grafikkort (RadeonHD 2000 och över), emerge:a sys-kernel/linux-firmware (paketet innehåller inbyggd programvara från Radeon- och AMDGPU-drivrutiner). När en av dessa paket väl installerats, gör Radeon-drivrutinen till en modul i kärnan eller, om så önskas, konfigurera kärnan som beskrivs i firmware-sektionen av Radeon-artikeln, eller firmware-sektionen i AMDGPU-artikeln för modernare AMD-grafikkort (GCN1.1+).

Äldre grafikkort:

KERNEL AMD/ATI Radeon inställningar
## (Använd inbyggda programvaran radeon-ucode i kärnan, frivilligt om "ATI Radeon" nedan är M)
Device Drivers --->
   Generic Driver Options --->
   [*]  Include in-kernel firmware blobs in kernel binary
  ## # ATI-specifikt grafikkort, (se Radeon-sidan för detaljer om vilka inbyggda programvaror att inkludera)
   (radeon/<CARD-MODEL>.bin ...)
  ## # Specifiera rotkatalogen
   (/lib/firmware/) External firmware blobs to build into the kernel binary
 
## (Aktivera stöd för Radeon KMS)
Device Drivers --->
   Graphics support --->
   <M/*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
   <M/*>    ATI Radeon
   [*]      Enable modesetting on radeon by default
   [ ]      Enable userspace modesetting on radeon (DEPRECATED)

Modernare grafikkort:

KERNEL AMDGPU-inställningar
## (Använd inbyggda programvaran AMDGPU i kärnan, frivilligt om "AMD GPU" nedan är M)
Device Drivers --->
   Generic Driver Options --->
   [*]  Include in-kernel firmware blobs in kernel binary
  ## # AMD-specifikt grafikkort, (se AMDGPU-sidan för detaljer om vilka inbyggda programvaror att inkludera)
   (amdgpu/<CARD-MODEL>.bin ...)
  ## # Specifiera rotkatalogen
   (/lib/firmware/) External firmware blobs to build into the kernel binary
 
## (Aktivera stöd för Radeon KMS)
Device Drivers --->
   Graphics support --->
   <M/*> Direct Rendering Manager (XFree86 4.1.0 and higher DRI support) --->
   <M/*> AMD GPU
         [ /*] Enable amdgpu support for SI parts
         [ /*] Enable amdgpu support for CIK parts 
         [*]   Enable AMD powerplay component  
         ACP (Audio CoProcessor) Configuration  ---> 
             [*] Enable AMD Audio CoProcessor IP support (CONFIG_DRM_AMD_ACP)
         Display Engine Configuration  --->
             [*] AMD DC - Enable new display engine
             [ /*] DC support for Polaris and older ASICs
             [ /*] AMD FBC - Enable Frame Buffer Compression
             [ /*] DCN 1.0 Raven family
   <M/*> HSA kernel driver for AMD GPU devices
Note
På x86/amd64 behöver äldre Radeon-grafikkort (X1900-serien och äldre) ingen ytterligare inbyggd programvara eller någon särskild konfiguration därav. Direct rendering manager (DRM) och ATI Radeon modesetting driver är de enda kärnkonfigurationer som krävs för att den ska köra felfritt.
Note
Linux-kärna >= 3.9 har inte "Enable modesetting on radeon by default" eftersom det medförs som standard. Var inte orolig ifall du inte hittar detta alternativ i nyare kärnor.
Note
Linux-kärna >= 4.15 innehåller "Display Core" (DC) som krävs för att AMDGPU ska fungera. Denna nyare drivrutinen skrevs för GCN5.0 "Vega" och DCN1.0 "Raven Ridge" (APU), men lägger utöver detta till funktionallitet för äldre Radeon-grafikkort från och med GCN1.1 "Southern Islands" och nyare. Planer finns att göra detta frivilliga stöd för äldre Radeon-grafikkort standard, så bli inte orolig ifall du inte hittar detta alternativ i nyare kärnor.

Lämna kärnkonfigurationen, kompilera kärnan och starta om.

Nu när KMS är uppsatt, fortsätt förbereda /etc/portage/make.conf i nästa avsnitt.

Nu när kärnan är förberedd måste några variabler i /etc/portage/make.conf-filen konfigureras innan installationen av Xorg.

Make.conf

Portage känner till USE=X USE-flaggor för att aktivera stöd för X i övriga program (standard för alla desktop-profiler). Säkerställ att denna USE-flaggan läggs till i USE-flagg listan för att försäkra kompatibilitet över hela systemet.

FILE /etc/portage/make.conf
USE="X"

Den första variabeln är VIDEO_CARDS. Denna används för att ställa in önskad drivrutin för ditt grafikkort och är ofta baserat på den typen av grafikkort du har. De mest förekommande inställningarna är nouveau för NVIDIA-grafikkort eller radeon för ATI-grafikkort. Båda drivrutinerna utvecklas aktivt, är väl understödda och har öppen källkod. Om du har ett modernare AMD-grafikkort (Southern Islands och högre), kan du också pröva den nya drivrutinen med öppen källkod, amdgpu. Se AMDGPU-artikeln för mer detaljer.

Note
Du kan också prova de proprietära drivrutinerna från NVIDIA och AMD/ATI, nvidia respektive fglrx. Men, att sätta upp proprietära drivrutiner är utom räckvidd för denna guiden. Vänligen läs Gentoo Linux NVIDIA-guiden och Gentoo Linux ATI FAQ. Om du är osäker på vilken drivrutin att välja, hänvisa till dessa guider för mer information.

intel-drivrutinen må användas på stationära datorer och laptoppar med gemensamma integrerade grafiska chipsets.

Note
VIDEO_CARDS-variabeln kan innehålla fler än ett värde, sålänge varje värde separeras med ett mellanslag.

Den andra variabeln är INPUT_DEVICES och används för att bestämma vilken drivrutin som ska användas för inmatningsapparater.

make.defaults har libinput som standard drivrutin för inmatningsapparater.

För att se nuvarande inställningar, kör:

user $portageq envvar INPUT_DEVICES

I de fallen då inmatningsapparater, så som en Synaptics pekplatta behövs, var säker på att lägga till dem i INPUT_DEVICES i /etc/portage/make.conf-filen:

CODE Exempel på make.conf poster
## (Stöd för mus, tangentbord och Synaptics pekplatta)
INPUT_DEVICES="libinput synaptics"
## (För NVIDIA-kort)
VIDEO_CARDS="nouveau"
## (För AMD/ATI-kort)
VIDEO_CARDS="radeon"

Om de föreslagna inställningarna inte skulle fungera, emerge:a x11-base/xorg-drivers-paketet (se steget nedan). Se vilka alternativ som finns och välj det som gäller för ditt system. Detta exemplet är för ett system med ett tangentbord, mus, Synaptics pekplatta och ett Radeon-grafikkort.

root #emerge --pretend --verbose x11-base/xorg-drivers
 
These are the packages that would be merged, in order:
 
Calculating dependencies... done!
[ebuild   R   ] x11-base/xorg-drivers-1.20-r1::gentoo  INPUT_DEVICES="libinput synaptics -elographics -evdev -joystick -keyboard -mouse -vmmouse -void -wacom" VIDEO_CARDS="nouveau radeon -amdgpu -ast -dummy -fbdev (-freedreno) (-geode) -glint -i915 -i965 -intel -mga -nv -nvidia (-omap) -qxl -r128 -radeonsi -siliconmotion (-tegra) (-vc4) -vesa -via -virtualbox -vmware" 0 KiB

USE-flaggorna har betydelserna:

USE flags for x11-base/xorg-server X.Org X servers

debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
elogind Use elogind to get control over framebuffer when running as regular user
minimal Install a very minimal build (disables, for example, plugins, fonts, most drivers, non-critical features)
selinux !!internal use only!! Security Enhanced Linux support, this must be set by the selinux profile or breakage will occur
suid Enable setuid root program(s)
systemd Enable use of systemd-specific libraries and features like socket activation or session tracking
test Enable dependencies and/or preparations necessary to run tests (usually controlled by FEATURES=test but can be toggled independently)
udev Enable virtual/udev integration (device discovery, power and storage device support, etc)
unwind Enable libunwind usage for backtraces
xcsecurity Build Security extension
xephyr Build the Xephyr server
xnest Build the Xnest server
xorg Build the Xorg X server (HIGHLY RECOMMENDED)
xvfb Build the Xvfb server

Note
suid USE-flaggan är i regel avaktiverad, vilket är okej när, enligt rekommendation, X körs under en logind leverantör som elogind eller systemd. suid USE-flaggan bör dock vara aktiverad i /etc/portage/package.use/xorg-server ifall ingen logind-leverantör används och X körs av en vanlig användare, dvs X startas med startx. Vänligen se den här förvarsnyhetsartikeln. Att ställa in suid skulle i sin tur förhindra tillståndsfel i /dev/tty0 eller virtual console 7.

Emerge

Efter att alla nödvändiga variabler och USE-flaggor ställts in kan Xorg installeras:

root #emerge --ask x11-base/xorg-server
Note
Metapaketet x11-base/xorg-x11 kan installeras istället för den lättare x11-base/xorg-server. x11-base/xorg-x11 och x11-base/xorg-server fungerar det samma ur ett funktionsperspektiv, dock kräver x11-base/xorg-x11 desto fler paket som de flesta system inte behöver. Dessa inkluderar ett stort sortiment av typsnitt i många olika språk. De krävs inte för ett fungerande X11-ramverk.

När installationen är färdig måste en del miljövariabler återinitieras innan vidare fortsättning. Använd source-kommandot på profilen:

root #env-update
root #source /etc/profile

Konfiguration

X servern borde fungera utan vidare justeringar, utan att för hand redigera Xorgs konfigurationsfiler. Den borde upptäcka och konfigurera enheter som bildskärmar, tangentbord och möss.

Prova köra startx utan att redigera någon konfigurationfil. Om Xorg inte startar, eller om du stöter på något annat problem, kan manuell konfiguration av Xorg behövas. Detta förklaras vidare i nästa avsnitt.

För att köra Xorg som icke root-användare, se Icke rot Xorg.

Note
Om ändringar har gjorts på kärnan, glöm inte att starta om datorn innan du kör startx för att använda den nybyggda kärnan. Om kärnan uppdaterats till en nyare version under tiden, måste förmodligen din bootloaders konfiguration dessutom förnyas.

xorg.conf.d-katalogen

Important
Konfigurationsfiler i xorg.conf.d borde ses som en sista utväg. Om det är möjligt, är det önskvärt att köra Xorg utan någon särskilld konfiguration.

De flesta av Xorgs konfigurationsfiler lagras i /etc/X11/xorg.conf.d/. Om den katalogen inte existerar, skapa den. Var fil ges ett unikt namn och slutar med .conf. Filerna läses i alfanumerisk ordning. Till exempel, 10-evdev.conf kommer att läsas innan 20-synaptics.conf; a-evdev.conf kommer att läsas innan b-synaptics.conf osv. Att numerera filerna är inte ett krav, men det hjälper med organiseringen. Organisering är hjälpsamt när man felsöker felaktiga konfigurationsfiler.

Note
Xorg ger exempel på konfigurationer i /usr/share/doc/xorg-server-${version}/xorg.conf.example.bz2. Dessa kan användas vid skapandet av egna, skräddarsydda konfigurationsfiler i /etc/X11/xorg.conf.d/. Exemplena givna är väl kommenterade, men om mer dokumentation vad gäller syntax behövs, står man xorg.conf till din förfogenhet. Andra exemplen kan hittas i avsnittet Andra resurser i slutet på denna guide.

Användning av startx

Prova startx för att starta X servern. startx är ett skript (det installeras av x11-apps/xinit) som kör en X session; dvs, det startar X servern och några grafiska program ovanpå det. Det bestämmer vilka program att köra med hjälp av följande logik:

  • Om en fil vid namn .xinitrc finns i hemkatalogen, kommer den att köra kommandona listade där.
  • Annars kommer den att läsa värdet på XSESSION-variabeln från /etc/env.d/90xsession-filen och i enlighet därmed köra den relevanta sessionen. Värden för XSESSION finns tillgängliga under /etc/X11/Sessions/. För att ställa en systemomfattande standardsession:
root #echo XSESSION="Xfce4" > /etc/env.d/90xsession
Detta skapar 90xsession-filen och sätter X-standardsessionen till Xfce. Kom ihåg att köra env-update efter att ändringar gjorts i 90xsession.
user $startx

Om ingen fönsterhanterare har installerats kommer en helsvart skärm att presenteras. Eftersom detta också kan vara tecken på att något är fel, kan x11-wm/twm och x11-terms/xterm-paketen installeras endast för att testa X.

Efter att programmen installerats, kör startx igen. Några xterm-fönster borde dyka upp, vilket gör det lättare att verifiera att allt fungerar. När man är nöjd med resultaten, använd depclean på x11-wm/twm och x11-terms/xterm om de installerats enligt stegen ovan för att ta bort testpaketen. De behövs inte för att sätta upp en ordentlig skrivbordsmiljö.

Sessionen (programmet att köra) kan också ges som argument till startx:

user $startx /usr/bin/startfluxbox

Dessutom, för att medföra X11-server alternativ, föregå argumenten med två bindestreck.

user $startx -- vt7

Justera X-inställningar

Sätt skärmupplösningen

Om skärmupplösningen är fel, måste du kontrollera två delar i din xorg.conf.d-konfiguration. Först och främst har du Screen-delen som listar de upplösningar din X server kommer köra med. Denna del kanske inte listar några upplösningar överhuvudtaget. Om så är fallet kommer Xorg att uppskatta upplösningarna baserat på informationen i nästa del, Monitor.

Låt oss nu ändra upplösningen. I exemplet härnäst från /etc/X11/xorg.conf.d/40-monitor.conf lägger vi till PreferredMode-raden så att vår X server startar på 1440x900 ursprungligen. Option i Device-delen måste motsvara namnet på din skärm (DVI-0), vilket kan erhållas genom att köra xrandr (emerge xrandr). Argumentet efter skärm namnet (i Device-delen) måste motsvara Identifier i Monitor-delen.

FILE /etc/X11/xorg.conf.d/40-monitor.conf
Section "Device"
  Identifier  "RadeonHD 4550"
  Option      "Monitor-DVI-0" "DVI screen"
EndSection
Section "Monitor"
  Identifier  "DVI screen"
  Option      "PreferredMode" "1440x900"
EndSection

Kör X (startx) för att se att den använder önskad upplösning.

Flera bildskärmar

Fler än en bildskärm kan upprättas i /etc/X11/xorg.conf.d/. Ge vardera skärm ett unikt namn, sedan lista dess fysiska position, exempelvis "RightOf" eller "Above" en annan skärm. Följande exempel visar hur man konfigurerar en DVI och en VGA-skärm, med VGA-skärmen på höger sida:

FILE /etc/X11/xorg.conf.d/40-monitor.conf
Section "Device"
  Identifier "RadeonHD 4550"
  Option     "Monitor-DVI-0" "DVI screen"
  Option     "Monitor-VGA-0" "VGA screen"
EndSection
Section "Monitor"
  Identifier "DVI screen"
EndSection
Section "Monitor"
  Identifier "VGA screen"
  Option     "RightOf" "DVI screen"
EndSection

Konfigurera tangentbordet

För att ställa in X att använda ett internationellt tangentbord, skapa lämplig konfigurationsfil under /etc/X11/xorg.conf.d/. Följande exempel är för ett tjeckiskt tangentbordslayout:

FILE /etc/X11/xorg.conf.d/30-keyboard.conf
Section "InputClass"
  Identifier "keyboard-all"
  Driver "evdev"
  Option "XkbLayout" "us,cz"
  Option "XkbModel" "logitech_g15"
  Option "XkbRules" "xorg"
  Option "XkbOptions" "grp:alt_shift_toggle,grp:switch,grp_led:scroll,compose:rwin,terminate:ctrl_alt_bksp"
  Option "XkbVariant" ",qwerty"
  MatchIsKeyboard "on"
EndSection

For methods of switching the keyboard layout see the Keyboard layout switching article.

"Terminate"-kommandot (terminate:ctrl_alt_bksp) låter användaren avsluta X-sessionen genom att trycka på Ctrl+Alt+Backspace. Dock, kommer detta avsluta X abrupt - något som användare kanske vill undvika. Det kan vara användbart när program har frusit fast, eller när man ändrar och justerar sin Xorg-miljö. Använd den med försiktighet - de flesta program tycker inte om att avrättas på detta sätt. Några, om inte allt, av den data som inte hunnit skrivas till hårddisken (information förvarade i öppna dokument) kan gå förlorade.

För mer information gällande XkbModel och XkbOptions, vänd dig till /usr/share/X11/xkb/rules/base.lst och man xkeyboard-config.

Färdigställning

Kör startx och var nöjd med resultatet. Gratulerar, du har nu (förhoppningsvis) en fungerande Xorg! Nästa steg är att installera en lämplig fönsterhanterare eller skrivbordsmiljö, som KDE, GNOME eller Xfce. Information gällande installation av dessa skrivbordsmiljöer kan hittas på denna wiki.

Se även

  • Wayland — a simpler and modern replacement for X display server.
  • X (Security Handbook) — säkerhetshandbokens inlägg om säkring av X-servern.

Externa resurser

Skapande och redigering av konfigurationsfiler

man xorg.conf och man evdev ger snabba men ändå kompletta referenser gällande syntaxen som används av dessa konfigurationsfiler. Var säker på att öppna dem i terminalen när du redigerar Xorg-konfigurationsfiler.

Exempelkonfigurationer kan hittas i /usr/share/doc/xorg-server-*/xorg.conf.example.bz2.

Där finns även många online-resurser om redigering under /etc/X11/. Bara några få listas här; använd din favoritsökmotor för att upptäcka fler.

Andra resurser

Mer information gällande installation och konfiguration av diverse grafiska skrivbordsmiljöer och applikationer kan hittas under.

Vid uppgradering till xorg-server 1.9 eller högre, se till att läsa migrationsguiden.

X.org ger många FAQs på deras webbsida, utöver deras övriga dokumentation.


This page is based on a document formerly found on our main website gentoo.org.
The following people contributed to the original document: Sven Vermeulen (SwifT) ,
They are listed here because wiki history does not allow for any external attribution. If you edit the wiki article, please do not add yourself here; your contributions are recorded on each article's associated history page.