Linux NetMag #5
Titel: Freier X-Server für Windows
URL: http://www.linuxnetmag.de/de/issue5/m5xserver1.html

X-Server für Windows Auch für Windows gibt es X-Server. Diese ermöglichen es einem, Programme auf einem Linux-Rechner zu starten aber auf einem Windows-Rechner anzeigen zu lassen.


Autor: Matthias Kranz

Themen:

Einleitung

Ziel ist es, auf einem Windows 9x oder NT einen vollständigen X-Server zu betreiben, um auf einen entfernten Linux-Rechner zuzugreifen und diesen wie einen lokalen Rechner benutzen zu können.
Es gibt mittlerweile einige kommerzielle X-Server für Windows. Der billigste dürfte der von MicroImages mit $25 sein. Allerdings laueft dieser nur mit TWM (Toms Window Manager). Auch hat mich diese Version nicht überzeugen können.

Es gibt allerdings noch eine alte komplett freie Version des MicroImages X-Servers. Dieser ist von 1997, also nicht mehr ganz frisch. Allerdings konnte ich bin auf einige Kleinigkeiten keine Probleme mit grafischen Programmen feststellen.

Ich würde sagen, wir fagen einfach mal an.

Voraussetzungen

Vorrausetzungen sind ein laufender Linux-Rechner mit korrekt konfiguriertem Netzwerk, sowie dem Window-Manager FVWM2. Der FVWM2 muß allerdings nicht als Standard-Oberfläche verwendet werden, sondern lediglich installiert sein. Des weiteren muß der Linux-Rechner RSH-Verbindungen annehmen.

Windows muß einfach nur installiert sein und halbwegs vernüftig laufen...schwer genug. Ausserdem sollte die Netzwerkkarte ohne Probleme funktionieren.

Als Programm wird nur xserver.zip benötigt, daß hier bereitsteht. Das Programm ist frei vertreibbar.

Konfiguration

Zuerst wird das Zip File xserver.zip nach C:\mix_95\ entpackt. Laut der urspünglichen Dokumentation muß das Verzeichnix exakt so heissen, allerdings kann man das Verzeichnis nennen, wie man will. Einzig beachten sollte man, daß man den DOS-Namen des Verzeichnisses kennen muß, also bei Namen länger als 8 Zeichen die Kurzform mit Tilde. Ich beschreibe die Konfiguration im Verzeichnis C:\mix_95\.

Als nächstes sollte man sich eine kleine FVWM2- oder TWM-Konfigurationsdatei besorgen. Diese wird benötigt für den Windowmanager. Standard-Konfigurationsdateien liegen bei SuSE Linux für den FVWM 2 unter /usr/X11R6/lib/X11/fvwm2/.fvwm2rc bzw. für den TWM unter /usr/X11R6/lib/X11/twm/system.twmrc .

Allerdings bringt eine Suche mit www.metaspinner.de nach .fvwm2rc repektive .twmrc auch einige Konfigurationsbeispiele zu Tage.

Die Window-Manager-Konfiguraitonsdatei muß unter $HOME/.fvwm2rc bzw. unter $HOME/.twmrc gespeichert werden. $HOME steht für das Home-Verzeichnis desjenigen Benutzers der über den X-Server auf seinen Linux-Rechner zugreifen können will. Es sei darauf hingewiesen, daß es nicht unbedingt ratsam ist, als ROOT-User zu arbeiten. Allerdings funktioniert die gesamte Konfiguration identisch für den ROOT-Benutzer, außer, daß das Home-Verzeichnis von ROOT unter /root liegt.

An dieser Stelle sei mir eine Anmerkung zur Sicherheit gestattet.
RSH ist nicht so sicher wie SSH und hat potenzielle Angriffspunkte. Ich würde das ganze also nicht unbedingt über das Internet machen, sondern nur innerhalb eines sicheren LANs.

In der ursprünglichen Fassung lief das Ganze auch für den freien X-Server nur mit TWM. Da mir dieser WM nicht zusagt, habe ich das Ganze mal ein bisschen aufgebohrt, so daß die hier beschriebene Version auch mit FVWM2 und evtl. anderen Window-Managern funktioniert. KDE tut es jedenfalls nicht.

Als nächstes schreiben wir das Skript für die Initialisierung des X-Servers auf dem Linux-Rechner.

