Exportovanie displejov

Ako sme už spomínali, je možné bežať X programy na jednom počítači a zobrazovať ich na druhom. Je to veľmi náročné na objem dát, ktoré treba prenášať, takže to asi nebudete chcieť robiť cez modemové pripojenie alebo na veľké vzdialenosti. Navyše treba vziať do úvahy bezpečnostné hľadisko: exportovanie displeja nie je veľmi bezpečná vec, pretože dovolíte celej sieti pozerať sa na to, čo robíte. Napriek tomu to stále môže byť veľmi užitočné na lokálnej sieti.

Je dôležité poznamenať použitie slov “klient” a “server”. Keď exportujeme displej, treba si dať pozor, aby sme nezamieňali čo je klient a čo je server. Stroj, ktorý v skutočnosti beží X program a posiela informácie o zobrazovaní, nazývame “server”. Stroj, ktorý používame na zobrazenie vzdialeného programu, nazývame “klient”. Keď diskutujeme o dizajne X, sú tieto pojmy vymenené. Program, ktorý zobrazuje veci, sa nazýva “server”, zatiaľ čo bežiaci program sa nazýva “client”. Nie je to hrozne metúce, ale stojí za to, na to upozorniť.

Napríklad použijeme dva počítače: golf je celkom silný server umiestnený pod stolom v zaplnenej miestnosti. Má v sebe veľa RAM a dobrý procesor. Navyše má v sebe mnoho X programov, ale nemá žiaden monitor. Na druhej strane miestnosti je couch, starý počítač s malou RAM a malým diskom. Je prislabý na bežanie programov náročných na zdroje, ako je napríklad Netscape. Ale couch má dve hlavné výhody, má monitor a ten je navyše hneď pri ňom, takže nemusíte ani vstať, aby ste naň videli. V ideálnom prípade by ste mohli bežať Netscape bez toho, aby ste vstali od couch-a. Exportovanie je odpoveďou na tento problém.

Najprv sa prihlásime na couch a naštartujeme X. Potom otvoríme terminálový program, na ktorý sme zvyknutí (xterm, rxvt, eterm, aterm alebo nejaký iný). Prvým krokom k vzdialenému zobrazovaniu X programov je nastavenie klientského stroja tak, aby iné stroje mohli na ňom zobrazovať. Na to potrebujeme program xhost, ktorý riadi prístup. Ak ste na bezpečnej vnútornej sieti, pravdepodobne sa nebudete starať, kto môže vzdialene zobrazovať programy. V takom prípade, dovolíte jednoducho komukoľvek na sieti zobrazovať:

   couch$ xhost +
   access control disabled, clients can connect from any host

Na druhej strane, môžete to chcieť urobiť na počítačoch, ktoré sú na nezabezpečenej sieti (Internet, univerzitná sieť alebo čokoľvek iné nad čím nemáte kontrolu). Isto nechcete, aby sa mohol pripojiť ktokoľvek. xhost dovoľuje aby ste zvolili, kto môže zobrazovať:

   couch$ xhost + golf.foc
   golf.foc being added to access control list

Teraz len golf.foc (server spomínaný predtým) môže zobrazovať programy na couch-ovi. To, kto môže zobrazovať programy, môžete vidieť ak spustíte xhost bez argumentov:

   couch$ xhost
   access control enabled, only authorized clients can connect
   INET:golf.foc
   INET:localhost
   INET:couch.foc
   LOCAL:

To je všetko, čo potrebujete urobiť na nastavenie klientského konca. Ďalším krokom je nastavenie servera tak, aby vedel, že má programy zobrazovať niekde inde než na svojom monitore. Pretože server nemá monitor ( a teda nemá bežiace X), bude potrebovať vedieť, kde má zobrazovať:

Nastavenie servera tiež nie je veľmi zložité. Po tom ako sa prihlásite, budete potrebovať zmodifikovať premennú prostredia $DISPLAY. Defaultne, pravdepodobne nebudete musieť nastavovať nič. Budete potrebovať nastaviť premennú $DISPLAY na hodnotu mena vzdialeného počítača, plus číslo reprezentujúce X reláciu, na ktorú sa má zobrazovať. Takmer vždy budete mať len jednu X reláciu bežiacu, takže vysporiadať sa s touto premennou by namal byť problém.

Tu vidíte, ako by premmená $DISPLAY mala byť nastavená na serveri v našom príklade s použitím shell-u Bash. Iné shell-y použíjú inú syntax, ale hodnota by mala byť rovnaká.

   golf$ export DISPLAY=couch.foc:0.0

Tak to je všetko, čo sa týka nastavovania vecí na strane servera. Teraz len zostaňte prihlásený na server a spúšťajte X programy odtiaľ. Všetok výstup na obrazovku z programu bude posielaný cez sieť na klientský stroj, hoci beží na počítači na druhej strane miestnosti.

   golf$ netscape &

Takto spustíte netscape na serveri, ale pretože premenná DISPLAY je nastavená na couch-a, všetko sa bude zobrazovať tam. Ani nemusíte vstať, aby ste bežali tie veľké X programy na vašom starom termináli. Je dôležité poznamenať jednu vec: serverovský stroj bude musieť mať všetky X knižnice a iné podporné súbory potrebné na bežanie programu. Na druhej strane, nebudete potrebovať X server alebo súbor /etc/XF86Config, pretože na serveri sa nič nezobrazuje.

Potom môžete chcieť zakázať exportovanie displeja tým, že odstránite server z riadiaceho prístupového zoznamu na vašom klientovi:

   couch$ xhost - golf.foc
   golf.foc being removed from access control list
   couch$

Teraz môžete vidieť, že toto je vlastne výborný spôsob zdieľania výpočtových zdrojov. Ale buďte opatrní, môžete byť hostiteľom mnohých X programov pre mnohé vzdialené počítače a ani o tom nemusíte vedieť.