Linuxový desktop - od jádra k X serveru

Stanislav Brabec 3. 2. 2003

V minulém dílu jsme se stručně seznámili se základními komponentami linuxového desktopu. Dnes se budeme zabývat těmi, které mají nejblíže k hardwaru počítače.

Různé grafické režimy

V Linuxu existují v podstatě dva základní grafické režimy – je to režim textové konzole a grafický režim.

Režim textové konzole je historicky nejstarším typem komunikace s počítačem, je pouze textový a jeho funkce je vestavěna přímo v BIOSu grafické karty.

Nejčastějším grafickým režimem je X server.

Nesmíme ovšem zapomenout na grafický framebuffer s obslužnou knihovnou (libsvga, SDL, GGI). Framebuffer lze použít i na vylepšenou textovou konzoli (pokud si to vyžádáme při startu jádra).

Jádro

Mimojaderná část operačního systému nám zajišťuje, že náš počítač nastartuje, připojí se do sítě a budou probíhat všechny základní operace. Na vlastní tvorbě obrazu na obrazovce se však příliš nepodílí. Ten je spíš výsledkem spolupráce jádra a X serveru.

Co tedy najdeme v jádře a co v X serveru?

V jádře najdeme obsluhu textových konzolí. Ta pracuje s grafickou kartou v textovém režimu, podobně jako BIOS. Pak tam najdeme grafickou obsluhu – framebuffer. Je to jednoduchý systém pro přístup do grafické paměti, který se většinou opírá přímo o služby BIOSu. Pro některé grafické karty je ovladač v jádře. Lze nad ním vystavět i neakcelerované grafické systémy.

V jádře najdeme ovladač sběrnice AGP a ovšem také PCI. Je tam také ovladač DRI (Direct Rendering Infrastructure). Ty slouží k rychlejší komunikaci procesoru s kartou.

A nakonec v jádře najdeme ovladače Video for Linux, které dokáží digitalizovat obraz z grafické karty a ovládat televizní a rozhlasové karty či dekódovat teletext.

A co umí X server

X server obsahuje vlastní ovladače grafických karet. Právě ovladače X serveru umí pracovat s grafickou kartou, znají její hardware a umí pracovat s jejími akcelerátory.

Existuje i varianta X serveru, která dokáže používat framebuffer z jádra. Funguje s každou grafickou kartou, ale její výkon se nedá porovnávat s výkonem akcelerovaného ovladače.

X

Systém X byl navržen kolem roku 1985. Jeho kvalitní návrh spolu s dobrou rozšiřitelností zajistily jeho široké nasazení. Jeho tehdejší minimální hardwarové nároky (počítač srovnatelný s i386 s 4 MB paměti nebo lepší) se postupně přesunuly z oblasti náročné technologie do kategorie „staré železo“. A tak dnes X server spustíte prakticky na jakémkoliv počítači.

Od projektu X (standard a referenční implementace) se odvíjí projekt XFree86 (implementace s širokou podporou hardwaru). Dnes aktuální je X verze 6.4 (tedy standard X11R6, verze 4). Z něj odvozený projekt XFree86 právě finišuje verzi 4.3.0.

Počínaje XFree86 verzí 4 již X server není monolitický program, ale používá ke své práci moduly. To umožňuje jednodušší vývoj ovladačů třetími stranami a jejich snadné zařazení do systému. Najdete je v adresáři /usr/X11R6/lib/­modules.

Jak pracuje X server

X server komunikuje s aplikacemi pomocí jediného komunikačního kanálu – tzv. soketu. Ten je otevřen jednak do souboru /tmp/.X11-unix/Xčíslo, jednak na síťovém portu. To umožňuje rychlé spojení místních aplikací i síťový provoz.

Budeme-li hodně zjednodušovat, tak vše, co děláme, jsou pro X server události a vše, co se objevuje na obrazovce, jsou okna a jejich obsah.

Hlavním oknem je kořenové okno, které je vždy otevřeno přes celou obrazovku. V tomto okně se nacházejí další okna (vlastně jediná „okna“, jak je v běžném kontextu vnímáme), která většinou patří do kategorie spravovaných oken(tedy oken, ke kterým správce oken přikreslí dekoraci). Existují ale i další podřízená okna, která vytvářejí jednotlivé grafické elementy. Vzniká tak celý hierarchický strom oken a podřízených oken. A proč to všechno? Přece aby si okna mohla mezi sebou posílat události a vše se řešilo průhledným způsobem.

