| Search |
 |
|
|
« back
|
|
|
|
Zum fernbedienen eines entfernten PC's
Um VNC kostenlos herunterzuladen, klicken Sie bitte auf untenstehenden Link und auf der dann erscheinden Seite auf Download.
http://www.uk.research.att.com/vnc/
Beschreibung:
VNC ist die Abkürzung für Virtual Network Computing und steht für Software, mit der man unter einer graphische Benutzeroberfläche nicht nur am Rechner selbst, sondern ebenso an einem anderen Rechner irgendwo im Netzwerk bequem arbeiten kann. Wer hat nicht schon immer davon geträumt, den unabdingbaren (der Chef will es so!) Windows NT Server von seinem Linux Arbeitsplatz aus zu bedienen. Oder an den Windows 95 Terminals eine Verbindung zur Linux Workstation aufzubauen, ohne viel Geld in einen richtigen X Server für Microsoft Windows zu investieren? Mit VNC ist beides möglich, und noch viel mehr, denn VNC ist anspruchslos konzipiert und auch für andere Hardwareanwendungen interessant (so existiert ein VNC Interface zu einem CD-Player, der dann vom Computer aus bedient werden kann).
Das Funktionsprinzip ist elementar und deshalb auf einer Vielzahl von Plattformen anwendbar. Auf dem entfernten, zu bedienenden Rechner, läuft die Serversoftware, die den Großteil der Arbeit erledigt. Der Server sendet die aktuellen Bildschirmdaten als Farbpixel an den Client Rechner (Viewer), der diese dann in einem Fenster darstellt. Der Viewer sendet im Gegenzug die Mausbewegungen und Tastatureingaben an den Server zurück. So läßt sich zum Beispiel die Oberfläche von einem Windows95 Rechner als Graphik in einem X Window Fenster unter Linux darstellen. Mausbewegungen im X Window Fenster werden direkt an Windows95 weitergeleitet und dort ausgeführt. Die Änderungen auf dem Bildschirm werden zurückgeschickt und im X Window Fenster angezeigt (siehe Abbildung 1).
VNC wurde vom Olivetti & Oracle Research Lab entwickelt und unter der GNU Public License veröffentlicht. Dies bedeutet, daß die Quelltexte frei erhältlich und modifizierbar sind. Die veränderten Quelltexte müssen unter der gleichen Lizenz weitergegeben werden (aber wem erzähle ich das ;-). Nach eigenen Angaben hat sich ORC aufgrund der guten Erfahrungen mit der CORBA-Implementation omniORB für diese Lizenz entschieden (omniORB ist ebenfalls unter der GPL lizensiert).
ORC hat für alle Plattformen, die ihnen zur Verfügung standen, Server und Clients geschrieben. Diese sind erhältlich für das X Window System und für Microsoft Windows. Weil jeder VNC-Server auch einen kleinen Webserver enthält, kann man sogar mit einem Java-fähigen Browser eine Verbindung zum VNC-Server aufnehmen (siehe Abbildung 2). Ebenfalls erhältlich ist ein Client für SVGAlib und GGI unter Linux. Es ist zu erwarten, daß in Kürze die VNC-Software auf viele unterschiedliche Plattformen portiert sein wird. Aktuelle Informationen findet man auf der VNC-Mailing-Liste und auf der Homepage im World Wide Web.
Wie funktioniert das? VNC arbeitet mit einem eigenen Protokoll, das den Datenaustausch zwischen Server und Viewer (dem Client) regelt. Das VNC-Protokoll verwirklicht dabei die Idee eines entfernten Framebuffers (und das ist nichts anderes als der Graphikspeicher des Servers). Der Server hat dabei als einzige Aufgabe, den auf dem Viewer dargestellten Framebuffer regelmäßig auf den neuesten Stand zu bringen. Dazu werden Informationen über rechteckige Bildschirmausschnitte übertragen. Was genau in diesen Rechtecken enthalten ist, hängt jedoch von der verwendeten Codierung ab. So kann zum Beispiel der Inhalt des Rechtecks Pixel für Pixel übertragen werden, oder aber es kann ein schon vorhandener Bildschirmauschnitt in das Rechteck hineinkopiert werden. Dabei muß der Server beachten, daß nicht jeder Viewer alle Codierungen unterstützt. Wenn der Server die optimale verfügbare Codierung für eine Änderung des Bildschirms gefunden hat, sendet er dieses Update an den Viewer, der genau dieses Rechteck neu darstellt. Das nächste Rechteck kann dann wieder in einer anderen Codierung übertragen werden, und so weiter.
Der Server sendet erst dann ein Update, wenn der Client dies verlangt. Dadurch wird die Datenübertragung an die Geschwindigkeit des Clients und des Netzwerkes angepaßt. Einerseits führt dies natürlich zu Informationsverlusten, wenn der Client zu selten ein Update verlangt und darstellen kann (zum Beispiel bei schnellen Animationen), andererseits wird auch wirklich nur die Datenmenge übertragen, die der Client angemessen verarbeiten kann, und das Netzwerk sowie die für den Client verfügbare Rechenleistung wird auch bei geringer Kapazität optimal ausgelastet.
Dem Client kommen zwei Aufgaben zu: Einerseits muß er die ankommenden Updates in Form von codierten rechteckigen Bildschirmänderungen anzeigen, andererseits muß er die Eingaben des Benutzers an den Server weiterleiten. Für die Erfüllung der ersten Aufgabe muß der Client natürlich mindestens eine der verwendeten Codierungen unterstützen, und diese auf einem Graphikbildschirm anzeigen können. Für die zweite Aufgabe sind im Protokoll eine Tastatur und ein mit mehreren Tasten versehenes Zeigergerät vorgesehen. Letzteres kann zum Beispiel eine Maus oder ein Graphiktablett sein.
Durch dieses "thin-client" Protokoll wird erreicht, daß auch auf einfacher Hardware ein Viewer laufen kann. Außerdem werden auf dem Viewer keine Informationen über den aktuellen Zustand des Servers gespeichert. Man kann also zu einem beliebigen Zeitpunkt die Arbeit an einem Viewer unterbrechen und an einer anderen Stelle im Netzwerk mit einem anderen Viewer fortsetzen. Es können sogar mehrere Viewer gleichzeitig laufen (wobei vielleicht besser nicht zwei Leute gleichzeitig versuchen sollten, Windows zum Absturz zu bringen ;). Auch über das Internet kann eine VNC Verbindung aufgebaut werden. Da der Server ein Java Applet zur Verfügung stellen kann, ist höchste Portabilität gewährleistet. Dazu ist jedoch einschränkend zu bemerken, daß die Geschwindigkeit der meisten Java-Interpreter auf diesem Gebiet nicht gerade berauschend ist.
Welche Software wird benötigt? Je nachdem, welcher Rechner von welchem anderen Rechner bedient werden soll, muß man Server und/oder Viewer installieren. Auf dem Rechner, den man bedienen will, muß natürlich der Server installiert werden, und auf dem Rechner, an dem man real sitzen und arbeiten will, muß ein Client (=Viewer) verfügbar sein (oder ein Java-fähiger WWW Browser).
Dabei ist zumindest unter Linux die Unterscheidung nicht wörtlich zu nehmen, da ein Linux Rechner als Server und Client gleichzeitig dienen kann. Linux hat auch den Vorteil, daß mehrere Server gleichzeitig laufen können, die alle eine andere X Window Oberfläche bieten. Unter Windows ist dies nicht möglich, das heißt, VNC macht weder aus Windows 95 noch aus Windows NT ein Multi-User System. Alle Viewer, die an den Microsoft Windows VNC-Server angeschlossen sind, stellen den selben Bildschirm dar.
Im folgenden wird ein funktionstüchtiges TCP/IP Netzwerk vorausgesetzt (wiederum gilt, daß auch ein einzelner Linux Rechner schon ein kleines Netzwerk bildet). Der Windows Server und Client sind recht einfach zu installieren. Erklärt werden soll hier die Installation eines VNC-Servers und zweier VNC-Viewer unter Linux (X und SVGAlib).
VNC-Server unter Linux Der für Linux erhältliche VNC-Server stellt einen eigenen X Window Server dar, und alle Applikationen für X laufen natürlich auch auf dem VNC-Server. Der einzige Unterschied ist, daß der VNC Server keine Konsole belegt. Er arbeitet still im Hintergrund und wartet darauf, daß ein VNC-Viewer die Verbindung aufnimmt. Wohl aber muß dem VNC-Server ein display zugeordnet werden, was für jeden X-Server der Fall ist. Der Wert von display ist hier Hostname:display-Nummer, wobei der Hostname beim Aufruf von vncserver nicht angegeben werden darf.
Benötigt wird die VNC Server-Software von ORL. Die Kompilation und Installation ist nicht schwer, hat aber einige Tücken:
Die Software kompiliert nicht ohne Änderung unter glibc aka. libc6. Es fehlt Support für komprimierte (gzip'd) Schriftarten. Diese sind jedoch Standard bei allen modernen Linux Systemen. Im Wrapper-Skript vncserver fehlt eine wichtiger Befehl für das korrekte Funktionieren der X-Authorisierung, und einige Pfadangaben in dieser Datei stimmen eventuell nicht mit dem gegebenen System überein. Für alle diese Probleme gibt es einen Patch. Bequemer aber wird es sein, direkt die von mir gepatchten Quelltexte zu besorgen. Als zusätzlicher Bonus ist das vncserver-Skript voll konfigurierbar durch die Konfigurationsdateien /etc/vnc.conf und ~/.vncrc. Debian User haben es besser: Die Debian Pakete in der aktuellen Distribution (Hamm) verfügen schon über diese Änderungen. Einfach nur das Debian Paket vncserver installieren, fertig.
Verwendet wurde von mir der Patch von Mark Spencer (allerdings ohne Pentium Optimierung). Im vncserver-Skript wurde die folgende Zeile eingefügt (direkt hinter dem anderen xauth-Befehl:
system("xauth -f $xauthorityFile add $host/unix:$displayNumber . $cookie"); Das vncserver Skript habe ich um einige wichtige Funktionalitäten ergänzt und extern konfigurierbar gemacht. Es liest erst die Datei /etc/vnc.conf und danach ~/.vncrc. So kann jeder User seine eigenen Präferenzen einstellen. Dabei wird erst die Konfigurationsdatei unter /etc vollständig eingelesen, und dann in einem zweiten Durchlauf eine eventuell vorhandene lokale Konfiguration im Home-Verzeichnis des Users. Dort können dann Felder überschrieben oder auf den Defaultwert zurückgestetzt werden.
Nach der Übersetzung und (hoffentlich) erfolgreicher Installation kann der Server gestartet werden. Von direkter Benutzung des Programs Xvnc rate ich ab, weil es völlig unkonfiguriert daherkommt. Das schon besprochene vncserver Skript sorgt jedoch dafür, daß Xvnc mit den richtigen Optionen gestartet wird. Weitere Optionen für Xvnc können übrigens einfach an den Aufruf von vncserver angefügt werden. So bringt der Befehl
vncserver -query localhost Xvnc dazu, den login-Screen von xdm auf dem lokalen Rechner zu präsentieren. Auf diesem kann man sich wie gewohnt anmelden - vorausgesetzt, man hat eine Verbindung von einem VNC-Viewer zustande gebracht. Ohne diese passiert nämlich zunächst einmal gar nichts.
Mit etwas Glück läuft jetzt Xvnc geduldig im Hintergrund, wie man sich mit ps leicht überzeugen kann. Sollte dies nicht der Fall sein, hat sich Xvnc aus irgendeinem Grund verabschiedet. Die Fehlermeldung wird nicht auf die Konsole ausgegeben, sondern im Regelfall in die Datei ~/.vnc/X.log. Dort kann man dann eventuell einen Hinweis auf den Grund des Scheiterns bekommen.
Meist ist das Problem ein fehlender Zeichnsatz oder Schwierigkeiten mit der Nutzungsberechtigung (Xauthority überprüfen). Mit den oben angegeben Patches sollten diese aber schon im Vorfeld behoben sein. Nach dem Start verrät einem vncserver, auf welchem Display Xvnc denn jetzt wirklich läuft, und dies ist meist die einzige Information, die man benötigt, um mit dem VNC-Viewer eine Verbindung aufzubauen.
VNC-Viewer unter Linux mit dem X Window System Läuft erst einmal ein VNC-Server irgendwo im erreichbaren Netz, kann man seinen Display mittels eines VNC-Viewers lokal darstellen. Unter X Window geschieht dies in einem normalen Fenster. Falls das Fenster groß genug ist, zeigt es den gesamten Framebuffer des Servers an, ansonsten ermöglichen Scrollbalken die Auswahl des gewünschten Bildschirmausschnitts.
Dabei ist das vncserver-Skript so eingerichtet, daß es die Geometrie eines laufenden X Servers abfragen kann. Wenn dies geschieht, richtet vncserver einen Framebuffer ein, der nur etwas kleiner ist als die Größe des bestehenden X Server Bildschirms. Ferner wird auch die Farbtiefe angeglichen. Wird vncserver aus einem bestehenden X Window System aufgerufen, so funktioniert dies automatisch, ansonsten sollte die Variable $getDefaultFrom in einer der Konfigurationsdateien auf den richtigen Wert gesetzt werden. Letzteres funktioniert nur bei der Debian Version, beziehungsweise bei der von mir veränderten Version von vncserver.
Der VNC-Viewer benötigt keinen Patch und läßt sich ohne Schwierigkeiten übersetzen. Als Argument gibt man ihm den hostname und die display-Nummer des Rechners an, auf dem der Server läuft. Läuft Xvnc zum Beispiel auf dem selben Rechner unter der display-Nummer 2, kann man eine Verbindung so aufbauen:
vncviewer localhost:2 Dabei werden alle anderen Verbindungen von weiteren VNC-Viewern mit dem gleichen Server terminiert, was sich störend auswirken kann, wenn die Verbindung an mehreren Stellen gleichzeitig aufgebaut werden soll. Eine Option -shared verhindert das Beenden der schon bestehenden Verbindungen:
vncviewer -shared localhost:2 Da ein VNC-Server einen vollwertigen X Server darstellt, kann man vncviewer auch aus einer schon bestehenden VNC-Verbindung heraus starten. Dabei sollte der Zielserver aber nach Möglichkeit nicht derselbe sein, sonst kann sich ein interessanter Effekt ergeben
|
|
|
|
|
|
|
| Specials |
|
|
|
|
|
| You have the possibility to pay by pre-payment or cash on delivery. |
|
|