Das X Window System im Netz
Willemers Informatik-Ecke

Da die Nomenklatur im Anfang etwas irritierend ist, sei sie hier noch einmal klargestellt. Das X-Terminal ist der X-Server. Es bietet den Dienst von Grafikschirm, Tastatur und Maus dem anfragenden Programm an. Dementsprechend ist der X-Client die Maschine oder genauer der Prozess, der eine grafische Umgebung braucht.

X-Programme über Netz starten

xhost legt den Zugriff auf den X-Server fest

Wie fast überall braucht auch hier der Client das Recht, den Dienst des Servers in Anspruch zu nehmen. Der X-Server erteilt dieses Recht durch den Befehl xhost.

Befehl Bedeutung
xhost Anzeige des derzeitigen Rechtestatus
xhost + Freigabe des X-Server für alle fremden Rechner
xhost +Rechner Freigabe für Rechner
xhost - Sperren des X-Servers für alle fremden Rechner
xhost -Rechner Sperren für Rechner

Der X-Client wiederum muss angeben, welchen X-Server er zu benutzen gedenkt. Dies kann auf zwei Wege geschehen: mit der Option -display beim Aufruf des Programmes oder durch Setzen der Umgebungsvariablen DISPLAY.

Als Beispiel wollen wir das Programm xcalc (ein X-Taschenrechner) auf dem Rechner asterix starten. Die Bedienung des Programms soll aber auf dem Rechner gaston erfolgen. Zunächst muss es gaston zulassen, dass andere Rechner seinen Display benutzen.

gaston> xhost +
access control disabled, clients can connect from any host        
gaston>

-display

Danach wird eine Sitzung auf asterix gestartet. Das kann per telnet oder per Konsole erfolgen. Dort wird xcalc aufgerufen mit der Option, gaston als Display zu verwenden. Eine Variante ist es, die Umgebungsvariable DISPLAY auf gaston:0 zu setzen. Alternativ kann bei jedem X-Programm die Option -display verwendet werden.

asterix> xcalc -display gaston:0 &
[1] 3289
asterix>

Umgebungsvariable DISPLAY

Bei Programmen, die die Option -display nicht bedienen, funktioniert normalerweise dennoch die Variante mit der Umgebungsvariable DISPLAY.

asterix> DISPLAY=gaston:0
asterix> export DISPLAY
asterix> xcalc &
[2] 3291
asterix>

Diese Möglichkeiten sind darum so praktisch, weil sie es erlauben, mit einem Bildschirm auf mehreren Maschinen zu arbeiten und es sogar ermöglichen, auf Maschinen grafische Programme starten, auch wenn diese selbst gar keine Grafikhardware besitzen.

sam als X-Anwendung über das Netz starten

Eine ganz typische Anwendung ist das Administrationstool sam für das HP-UX. Dieses kann auf Terminals oder als X-Anwendung laufen. Wer aber an seinem HP-Server keinen X-Server hat, kann leicht über die Umgebungsvariable DISPLAY die Maschine von einem Linuxrechner mit X administrieren. In solchen Fällen ist das vielleicht die einzige X-Anwendung, die je von dieser Maschine gestartet wird.

X-Server Software in Betrieb nehmen

Ein X-Server muss nicht ein X-Terminal oder eine UNIX-Maschine sein, sondern es gibt für die verschiedensten Systeme X-Server als normale Anwendersoftware, die dann über TCP/IP mit dem UNIX-Rechner Kontakt aufnehmen kann und als grafisches Display arbeitet.

Als Beispiel wird ein Macintosh mit der X-Server Software MI/X von der Firma MicroImages verwendet. Das Programm kann kostenlos aus dem Internet heruntergeladen werden. Die Firma bietet auch einen X-Server für MS-Windows an, der allerdings kostenpflichtig ist.

Quelle: http://www.microimages.com

per telnet ein xterm starten

Nachdem der X-Server gestartet wird, ist der Bildschirm typischerweise leer. Es wird parallel eine Telnetsitzung auf dem X-Client benötigt, um Programme zu starten, die den X-Server verwenden. Man loggt sich auf dem X-Client ein, der beispielsweise ein Linuxrechner mit KDE ist.

xterm -display mac:0 &
kwm &
kfm &
kpanel &

Start des Fenstermanagers

Nach kurzer Zeit sollte sich auf dem Mac ein Fenster mit einem xterm melden. Dabei hat das xterm noch keinen Rahmen. Das ist nicht verwunderlich, da die Rahmen von X-Programmen von dem Fenstermanager erzeugt werden. Auf dem nackten X-Server läuft kein Fenstermanager. (Allerdings bietet der MI/X an, lokal einen twm zu benutzen.) Um diesem abzuhelfen, wird als nächstes ein Fenstermanager gestartet. Aus dem erschienenen xterm wird kwm, der Fenstermanager des KDE gestartet. Anschließend erscheint ein Rahmen und ein Titelbalken um das X-Term. Durch Starten von kfm wird der Desktop initialisiert. Es erscheinen die Icons. Durch den Aufruf von kpanel erscheint die untere Werkzeugleiste. Insgesamt gewinnt man fast den Eindruck, direkt an der Linux-Maschine zu sitzen.