Der freie MicroImages X-Server kommt nur mit einer limitierten Anzahl "eingebauter" Schriften. Allerdings sind im ZIP File bereits einige zusätzliche Schriften enthalten. Diese müssen eingebunden werden. Dies geschieht mit dem Programm "xset". Der Parameter -fp gibt den FONT-PATH an. Alle anderen Optionen sind in man xset ausführlichst nachzulesen, werden allerdings nicht benötigt um das Ding erst mal gestartet zu bekommen.
Das nächste ist der PATH selbst (nicht zu verwechseln mit dem FONT-PATH). Leider ist standardmässig nur /bin/ und /usr/bin enthalten. Damit muß bei allen X-Programmen der ganze Path komplett mit angegeben werden (/usr/X11R6/bin/...). Da das nicht lustig ist und bereits beim 2. Mal nervt, schreiben wir uns in das INIT-Script für den X-Server auch noch eine sinnvollere PATH Deklaration.
Nachdem der X-Server bei mir zum ersten Mal lief, musste ich feststellen, daß Sonderzeichen wie Backslash, geschweifte Klammern etc. nicht gingen. Ich habe also noch eine Änderung fürs Keyboard gebastelt, daß die Symbole auch den Standardtasten wieder zuordnet und alles funktioniert. Dazu benutze ich den Befehl xmodmap.

Das wars schon und hier ist das vollständige Skript. Legt es in /home/benutzername/initxscript ab und verseht es mit chmod 755 initxscript mit Ausführungsrechten.

Datei initxscript
 PATH="/bin:/usr/bin:/opt/bin:/usr/X11R6/bin:/usr/TeX/bin:/usr/local/bin"
export PATH
/usr/X11R6/bin/xset fp=\ c:/mix_95/pcf/75dpi/,c:/mix_95/pcf/misc/,c:/mix_95/bdf/misc/,\ c:/mix_95/fonts/100dpi/,c:/mix_95/fonts/75dpi/,c:/mix_95/fonts/latin2/,\ c:/mix_95/fonts/misc/,c:/mix_95/fonts/local/,c:/mix_95/fonts/pex,\ c:/mix_95/fonts/speedo/,c:/mix_95/fonts/type1,c:/mix_95/fonts/urw/\ >> /home/benutzername/start.log & /usr/X11R6/bin/xmodmap -display 192.168.0.11:0.0 - ‹‹EOF keycode 125 = bar keycode 127 = asciitilde keycode 126 = braceright keycode 124 = braceleft keycode 92 = bracketleft keycode 94 = bracketright keycode 65 = at keycode 93 = backslash keycode 95 = asciicircum keycode 97 = quoteleft keycode 181 = quoteright EOF /usr/X11R6/bin/fvwm2 >> /home/benutzername/start.log &

(download)

Anmerkungen:
benutzername im Skript ist durch den gewünschten Benutzernamen zu ersetzen.
Die Parameter für xset (3.Zeile) müssen alle in einer Zeile sein !
Ich habe auf meinem Linux-System noch einige Fonts gefunden und zusätzlich hinzugefügt. Standardmässig sind nur die ersten 3 (!) Font-Directories dabei ! Keine nichtexistierenden Verzeichnisse angeben, sonst bricht xset ab!

Möglicherweise wollt Ihr als zusätzliche Variablen noch MAIL=/var/spool/mail exportieren. Schreibt die MAIL-Zeile unter die PATH Zeile (1. Zeile) und ändert die export Zeile (2. Zeile, danach 3. Zeile) in export PATH MAIL um. Analog mit weiteren Umgebungsvariablen die Ihr haben wollt.

Jetzt müssen wir dem Windows PC erlauben, dieses Skript auszuführen. Dazu legen wir unter /home/benutzername die Datei .rhosts an.
Diese hat folgenden Aufbau:

Datei .rhosts
rechnername.domain.de Benutzer

Dabei ist Rechnername der Name Eures Windows-Rechners (bzw. den Namen den Ihr in der /etc/hosts auf Eurem Linux-Rechner angegeben habt). Ist Euer Windows Rechner der Rechner mit z.B. IP-Adresse 192.168.0.11 folgendermaßen in der /etc/hosts angegeben,

Datei /etc/hosts
192.168.0.11	alex.technix.de		alex

dann steht in /home/benutzername/.rhosts

Datei .rhosts
alex.technix.de benutzername

Diese .rhosts-Datei erlaubt einem darin angegebenen Rechner Befehle ohne Angabe von Passwörtern auszuführen. Also vorsichtig und mit ein Grund warum ROOT das NICHT machen sollte! ! !

Die Datei /home/benutzername/.rhosts ist mit