Událostí – tou je většina toho, co děláme – stisknutí kláves, pohyby myší. Každé okno může požádat o zasílání vybraných událostí. A pokud si toto zasílání nevyžádalo jiné, nadřízené okno, tak k němu tato informace doputuje. Tak třeba program pro zaškrtávací pole si vyžádá zasílání události „stisk levého tlačítka myši“, zatímco sousední textový vstup si vyžádá události „stisk klávesy“. A nakonec nápis vedle si nevyžádá nic. Tak se každá z událostí dostane přes celou strukturu až do místa, kde může být zpracována. Stejným způsobem řeší X server i abstraktnější události, jakými jsou změna velikosti okna, žádost o překreslení apod.

S tím souvisí pojem aktivní okno (tzv. fokus). V řeči událostí je aktivní to okno, kterému nechá správce oken zasílat události z klávesnice.

Aby programátoři nemuseli znát detaily komunikace se serverem, existují knihovny, které převádějí příkazy a události na data pro server.

Návrh X počítá s rozšířeními, která přidávají nové funkce. Mnoho z nich se dnes stalo standardní součástí serverů – třeba XKB (ovladač klávesnice), Open GL (3D rozšíření), DRI (rozšíření pro přímý přístup ke kartě ve spolupráci s jádrem), XVideo pro řízení videa a tunerů (za pomoci Video for Linux nebo vlastních ovladačů), XRender (pro vyhlazená písma), Xinerama (pro obsluhu více monitorů), DGA (pro přímý přístup do grafické paměti), XVidMode a XRandR (pro změnu nastavení grafické karty) a mnohé další.

Virtuální konzole

Abychom mohli na obrazovce pracovat ve více prostředích najednou, naprogramovali tvůrci Linuxu tzv. virtuální konzole. Mezi nimi můžeme přepínat a chovají se tak, jako kdybychom měli k dispozici oddělené sady klávesnic a monitorů. Přepínací klávesy fungují, pokud je neodchytává žádný jiný program (např. X server to dělá, a proto k opuštění X serveru musíte použít jeho vlastní kombinace, popsané dále v článku):

Levý_Alt + F-klávesy: přepínání mezi virtuálními konzolemi

Levý_Alt + šipka vlevo či napravo: přechod na předchozí či následující virtuální konzoli

Na virtuální konzoli 1 většinou najdeme protokol o startu počítače a textový přihlašovací dialog, na konzolích 2–6 to bývají textové přihlašovací dialogy, od konzole 7 je volno pro grafické prostředí. Na konzoli 12 někdy bývá rozšířený protokol o práci počítače (např. o odcházející poště).

Spouštíme X server

Jak vlastně X server vypadá? Až dočtete tento odstavec, můžete si to vyzkoušet. Otevřete terminálové okno a zadejte příkaz pro jeho spuštění. Tento příkaz bývá na většině počítačů vyvolatelný jako X. Předpokládám, že vám již jedno grafické prostředí běží, a proto zadáme příkaz:

X -ac :1 &

Volba -ac říká, že se server spustí nezabezpečený (pro vážnou práci na síti to není dobré, neboť kdokoliv může otevírat okna a číst z klávesnice, ale při experimentech si tím ušetříme laborování s ověřováním povolení k přístupu pomocí příkazů xhost nebo xauth). Volba :1 říká, že otevíráme druhý server (první je :0). Znak &říká, že terminál nebude čekat na ukončení běhu X serveru a my budeme moci zadávat další příkazy. Význam dvojtečky se dozvíme za chvíli. Na některých systémech se může stát, že příkaz můžete spustit jen jako superuživatel (root).

Pokud máte standardně nastavený systém, objeví se před vámi velmi jemná šachovnice s kurzorem ve tvaru křížku. Právě vám naběhl samotný X server a čeká na další povely. Bez dalších programů toho moc neumí – pohybuje s kurzorem myši a reaguje na několik kláves:

Levý_Ctrl + Levý_Alt + Numerické_+ a Levý_Ctrl + Levý_Alt + Numerické_-: cyklení mezi dostupnými grafickými režimy

Levý_Ctrl + Levý_Alt + BackSpace: ukončení práce X serveru