Grafisches Einloggen übers Netz

Mit dem Programm xdm, das auch benutzt wird, um sich an einer lokalen Workstation grafisch anzumelden, kann man sich auch mit einem X-Server oder einem X-Terminal über das Netz einloggen. Für diese Möglichkeit muss der xdm aber erst konfiguriert werden. Die Konfigurationsdateien befinden sich im Verzeichnis /etc/X11/xdm.

In xdm-config requestPort freischalten

Die Datei xdm-config enthält diverse Einträge. Zunächst sollte kontrolliert werden, ob die Variable DisplayManager.requestPort gesetzt ist. Steht diese auf 0, wird ein Zugriff von außen verhindert. Der Standardport für den xdm findet sich in /etc/services unter der Nummer 177. Es genügt, die Variable auszukommentieren, damit xdm auf den richtigen Port hört.

Xaccess

Die Berechtigung wird in der Datei Xaccess festgelegt. Standardmäßig steht hier eine Freigabe für alle interessierten X-Server.

*
* CHOOSER BROADCAST

Die erste Zeile ermöglicht einem X-Server die Query, also die direkte Anfrage an diesen xdm. Die zweite Zeile ist von Bedeutung, wenn der Zugriff über einen Broadcast erfolgt. Dann erfragt das X-Terminal alle Rechner, an die es sich anmelden könnte.

Xservers

Dies alles setzt voraus, dass der X-Server sich aktiv mit der Suche nach seinem Client befasst. Anders herum gibt es die Möglichkeit, vom xdm aus das X-Terminal zu starten. Dazu werden in der Datei Xservers die Server eingetragen, für die ein eigener xdm abgestellt werden soll. Auf einer Linux-Maschine mit KDE stehen beispielsweise folgende drei Einträge in der Datei Xserver:

:0 local /usr/X11R6/bin/X :0 vt07
pm7500:0 foreign
silver:0 foreign

Der erste Eintrag ist der, der bei einer Standardinstallation für den lokalen X-Server eingetragen wird. Das vt07 zeigt an, dass sich die X-Sitzung auf der virtuellen Konsole 7 befindet.Unter Linux lassen sich mit der Tastenkombination Strg-Alt-Fx zwischen virtuellen Konsolen umschalten. Die nächsten beiden Einträge stellen einen eigenen xdm bzw. hier kdm für jeden der beiden X-Terminals pm7500 und silver ab. Es reicht, nach der Änderung der Datei den Display Manager mit kill -1 anzuschießen. Bei der nächsten Prozessanzeige finden sich drei kdm-Prozesse. Sobald der X-Server passiv im Netz steht, erscheint der Anmeldedialog.

Fontserver

In einigen Red Hat Versionen soll der Fontserver xfs nicht auf das Netzwerk eingestellt sein.1) Dazu ist in dem entsprechenden rc-Skript xfs in /etc/rc.d/init.d zu prüfen, ob xfs als Option -port 7100 ist, oder mit -port -1 abgeschaltet wurde. Die richtige Zeile lautet so oder ähnlich:

daemon xfs -droppriv -daemon -port 7100

kdm muss im kdmrc angepasst werden

Von sich aus bedient der kdm zwar sofort die in Xservers aufgeführten X-Terminals mit einem eigenen kdm-Prozess, er läßt aber keine Anfragen von X-Terminals zu, die sich einloggen wollen. Dazu muss das Reagieren auf XDMCP-Anfragen erst freigeschaltet werden. Dies geschieht in der Startdatei des kdm namens kdmrc.

/etc/opt/kde2/share/config/kdm/kdmrc
bzw.
/opt/kde2/share/config/kdm/kdmrc

In dieser Datei sind folgende Einträge zu kontrollieren:

[Xdmcp]
Enable=true
Xaccess=/var/X11R6/lib/xdm/Xaccess
Willing=/var/X11R6/lib/xdm/Xwilling

kdm neu starten

Es reicht nicht, nach den Änderungen ein kill -1 auf den kdm zu geben. Die kdmrc wird nur bei Start des kdm ausgewertet. Es ist also ein Neustart des kdm erforderlich. Die Idee, den kdm aus der X Sitzung heraus direkt abzuschießen, sollte man nur weiterverfolgen, wenn man alle Daten gesichert hat. Besser ist es, mit init 2 in den Multiuserlevel herunterzufahren und mit init 5 wieder durchzustarten.

Wie an anderer Stelle erwähnt, gehören reine X-Terminals heute zu den echten Raritäten. Meist wird ein MS-Windows-PC oder ein Mac als X-Terminal verwendet, indem entsprechende Software gekauft wird. Obwohl der Begriff Terminal vermuten lässt, dass man nicht viele Ressourcen benötigt, wird für das Anmelden an einem modernen Desktop via X-Server einiges an Speicher und CPU-Leistung benötigt.