>> chmod 600 .rhosts
nur für den Owner les- und schreibbar zu machen.
Das war bereits die gesamt Konfiguration auf dem Linux-Rechner.


Wenden wir uns dem Windows-Rechner zu.
Wir schreiben uns ein kleines BATCH-Programm, das zuerst das Initialisierungsskript auf dem Linux-Rechner ausführt und dann erst den Fenstermanager (FVWM 2) startet.

Das Batch-Programm legen wir unter c:\mix_95\ ab und es sieht so aus:

Datei launch.bat
REM Brought to you by Matthias Kranz ([email protected])
REM macht das REM vor der naechsten Zeile raus, wenn alles laeuft um unnoetige 
REM Ausgaben zu vermeiden.
REM ECHO OFF
XS
REM mein Linux Server hat die IP 192.168.0.1 und der Windows-Client hat die IP 192.168.0.11
REM die naechste Zeile MUESST Ihr anpassen
rsh -l benutzername 192.168.0.1 "xterm -display 192.168.0.11:0.0 -title \ 
Initialisierung -e nohup /home/benutzername/initxscript > /home/benutzername/start.log &"
EXIT
EXIT
EXIT

(download)

Jetzt legt Ihr Euch eine Verknüpfung auf dem Desktop ab, bei den Eigenschaften könnt Ihr dann "minimiert starten" und "nach Beenden schliessen" einstellen, dann stört die aufpoppende DOS-Box nicht mehr.

Das sollte es sein. Jetzt doppelt auf die Verknüpfung klicken und das wars.

Wichtige Bemerkungen und Problemlösungen und ungeklärte Probleme:
- Beim Start des Windows-X-Servers geht ganz kurz ein weisses Fenster auf und sofort wieder zu. Das ist das initxscript.
- Der X-Server wird unter Windows genau die Auflösung verwenden wie der Windows-Rechner. Das X-Server-Fenster läßt sich auch nicht vergrössern oder verkleinern.
- Der X-Server verwendet ebenfalls die Farbtiefe wie auf dem Linux-Rechner. Unabhängig was Ihr unter Windows eingestellt habt. Das führt auch zu keinen Konflikten oder Problemen.
- Einige X-Programme laufen einfach nicht, besonders KDE-Programme oder Programme die _andere_ Schriftarten verwenden, die vom X-Server nicht zur Verfügung gestellt werden. Ihr könnt aber unter /home/benutzername/.fvwm3rc bzw. eben /home/benutzername/.twmrc die zu verwendenden Schriftarten festlegen -> man fvwm2 oder man twm .
- Auf dem Windows-Rechner könnt Ihr mit dem Befehl

>> rsh -l LINUX-RECHNER-IP "/pfadzumprogramm/programm -display WINDOWS-RECHNER-IP:0.0 &"
direkt weitere Programme im launch.bat File starten. Oder Ihr passt Eure .fvwm2rc bzw. .twmrc entsprechend an.
- Beim Starten von launch.bat kann es sein, daß der Windows-X-Server sofort abstürzt, vor allem, wenn Windows schon längere Zeit lang lief. Dann müßt Ihr Windows neu starten.
- beim Starten von initxscript kann es sein, daß der Fenstermanager nicht ganz korrekt startet. Deshalb solltet Ihr Euch in eines der Menues des Fenstermanagers die Funktion zum Neustarten des Fenstermanagers einbauen. (Der Fenstermanager ist unabhängig vom Windows-X-Server neu startbar -> man fvwm2 bzw. man twm ). Danach geht eigentlich alles.

Falls Ihr weitere Probleme (vielleicht sogar deren Lösungen habt, schreibt sie bitte am Ende des Artikels in die Kommentar-Box)

Dokumentation

Weitere Dokumentation findet man unter:

Links

http://www.uk.research.att.com/vnc/ Ein weiterer freier X-Server für Windows und andere Betriebssysteme. Dieser X-Server ist zwar nicht so schnell, wie derjenige von MicroImages, dafür funktioniert er aber mit vielen Windowmanagern.
http://download.sourceforge.net/WeirdX/ Ein weiterer X-Server, der komplett in Java (JDK 1.2.* + Swing) programmiert ist. Läuft auch als Applet in einem Java-Fähigen Web-Browser.


Dieser Artikel ist ein Nachdruck eines Textes von Matthias Kranz. Weitere Texte von M. Kranz und Jan Thiele findet man auf seiner Homepage http://www.price-of-freedom.de