106.1 Lecke 1
Tanúsítvány: |
LPIC-1 |
---|---|
Verzió: |
5.0 |
Témakör: |
106 Felhasználói felületek és asztalok |
Fejezet: |
106.1 Az X11 telepítése és konfigurálása |
Lecke: |
1 of 1 |
Bevezetés
Az X Window System egy olyan szoftvercsomag, amely szöveg és grafika megjelenítésére szolgál a képernyőn. Az X-kliens általános megjelenését és kialakítását nem az X Window System határozza meg, hanem minden egyes X-kliens, egy ablakkezelő (window manager) (pl. Window Maker, Tab Window Manager) vagy egy teljes asztal-környezet (desktop environment), mint például a KDE, GNOME vagy Xfce. Az asztali környezetekkel egy későbbi leckében foglalkozunk. Ez a lecke az X Window System mögöttes architektúrájára és az X Window System általános eszközeire összpontosít, amelyeket egy rendszergazda az X konfigurálásához használhat.
Az X Window System platformokon ível át, és különböző operációs rendszereken fut, mint például a Linux, a BSD-k, a Solaris és más Unix-szerű rendszerek. Az Apple macOS és a Microsoft Windows számára is elérhetőek implementációk.
A modern Linux disztribúciókban használt X protokoll elsődleges verziója az X.org 11-es verziója, amelyet általában X11-ként láthatunk leírva. Az X-protokoll az X-kliens és az X-szerver közötti kommunikációs mechanizmus. Az X-kliens és az X-szerver közötti különbségről az alábbiakban lesz szó.
Note
|
Az X Window System elődje egy W nevű window system volt, amely az IBM, a DEC és az MIT közös fejlesztési munkája volt. Ez a szoftver az 1984-es Project Athena projekt keretében született. Amikor a fejlesztők egy új megjelenítő szerveren kezdtek dolgozni, az angol ábécé következő betűjét választották: “X”. Az X Window System fejlődését jelenleg a MIT X Consortium irányítja. |
X Window System Architecture
Az X Window System biztosítja az alapvető kétdimenziós (és a kiterjesztések révén háromdimenziós) alakzatok kijelzőre rajzolásának mechanizmusait. A rendszer egy kliensre és egy szerverre oszlik, és a legtöbb olyan telepítés esetén, ahol grafikus asztalra van szükség, mindkét komponens ugyanazon a számítógépen van jelen. A kliens egy alkalmazás, például egy terminálemulátor, egy játék vagy egy webböngésző formájában jelenik meg. Minden kliensalkalmazás tájékoztatja az X-szervert az ablakának helyéről és méretéről a számítógép képernyőjén. A kliens kezeli azt is, hogy mi kerüljön az adott ablakba, az X-szerver pedig a kért ábrázolást rajzolja ki a képernyőre. Az X Window System kezeli az olyan eszközökről érkező bemenetet is, mint az egerek, billentyűzetek, trackpadek stb.
Az X Window System hálózaton is használható, és egy hálózat különböző számítógépeiről több X-kliens is küldhet rajzkéréseket egyetlen távoli X-szervernek. Ennek oka az, hogy a rendszergazda vagy a felhasználó egy távoli rendszeren hozzáférhessen egy olyan grafikus alkalmazáshoz, amely a helyi rendszerén esetleg nem érhető el.
Az X Window System egyik legfontosabb jellemzője, hogy moduláris. Az X Window System fennállása során újabb és újabb funkciókat fejlesztettek ki és adtak hozzá a keretrendszerhez. Ezeket az új komponenseket csak az X-szerver bővítéseként adták hozzá, az X11 protokoll alapját érintetlenül hagyva. Ezek a kiterjesztések a Xorg könyvtárfájlokban találhatók. Példák az Xorg könyvtárakra: Az X-szervert kibővített funkciókkal ellátó libXrandr
, libXcursor
, libX11
, libxkbfile
, valamint még sok más.
A display manager (kijelzőkezelő) grafikus bejelentkezést biztosít a rendszerbe. Ez a rendszer lehet egy helyi vagy egy hálózaton keresztüli számítógép. A kijelzőkezelő a számítógép indítása után indul el, és elindít egy X-szerver munkamenetet a hitelesített felhasználó számára. A kijelzőkezelő felelős az X-szerver működésben tartásáért is. Példaként a GDM, az SDDM és a LightDM kijelzőkezelőket említhetjük.
A futó X-szerver minden egyes példánya rendelkezik egy display name azonosítóval, ez pedig az alábbiakat tartalmazza:
hostname:displaynumber.screennumber
A display name azt is megadja a grafikus alkalmazásnak, hogy hol és melyik hoston kell megjeleníteni (ha távoli X-kapcsolatot használ).
A hostname
annak a rendszernek a nevére utal, amely az alkalmazást megjeleníti. Ha a hostnév hiányzik a megjelenítési névből, akkor azt feltételezi, hogy a lokális host az.
A displaynumber
a használatban lévő “képernyők” gyűjteményére utal, legyen az egyetlen laptop képernyője vagy egy munkaállomáson lévő több képernyő. Minden futó X-szerver munkamenetnek van egy kijelzőszáma, amely a 0
-val kezdődik..
Az alapértelmezett screennumber
a 0
. Ez akkor fordulhat elő, ha csak egy fizikai képernyő vagy több fizikai képernyő van úgy konfigurálva, hogy egy képernyőként működjön. Ha egy többmonitoros beállításban az összes képernyő egyetlen logikai képernyővé van összevonva, az alkalmazásablakok szabadon mozgathatók a képernyők között. Azokban a helyzetekben, amikor az egyes képernyők úgy vannak konfigurálva, hogy egymástól függetlenül működjenek, minden egyes képernyő a bennük megnyíló alkalmazásablakokat tartalmazza és az ablakok nem mozgathatók egyik képernyőről a másikra. Minden független képernyőhöz saját számot rendelnek. Ha csak egy logikai képernyő van használatban, akkor a pont és a képernyőszám elhagyható.
A futó X-munkamenet megjelenített nevét a DISPLAY
környezeti változó tárolja:
$ echo $DISPLAY :0
A kimenet a következőket tartalmazza:
-
A használatban lévő X-szerver a helyi rendszeren van, ezért a kettőspont után balra nem jelenik meg semmi.
-
Az aktuális X-szerver munkamenet az első, amit a kettőspontot közvetlenül követő
0
jelez. -
Csak egy logikai képernyő van használatban, ezért a képernyőszám nem látható.
A koncepció további ábrázolása a következő ábrán látható:
- (A)
-
Egyetlen monitor, egyetlen kijelzőkonfigurációval és egyetlen képernyővel.
- (B)
-
Egyetlen kijelzőként konfigurálva, két fizikai monitorral, amelyek egy képernyőként vannak konfigurálva. Az alkalmazásablakok szabadon mozgathatók a két monitor között.
- (C)
-
Egyetlen kijelzőkonfiguráció (ahogyan azt a
:0
jelzi), azonban minden egyes monitor egy független képernyő. A két képernyő továbbra is ugyanazokat a beviteli eszközöket, például billentyűzetet és egeret használja, azonban a:0.0
képernyőn megnyitott alkalmazás nem mozgatható át a:0.1
képernyőre és fordítva.
Ha egy alkalmazást egy adott képernyőn szeretnénk elindítani, akkor az alkalmazás elindítása előtt adjuk meg a képernyő számát a DISPLAY
környezeti változónak:
$ DISPLAY=:0.1 firefox &
Ez a parancs elindítja a Firefox webböngészőt a fenti ábrán jobbra látható képernyőn. Egyes eszköztárak parancssori opciókat is biztosítanak, amelyekkel utasíthatjuk az alkalmazást, hogy egy megadott képernyőn fusson. Lsd a --screen
és --display
parancsokat a gtk-options(7)
man oldalon.
X-szerver konfiguráció
Hagyományosan az X-szerver konfigurálására használt elsődleges konfigurációs fájl az /etc/X11/xorg.conf
fájl. A modern Linux disztribúciókban az X-szerver futás közben, az X-szerver indításakor konfigurálja magát, így előfordulhat, hogy nem létezik xorg.conf
fájl.
Az xorg.conf
fájl különálló szakaszokra van felosztva, amelyeket szekcióknak (sections) nevezünk. Minden szakasz a Section
kifejezéssel kezdődik, majd ezt követően a section name következik, amely egy komponens konfigurációjára utal. Minden Section
egy megfelelő EndSection
szakasz végződéssel zárul. Egy tipikus xorg.conf
fájl a következő szakaszokat tartalmazza:
InputDevice
-
Egy adott billentyűzet- vagy egérmodell konfigurálására szolgál.
InputClass
-
A modern Linux disztribúciókban ez a szakasz általában egy külön konfigurációs fájlban található, amely az
/etc/X11/xorg.conf.d/
alatt található. AzInputClass
a hardvereszközök osztályának, például billentyűzeteknek és egereknek a konfigurálására szolgál, nem pedig egy adott hardverre. Az alábbiakban látható egy példa az/etc/X11/xorg.conf.d/00-keyboard.conf
fájlra:Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "us" Option "XkbModel" "pc105" EndSection
Az
XkbLayout
opció meghatározza a billentyűk elrendezését a billentyűzeten, például nyelv, Dvorak, bal- vagy jobbkezes és QWERTY. AzXkbModel
opció a használt billentyűzet típusának meghatározására szolgál. A modellek, elrendezések és leírásaik táblázatát azxkeyboard-config(7)
beállításban találjuk. A billentyűzetkiosztásokhoz tartozó fájlok a/usr/share/X11/xkb
állományban találhatók. Egy példa a görög Polytonic billentyűzetkiosztásra egy Chromebook számítógépen a következőképpen néz ki:Section "InputClass" Identifier "system-keyboard" MatchIsKeyboard "on" Option "XkbLayout" "gr(polytonic)" Option "XkbModel" "chromebook" EndSection
Alternatív megoldásként a billentyűzetkiosztás egy futó X munkamenet alatt is módosítható a
setxkbmap
paranccsal. Íme egy példa arra, ahogy ez a parancs a görög Polytonic elrendezést állítja be egy Chromebook számítógépen:$ setxkbmap -model chromebook -layout "gr(polytonic)"
Ez a beállítás csak addig tart, amíg a használt X munkamenet. Ha véglegesíteni szeretnénk ezeket a változtatásokat, módosítsuk az
/etc/X11/xorg.conf.d/00-keyboard.conf
fájlt úgy, hogy tartalmazza a szükséges beállításokat.NoteA
setxkbmap
parancs az X Keyboard Extension (XKB) parancsot használja. Ez egy példa az X Window System kiegészítő funkcionalitására a kiterjesztések használata révén.A modern Linux disztribúciók biztosítják a
localectl
parancsot asystemd
segítségével, amely szintén használható a billentyűzetkiosztás módosítására, és automatikusan létrehozza az/etc/X11/xorg.conf.d/00-keyboard.conf
konfigurációs fájlt. Íme még egy példa a görög Polytonic billentyűzet beállítására egy Chromebookon, ezúttal alocalectl
parancs segítségével:$ localectl --no-convert set-x11-keymap "gr(polytonic)" chromebook
A
--no-convert
kapcsolót itt arra használjuk, hogy megakadályozzuk, hogy alocalectl
módosítsa a host konzol billentyűzettérképét. Monitor
-
A
Monitor
szakasz leírja a használt fizikai monitort és annak csatlakozási helyét. Az alábbi példakonfigurációban egy hardveres monitor van csatlakoztatva a második kijelzőporthoz, és elsődleges monitorként van használva.Section "Monitor" Identifier "DP2" Option "Primary" "true" EndSection
Device
-
A
Device
szakasz a használt fizikai videokártyát írja le. A szakasz tartalmazza a videokártya meghajtójaként használt kernelmodult és annak fizikai helyét az alaplapon.Section "Device" Identifier "Device0" Driver "i915" BusID "PCI:0:2:0" EndSection
Screen
-
A
Screen
szakasz köti össze aMonitor
és aDevice
szekciókat. Például egyScreen
szakasz így nézhet ki:Section "Screen" Identifier "Screen0" Device "Device0" Monitor "DP2" EndSection
ServerLayout
-
A
ServerLayout
szakasz az összes szekciót, például az egeret, a billentyűzetet és a képernyőket egy X Window System interfészbe csoportosítja.Section "ServerLayout" Identifier "Layout-1" Screen "Screen0" 0 0 InputDevice "mouse1" "CorePointer" InputDevice "system-keyboard" "CoreKeyboard" EndSection
Note
|
Nem minden szakasz található meg egy konfigurációs fájlban. Azokban az esetekben, amikor egy szakasz hiányzik, az alapértelmezett értékeket a futó X-szerver példány adja meg. |
A felhasználó által megadott konfigurációs fájlok szintén az /etc/X11/xorg.conf.d/
állományban találhatók. A disztribúció által biztosított konfigurációs fájlok a /usr/share/X11/xorg.conf.d/
állományban találhatók. Az /etc/X11/xorg.conf.d/
állományban található konfigurációs fájlok elemzése a /etc/X11/xorg.conf
állomány előtt történik, ha az elérhető a rendszerben.
Az xdpyinfo
parancs egy számítógépen a futó X-szerver példányról szóló információk megjelenítésére szolgál. Az alábbiakban a parancs kimeneti mintája látható:
$ xdpyinfo name of display: :0 version number: 11.0 vendor string: The X.Org Foundation vendor release number: 12004000 X.Org version: 1.20.4 maximum request size: 16777212 bytes motion buffer size: 256 bitmap unit, bit order, padding: 32, LSBFirst, 32 image byte order: LSBFirst number of supported pixmap formats: 7 supported pixmap formats: depth 1, bits_per_pixel 1, scanline_pad 32 depth 4, bits_per_pixel 8, scanline_pad 32 depth 8, bits_per_pixel 8, scanline_pad 32 depth 15, bits_per_pixel 16, scanline_pad 32 depth 16, bits_per_pixel 16, scanline_pad 32 depth 24, bits_per_pixel 32, scanline_pad 32 depth 32, bits_per_pixel 32, scanline_pad 32 keycode range: minimum 8, maximum 255 focus: None number of extensions: 25 BIG-REQUESTS Composite DAMAGE DOUBLE-BUFFER DRI3 GLX Generic Event Extension MIT-SCREEN-SAVER MIT-SHM Present RANDR RECORD RENDER SECURITY SHAPE SYNC X-Resource XC-MISC XFIXES XFree86-VidModeExtension XINERAMA XInputExtension XKEYBOARD XTEST XVideo default screen number: 0 number of screens: 1 screen #0: dimensions: 3840x1080 pixels (1016x286 millimeters) resolution: 96x96 dots per inch depths (7): 24, 1, 4, 8, 15, 16, 32 root window id: 0x39e depth of root window: 24 planes number of colormaps: minimum 1, maximum 1 default colormap: 0x25 default number of colormap cells: 256 preallocated pixels: black 0, white 16777215 options: backing-store WHEN MAPPED, save-unders NO largest cursor: 3840x1080 current input event mask: 0xda0033 KeyPressMask KeyReleaseMask EnterWindowMask LeaveWindowMask StructureNotifyMask SubstructureNotifyMask SubstructureRedirectMask PropertyChangeMask ColormapChangeMask number of visuals: 270 ...
A kimenet fontosabb részei félkövérrel vannak szedve, mint például a kijelző neve (ami megegyezik a DISPLAY
környezeti változó tartalmával), a használt X-szerver verzióinformációja, a használt Xorg-bővítmények száma és listája, valamint további információk magáról a képernyőről.
Egy egyszerű Xorg konfigurációs fájl létrehozása
Annak ellenére, hogy az X a modern Linux telepítéseken a rendszer indítása után létrehozza a saját konfigurációját, az xorg.conf
fájl továbbra is használható. Egy állandó /etc/X11/xorg.conf
fájl létrehozásához futtassuk a következő parancsot:
$ sudo Xorg -configure
Note
|
Ha már fut egy X munkamenet, akkor a parancsban egy másik $ sudo Xorg :1 -configure |
Egyes Linux disztribúciókban az X
parancs használható az Xorg
helyett, mivel az X
egy szimbolikus link az Xorg
-ra.
Egy xorg.conf.new
fájl jön létre az aktuális mappában. Ennek a fájlnak a tartalma abból származik, amit az X-szerver a helyi rendszer hardverében és illesztőprogramjaiban elérhetőként talált. A fájlt a használathoz át kell helyezni az /etc/X11/
mappába, és át kell nevezni xorg.conf
-ra:
$ sudo mv xorg.conf.new /etc/X11/xorg.conf
Note
|
Az alábbi manual oldalak további információkat nyújtanak az X Window System komponenseiről: |
Wayland
A Wayland az újabb megjelenítési protokoll, amelyet az X Window System leváltására terveztek. Sok modern Linux disztribúció használja alapértelmezett megjelenítő szerverként. Célja, hogy a rendszer erőforrásait kevésbé terhelje, és kisebb legyen a telepítési lábnyom, mint az X esetén. A projekt 2010-ben indult, és még mindig aktív fejlesztés alatt áll, beleértve az aktív és korábbi X.org fejlesztők munkáját is.
Az X Window Systemtől eltérően nincs szerverpéldány, amely a kliens és a kernel között fut. Ehelyett a kliensablak a saját kódjával vagy egy eszközkészlet (például a Gtk+ vagy a Qt) kódjával dolgozik a megjelenítésen. A rendereléshez a Wayland protokollon keresztül kérés érkezik a Linux kernelhez. A kernel a kérést a Wayland protokollon keresztül továbbítja a Wayland compositor-nak, amely az eszközbemenetet, az ablakkezelést és a kompozíciót kezeli. A kompozitor a rendszer azon része, amely a renderelt elemeket a képernyőn megjelenő vizuális kimenetté egyesíti.
A legtöbb modern eszközkészlet, például a Gtk+ 3 és a Qt 5 is frissítésre került, hogy lehetővé tegye a renderelést akár X Window Systemet, akár Waylandet futtató számítógépen. Egyelőre még nem minden önálló alkalmazást írtak meg úgy, hogy támogassa a Waylandben történő renderelést. Az olyan alkalmazások és keretrendszerek esetében, amelyek még mindig az X Window System futtatását célozzák, az alkalmazás XWayland-en belül futtatható. Az XWayland rendszer egy különálló X-szerver, amely egy Wayland-kliensen belül fut, és így a kliensablak tartalmát egy önálló X-szerver példányon belül rendereli.
Ahogy az X Window System a DISPLAY
környezeti változót használja a használt képernyők nyilvántartására, úgy a Wayland protokoll a WAYLAND_DISPLAY
környezeti változóval teszi ugyanezt. Az alábbiakban egy Wayland kijelzőt futtató rendszer kimeneti mintája látható:
$ echo $WAYLAND_DISPLAY wayland-0
Ez a környezeti változó nem érhető el az X-et futtató rendszereken.
Gyakorló feladatok
-
Milyen parancsot használnhatnánk annak meghatározására, hogy milyen Xorg-bővítmények állnak rendelkezésre a rendszeren?
-
Elkezdtünk használni egy vadonatúj 10 gombos egeret a számítógéphez, azonban további konfigurációra van szükség ahhoz, hogy az összes gomb megfelelően működjön. Az X-szerver többi konfigurációjának módosítása nélkül melyik mappában hoznánk létre egy új konfigurációs fájlt ehhez az egérhez, és milyen konkrét konfigurációs szakaszokat használnánk ebben a fájlban?
-
A Linux telepítés melyik komponense felelős az X-szerver működésének fenntartásáért?
-
Milyen parancssori kapcsolót használunk az
X
paranccsal egy újxorg.conf
konfigurációs fájl létrehozásához?
Gondolkodtató feladatok
-
Mi lenne a
DISPLAY
környezeti változó tartalma egylab01
nevű rendszeren, amely egyetlen kijelző konfigurációt használ? Tegyük fel, hogy aDISPLAY
környezeti változót egy terminál emulátorban a harmadik független képernyőn nézzük! -
Milyen parancs segítségével hozható létre billentyűzetkonfigurációs fájl az X Window System számára?
-
Egy tipikus Linux telepítésnél a felhasználó a billentyűzet Ctrl+Alt+F1-F6 billentyűk megnyomásával válthat virtuális terminálra. Felkértek minket egy grafikus felülettel rendelkező kioszk rendszer telepítésére, ahol ezt a funkciót le kell tiltani, hogy megakadályozzuk a rendszer illetéktelen manipulálását. Úgy döntünk, hogy létrehozunk egy
/etc/X11/xorg.conf.d/10-kiosk.conf
konfigurációs fájlt. AServerFlags
szakaszban (amely a szerver globális Xorg-opciók beállítására szolgál), milyen kapcsolót kell megadni? Azxorg(1)
man oldalon megtalálhatjuk a választ.
Összefoglalás
Ez a lecke a Linuxon használt X Window Systemet mutatja be. Az X Window System a különböző konfigurációs fájlokban meghatározott képek és szövegek képernyőre rajzolására szolgál. Az X Window Systemet gyakran használják a beviteli eszközök, például egerek és billentyűzetek konfigurálására. Ez a lecke a következő pontokat foglalta össze:
-
Az X Window System architektúrája magas szinten.
-
Milyen konfigurációs fájlokat használhatunk az X Window System konfigurálásához, és ezek hol vannak a fájlrendszerben.
-
Hogyan használjuk a
DISPLAY
környezeti változót egy X rendszert futtató rendszeren. -
A Wayland megjelenítési protokoll rövid bemutatása.
A tárgyalt parancsok és konfigurációs fájlok a következők voltak:
-
A billentyűzetkiosztás módosítása egy Xorg telepítésen belül a
setxkbmap
és alocalectl
segítségével. -
Az
Xorg
parancs egy új/etc/X11/xorg.conf
konfigurációs fájl létrehozására. -
Az Xorg konfigurációs fájlok tartalma a következő helyen található:
/etc/X11/xorg.conf
,/etc/X11/xorg.conf.d/
és/usr/share/X11/xorg.conf.d/
. -
Az
xdpyinfo
parancs a futó X-szerver munkamenetre vonatkozó általános információk megjelenítésére.
Válaszok a gyakorló feladatokra
-
Milyen parancsot használnhatnánk annak meghatározására, hogy milyen Xorg-bővítmények állnak rendelkezésre a rendszeren?
$ xdpyinfo
-
Elkezdtünk használni egy vadonatúj 10 gombos egeret a számítógéphez, azonban további konfigurációra van szükség ahhoz, hogy az összes gomb megfelelően működjön. Az X-szerver többi konfigurációjának módosítása nélkül melyik mappában hoznánk létre egy új konfigurációs fájlt ehhez az egérhez, és milyen konkrét konfigurációs szakaszokat használnánk ebben a fájlban?
A felhasználó által definiált konfigurációkat az
/etc/X11/xorg.conf.d/
állományban kell elhelyezni, és az egér konfigurációjához szükséges speciális szakasz azInputDevice
. -
A Linux telepítés melyik komponense felelős az X-szerver működésének fenntartásáért?
A display manager.
-
Milyen parancssori kapcsolót használunk az
X
paranccsal egy újxorg.conf
konfigurációs fájl létrehozásához?-configure
Ne feledjük, hogy az
X
parancs azXorg
parancsra mutató szimbolikus link.
Válaszok a gondolkodtató feladatokra
-
Mi lenne a
DISPLAY
környezeti változó tartalma egylab01
nevű rendszeren, amely egyetlen kijelző konfigurációt használ? Tegyük fel, hogy aDISPLAY
környezeti változót egy terminál emulátorban a harmadik független képernyőn nézzük!$ echo $DISPLAY lab01:0.2
-
Milyen parancs segítségével hozható létre billentyűzetkonfigurációs fájl az X Window System számára?
$ localectl
-
Egy tipikus Linux telepítésnél a felhasználó a billentyűzet Ctrl+Alt+F1-F6 billentyűk megnyomásával válthat virtuális terminálra. Felkértek minket egy grafikus felülettel rendelkező kioszk rendszer telepítésére, ahol ezt a funkciót le kell tiltani, hogy megakadályozzuk a rendszer illetéktelen manipulálását. Úgy döntünk, hogy létrehozunk egy
/etc/X11/xorg.conf.d/10-kiosk.conf
konfigurációs fájlt. AServerFlags
szakaszban (amely a szerver globális Xorg-opciók beállítására szolgál), milyen kapcsolót kell megadni? Azxorg(1)
man oldalon megtalálhatjuk a választ.Section "ServerFlags" Option "DontVTSwitch" "True" EndSection