Linux als X-Terminal

Jede UNIX-Workstation hat natürlich einen X-Server eingebaut, mit dem sie normalerweise mit den lokalen X-Clients kommuniziert. Dieser X-­Ser­ver heißt einfach X. Um eine Workstation als reines X-Terminal zu betreiben, reicht es aus, X mit den Parametern aufzurufen, die den X-Server veranlassen, sich bei einem anderen Rechner mit dem XDM-Protokoll anzumelden.

Der X-Server muss gewöhnlich als root gestartet werden. Falls die Maschine automatisch in den xdm bootet, muss sie erst wieder in den Runlevel 2 zurückgefahren werden.

init 2

Anfrage beim xdm

Sind Sie als root eingeloggt und der X-Server ist heruntergefahren, dann geben Sie eines der drei folgenden Kommandos ein, wenn Sie den xdm von gaston erreichen wollen:

X -query gaston
X -indirect gaston
X -broadcast

Der erste Aufruf ist die direkte Anfrage an den xdm, sich bei ihm einloggen zu wollen. Die zweite Zeile fragt den Host gaston, welche Rechner er kennt, bei denen man sich im Netz einloggen kann. In den meisten Fällen wird er dem Anfrager eine Liste mit nur sich selbst zur Auswahl anbieten. Diese Auswahlbox ist der Chooser. In der dritten Zeile wird kein Rechner genannt. Der X-Server streut ins Netz die Anfrage, ob es einen xdm-Server gibt und zeigt die Anmeldebox des Rechners, der am schnellsten antwortet.

xdm-kontrollierter X-Server

Soll der X-Server von gaston aus initiiert werden, also bei gaston in der Xservers aufgeführt werden, lautet der Aufruf:

X -ac

Thin Client

Insbesondere die Anbindung eines X-Servers an den xdm zeigt, dass der X-Server selbst nicht mehr können muss, als eine Netzkommunikation aufzunehmen und ein grafisches Terminal zu steuern. Tatsächlich ist ein solches Gerät völlig wartungsfrei und würde in Fragen der "Total Cost of Ownership"2) alle Rekorde brechen. Die Software auf den Servern muss dann einfach nur als X-Client geschrieben werden.

Linux mit DHCP und X-Server als Thin Client

Wer also nach dem Ideal des Thin Client strebt, braucht nicht auf zukünftige Entwicklungen zu warten. Die Technologie dafür wurde bereits in den 80ern entwickelt und ist absolut ausgereift. Nun werden zwar X-Terminals nicht mehr gebaut, aber das ist nicht weiter tragisch. Auf der Basis von Linux läßt sich leicht aus Standard PCs ein System zusammensetzen, das per DHCP alle Netzinformationen bekommt, anschließend nur den X-Server startet, um sich an den Servern im Netz einzuloggen. Fällt ein solcher Rechner einmal aus, wird die Masterplatte eins zu eins kopiert und ein neuer Rechner ins Netz gestellt. Da die Geräte keine Sonderanfertigung sind, wären sie vermutlich sogar billiger als jeder speziell angefertigte Thin Client.

Gefürchtete Veränderung

Die Tatsache, dass diese Technologie noch nicht im großen Stil umgesetzt wird, zeigt, dass das Problem an einer ganz anderen Stelle als an der technischen Machbarkeit liegt. Es ist die Angst der Sekretärin, dass die neue Textverarbeitung ganz anders ist. Es ist die Angst des EDV-Chefs, dass er vielleicht alles neu lernen muss und es ist die Panik des Lieferanten, dass er mit einem Schlag vom gefragten Experten zum Dilletanten wird. Aus diesem Grund ist die >>Zukunftsbranche<< wie keine Andere von der Angst vor der Veränderung geprägt.

Der Thin Client belastet die teuren Ressourcen

Es gibt aber tatsächlich auch einen sachlichen Grund, der gegen den Thin Client spricht. Der Aufteilung der Aufgaben zwischen Client und Server ist nicht optimal. Der Server beschäftigt sich mit Arbeiten wie Menüaufbauten, die nicht zentralisiert sein müssen. Die Netzbelastung ist von X ist zwar nicht so üppig, aber immer noch stärker, als wenn nur die nackten Anfragen über das Netz gingen. Die Ressourcen auf dem Client werden nicht genutzt. Man entlastet also den billigen Arbeitsplatzrechner, um die teuren Komponenten zu belasten: das Netz und den Server!


1 vgl. XDMCP-HOWTO Chapter 2.6.
2 übersetzt heißt es etwa die Gesamtkosten des Besitzes. Es fasst die Kosten zusammen, die nicht nur durch die Anschaffung entstehen. In erster Linie sind das Wartung und Administration.

Diese Seite basiert auf Inhalten aus dem Buch Arnold Willemer: Wie werde ich UNIX-Guru?