Levý_Ctrl + Levý_Alt + F-klávesy: přepínání mezi virtuálními konzolemi na Linuxu

Nyní tedy víte, jak se lze přepnout zpět do našeho základního serveru a můžete tedy výše zmíněný příkaz spustit.

Opět se vrátíme do našeho terminálového okna a zkusíme spustit například xcalc. Tímto příkazem naběhne kalkulačka na našem základním X serveru. Zkusíme tedy napsat:

DISPLAY=:1 xcalc

Kalkulačka se nyní otevřela na našem testovacím X serveru. Pomocí výše uvedené kombinace se do něj přepneme a vidíme kalkulačku. Okno však nemá žádný rámeček a nelze s ním hýbat. To zajišťuje správce oken, který jsme zatím nespustili.

Stejně tak jsme mohli spustit X server na vedlejším počítači propojeném sítí (říkejme mu třeba cyrix) a kalkulačku jsme mohli otevřít následujícím příkazem:

DISPLAY=cyrix:1 xcalc

To také vysvětluje význam proměnné DISPLAY. Před dvojtečkou je jméno počítače (nebo nic, jde-li o tento počítač), číslo za dvojtečkou udává číslo serveru (standardně 0). Může ještě následovat tečka a další číslo, které označuje obrazovku v systémech s více monitory.

Nyní můžeme kalkulačku zastavit, a to třemi způsoby (ten čtvrtý totiž vyžaduje zavírací tlačítko na rámu okna) – písmenem q v okně kalkulkačky (tedy událostí v okně), stisknutím Ctrl + c v okně terminálu, ze kterého jsme program spustili (tedy signálem k ukončení) nebo ukončením celého serveru (tedy opět signálem, na který mají programy možnost zareagovat).

Našli jste v článku chybu?
Vitalia.cz: Jeďte do lázní, to je holistika

Jeďte do lázní, to je holistika

Root.cz: Střílejte v obýváku, stačí kamera a projektor

Střílejte v obýváku, stačí kamera a projektor

120na80.cz: Cestovní nevolnost. Co pomůže?

Cestovní nevolnost. Co pomůže?

DigiZone.cz: Světlé zítřky gaučových sportovců

Světlé zítřky gaučových sportovců

Podnikatel.cz: Český podnikatel a #brexit. Co nastane?

Český podnikatel a #brexit. Co nastane?

DigiZone.cz: Náhrada za nevrácená zařízení?

Náhrada za nevrácená zařízení?

Vitalia.cz: Jíme přesolené potraviny. Zrovna tyhle

Jíme přesolené potraviny. Zrovna tyhle

120na80.cz: Jsou opalovací krémy pro děti jiné?

Jsou opalovací krémy pro děti jiné?

Měšec.cz: Ceny PHM v Evropě. Finty na úspory

Ceny PHM v Evropě. Finty na úspory

Lupa.cz: Jaké IoT tarify nabízejí mobilní operátoři?

Jaké IoT tarify nabízejí mobilní operátoři?

Vitalia.cz: Epidemie: Klíšťová encefalitida po ovčím sýru

Epidemie: Klíšťová encefalitida po ovčím sýru

Podnikatel.cz: Oblíbené Babišovo reverse charge. Potopilo je?

Oblíbené Babišovo reverse charge. Potopilo je?

DigiZone.cz: Skylink: Nova Sport volně

Skylink: Nova Sport volně

Měšec.cz: Apple Pay je v Česku. Návod na aktivaci

Apple Pay je v Česku. Návod na aktivaci

DigiZone.cz: Nova: technické pauzy každé 1. pondělí

Nova: technické pauzy každé 1. pondělí

Vitalia.cz: Máte chutě? Nejezděte do světa, ale do Dobřichovic

Máte chutě? Nejezděte do světa, ale do Dobřichovic

Vitalia.cz: 3× o tucích: proč je potřebujeme?

3× o tucích: proč je potřebujeme?

Měšec.cz: TEST: Vyzkoušeli jsme pražské taxikáře

TEST: Vyzkoušeli jsme pražské taxikáře

120na80.cz: Léky a dietní opatření při kopřivce

Léky a dietní opatření při kopřivce

DigiZone.cz: Noxon iRadio 1 W bude za pár měsíců

Noxon iRadio 1 W bude za pár měsíců