Unterwegs stets Zugriff auf Daten und Applikationen bieten – das ist die Stärke der Terminallösung X2go. Seit Version 3.01 braucht der Reisende nicht mal einen X2go-Client, Firefox und ein Plugin reichen. Unter Ice WM lässt sich sogar die Fensterdekoration des Browsers verbergen.
Mit der Arbeitsplatzmobilität wächst auch der Wunsch, das Desktop-Betriebssystem zentral auf Servern zu betreiben. Denn Datensicherheit und -konsistenz sowie System-Wartbarkeit kann der zuständige Administrator auf diese Weise deutlich einfacher sicherstellen als auf vagabundierenden Laptops von Außendienstlern. So verwundert es nicht, dass Server-based Computing [1] die Thin-Client-Nische verlässt (Abbildung 1). Das Remote-Desktop-Paket X2go ([2], [3]) ist dabei, sich eine Dauerkarte für diesen Markt zu lösen.

Abbildung 1: Lokaler Firefox zeigt Firefox auf dem Server an – das Entkoppeln des Web in eine DMZ mit X2Go liefert einen Ansatz für hochsichere Umgebungen.
Weil es einige NX-Bibliotheken des Mitbewerbers Nomachine [4] nutzt und den Datenverkehr zwischen Server und Client fast identisch komprimiert, gilt X2go oft irrtümlich als NX-kompatibel. Server und Client kommunizieren aber anders als in NX, sodass sie nicht über Kreuz benutzbar sind. Als Belohnung für die Inkompatibilität winkt unter idealen Bedingungen ein Session-Startup von unter 5 Sekunden, NX braucht mindestens doppelt so lange.
Seit Version 3.01 schafft nun das so genannte X2go-Plugin die Möglichkeit, Sitzungen nahtlos in einem Firefox-Fenster darzustellen. Das Plugin beherbergt alle zum Sitzungsstart notwendigen Binaries, zur jeweiligen Architektur passend. Im Prinzip handelt es sich um einen vollwertigen X2go-Client, der den Browser als Display benutzt. Zurzeit sind Plugins für Firefox auf Linux (32 und 64 Bit) und Windows (32 Bit) verfügbar, Internet Explorer und Safari sollen folgen.
Dass er eine X2go-Session darzustellen hat, erfährt der Browser per »<object>«-Tag. Das in Zeile 4 von Listing 1 eingebundene Javascript »x2goplugin.js« und die Funktion »checkPlugin()« sorgen dafür, dass der Browser das X2go-Plugin in der aktuellen Version benutzt. In manchen Linux-Distributionen entpacken sich derzeit die Berechtigungen der Plugin-Dateien leider nicht korrekt. Bei wem das Plugin nicht startet, der behebt den Mangel mit folgender Fingerübung:
|
Listing 1: Minimale |
|---|
01 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 02 <html> 03 <head> 04 <script src="http://plugin.x2go.org/media/x2goplugin.js" type="text/javascript"></script> 05 </head> 06 <body onload="checkPlugin()"> 07 <div id="x2goplugin"> 08 <object src="location" 09 type="application/x2go" 10 pluginspage="http://plugin.x2go.org/index.html" 11 pluginurl="http://plugin.x2go.org/download/x2goplugin_linux32.xpi" 12 data="x2go.server" 13 name="x2goplugin" 14 height="100%" 15 width="100%"> 16 </object> 17 </div> 18 </body> 19 </html> |
cd ~/.mozilla/firefox/*.default/extensions/ x2goplugin@obviously-nice.de/x2goclient/ chmod 755 sshd sftp-server nxproxy x2goclient
Den X2go-Hauptentwicklern ist das Problem bekannt, sie wollen es in einer der nächsten Minor-Releases beheben.
Sitzung parametrisieren
Die in Zeile 12 von Listing 1 spezifizierte Definitionsdatei »x2go.server« der X2Go-Verbindung enthält die Konfigurationsparameter aus Tabelle 1, die der Start der gewünschten Applikation fordert. In die Datei darf der Admin zudem einen SSH-Private-Key schreiben, der beim Verbindungsaufbau zum Tragen kommt.
Um die Audio-Ausgaben einer Sitzung übers Netz zu hören, muss der Benutzer wie bei den anderen X2go-Clients auch den Parameter »sound=Audiosystem« passend setzen; zu empfehlen ist Pulseaudio, da es sich komprimiert übertragen lässt. Videos laufen zurzeit nur als Bitmap übers Netz, profitieren aber zumindest vom Geschwindigkeitsvorteil der Bibliothek Libjpeg-turbo (siehe Kasten “X2go und NX mit Turbolader”). Wie alle X2go-Clients unterstützt das Firefox-Plugin das im Thin-Client-Betrieb beliebte Remote-Mounten nicht.
X2go-Einsteigern, gerade wenn sie Debian- oder Ubuntu-Nutzer sind, leistet das X2go-Wiki [9] wertvolle Hilfe. Details zum Betrieb an einem LDAP-Backend sind dort ebenfalls zu finden.
|
X2go und NX mit |
|---|
|
Libjpeg-turbo [5] ist eine API/ABI-kompatible Jpeg-Bibliothek, die einerseits die erweiterten Instruktionssets neuerer Prozessoren wie SSE2 benutzt und andererseits durch Parallelisierung eine wesentlich höhere Geschwindigkeit beim Komprimieren und Dekomprimieren erreicht als Libjpeg. Im für November angekündigten Fedora 14 soll Libjpeg-turbo die Libjpeg sogar vollständig ersetzen. Da Terminalserver laufend Bildinformationen übers Netz transportieren, liegt die Vermutung nahe, dass X2go und NX mit Libjpeg-turbo einen merklichen Geschwindigkeitsgewinn erzielen können. Diverse Tests des Autors dieses Artikels im Rahmen eines X2go-Projekts für eine Bank ergaben in der Tat einen Performanceschub von bis zu 180 Prozent – unter der Voraussetzung, dass Client und (!) Server die neue Bibliothek aktivieren. Fertige X2go-Pakete mit Libjpeg-turbo-Erweiterung für SLES 11 und Open Suse sind unter [6] zu finden, bald auch in einem eigenen Repository auf dem bekannten Build Service [7]. Die Integration von Libjpeg-turbo in Windows-X2go-Clients ist gerade in der Untersuchungsphase. |
Browser ohne Dekoration
Der Browser mit Balken und Bedienelementen ist beim Betrieb als Terminalclient nicht gerade von Vorteil: Die Fensterdekoration braucht Platz auf dem Bildschirm, ohne dass die Bedienbuttons wirklich nötig wären. Den Browser ohne Windowmanager unter einem nackten X11 starten, löst das Problem brachial, aber der Bediener kann das Applikationsfenster nicht mehr auf- und zuziehen oder in den Fullscreen setzen.
Eleganter geht es mit Ice WM zur rahmenlosen Sache, da sich der Windowmanager optisch sehr zurücknehmen lässt. Systemweit in »/etc/icewm« oder pro Benutzer in »~/.icewm« geeignet konfiguriert, verzichtet Ice WM auf Fensterdekoration, Taskbar und andere Elemente eines klassischen Windowmanagers. Ein fertiges Profil gibt es unter [8].
Das im Lieferumfang von Ice WM enthaltenen Icesh-Utility schaltet das Applikationsfenster schließlich auf Fullscreen. Xprop kann zunächst die Window-ID des Fensters ermitteln, die Icesh verwendet, um den Fullscreen-Event auszulösen:
CURRENT_WINDOW="`xprop -root |
grep ^_NET_ACTIVE | awk '{print $NF}'`"
/usr/bin/icesh -window $CURRENT_WINDOW
setState 12 12
Der schlagende Vorteil ist, dass sich die eingebettete X2go-Applikation an Resize-Events des Browserfensters anpasst. Diese bekommt der X2go-Plugin-Container mit, woraufhin sich die darstellbare Fläche des X-Servers ändert. Jeder bekannte Windowmanager erkennt die Geometrieänderungen und gibt sie an die von ihm verwalteten Applikationsfenster weiter. Damit lässt sich das X2go-Plugin wirksam in HTML-Elemente wie etwa »<div>«-Tags einbetten. Das gezielte Integrieren in Iframe-Container funktioniert ebenfalls, was relative Positionsangaben in Prozent möglich macht. An per Rdesktop in X2go gezogenen Windows-Sessions gehen die Geometrieänderungen (noch) vorbei (Abbildung 2).

Abbildung 2: Windows-Desktop in der X2go-Session – dank Rdesktop-Login auf einem Windows-Server. Das Browser-Plugin stellt die Sitzung schon dar, die noch fehlende Resizing-Funktionalität ist in Planung.
Ausblick und Fazit
Für die kommende X2go-Version 3.1 (Baikal) arbeiten die Entwickler an einer Erweiterung, die den X2Go-Windows-Client auf einem Wechseldatenträger lauffähig gestaltet. Damit wird der Transport mehrerer X2Go-Konfigurationen auf einem USB-Stick von Rechner zu Rechner möglich. Die Option »–portable« speichert dann die gesamte Konfiguration relativ zum Ablageort der Datei »x2goclient« beziehungsweise »x2goclient.exe«.
Die – längerfristig angelegte – Entwicklung eines Connection-Brokers zielt auf große Setups. Sitzungen werden sich vom Server aus interaktiv steuern lassen, beispielsweise eine bestehende Verbindung trennen und auf einen anderen X2Go-Server verlagern. Zusätzlich kommt mit »x2godesktopsharing« eine Komponente in die Baikal-Release, die es erlaubt, eine laufende X-Desktop-Sitzung per X2go komprimiert anzusprechen.
Das rapide Entwicklungstempo zeitigt Erfolge: X2go meistert Anwendungsfälle, bei denen andere Anbieter passen müssen. Das trifft auch auf Enterprise-Szenarien in der Praxis zu, wo starke, teils proprietäre Konkurrenz um jeden Pluspunkt im praxisnahen Enterprise-Kundenumfeld kämpft. Daran wird auch das anstehenden NX 4.0 [10] nicht viel ändern können. Der seit X2go 3.01 verfügbare Webclient, den dieser Artikel gewürdigt hat, tut ein Übriges. (jk)
|
Infos |
|---|
|
[1] Schwerpunkt “Server-based Computing”: Linux-Magazin 10/07, S. 29 ff [2] X2go: [http://www.x2go.org] [3] Bastian Kames, “Desktop zum Mitnehmen: X2go 3.0”: Linux-Magazin 07/09, S. 79 [4] Nomachine: [http://www.nomachine.com/sources.php] [5] Libjpeg-turbo: [http://libjpeg-turbo.virtualgl.org] [6] X2go mit Libjpeg-turbo-Erweiterung für SLES 11 und Open Suse: [http://repo.medozas.de/medozas] [7] Open Suse Build Service: [http://software.opensuse.org/search] [8] Ice-WM-Profil für X2go: [http://www.medozas.de/icewm-x2go.tar.gz] [9] X2go-Wiki: [http://wiki.x2go.org] [10] NX 4.0: [http://www.nomachine.com/coming-up.php] |
|
Der Autor |
|---|
|
Michael Kromer, zu finden unter [http://medozas.de], ist Senior IT Consultant und Linux Engineer bei der Millenux GmbH in München. Er entwickelt an Open-Source-Projekten mit, zum Beispiel dem Linux-Kernel, Open NX, Asterisk, Virtualbox und ISC Bind. Seine privaten Leidenschaften sind Open Suse, bei dem er “Member” ist, und Virtualisierungstechnologien. |






