Sonntag, 27. September 2009

NXServer (FreeNX) unter OpenSolaris 2009.06 (x86)

Um auf meinem Server ein paar Dinge grafisch zu administrieren habe ich mir FreeNX (Remote Desktop Variante für Unix) installiert.

Die Binaries für OpenSolaris gibt es auf http://www.opensolaris.org/os/project/awards/awards_land/Entries/. Dazu muss man einfach die Datei http://dlc.sun.com/osol/awards/downloads/current/freenx.tar.gz runterladen und in einem temporären Verzeichnis entpacken. Dann das Verzeichnis freenx/freenx-0.7.2-nx-3.1-nevada-b90-x86/opt/NX nach /opt verschieben und mit "chown -R root:bin /opt/NX" den Besitzer richtig setzen.

Laut README sollte nun ein "/opt/NX/bin/nxsetup --install" genügen, um die Installation abzuschliessen. Da kamen bei mir aber gleich mal ein paar Fehlermeldungen, da die Binaries offenbar nicht mehr so hundertprozentig zum aktuellen OpenSolaris passen. Und beim Aufbau einer Verbindung lief ich auch dauernd in ein Timeout.

Um diese Fehler zu beheben ist folgendes notwendig:

1) Fehlende Pakete mit SUNWcups, SUNWexpect, SUNWnetcat aus dem OpenSolaris Repository nachinstallieren.

2) Die Meldung "sed: command garbled: s/%BACKEND%/3.1.0" kann man durch folgende Änderung beseitigen. Das Problem ist nämlich, dass in einem Script das strings Kommando zwei Zeilen zurückliefert und nicht eine Zeile. Einfach die Datei /opt/NX/bin/nxloadconfig öffnen (zuvor eine Sicherungskopie machen) und folgende Zeile ( bei mir in Zeile 312) wie folgt ändern:

NX_BACKEND_VERSION=$(strings $PATH_BIN/nxagent 2>/dev/null | egrep 'NXAGENT - Version' | sed 's/.*Version //g')

ersetzen durch:

NX_BACKEND_VERSION=$(strings $PATH_BIN/nxagent 2>/dev/null | egrep 'NXAGENT - Version' | sed 's/.*Version //g' | head -n 1)

3) Und zuletzt ist in der Datei /opt/NX/bin/nxnode (zuvor wieder eine Sicherungskopie anlegen) folgende Zeile (direkt nach Zeile 1013 "uniqueid=$(getparam uniqueid)") einzufügen. Das ganze ist ein Workaround für die komischen Unicode-Zeichen anstelle der Buchstaben BCDEF in den Session-Id's. Ich habe nicht näher erforscht, warum die da sind, aber so werden sie korrekt verwendet:

uniqueid=`echo "$uniqueid" | /usr/gnu/bin/tr -d '\357\274' | /usr/gnu/bin/tr '\242\243\244\245\246' 'BCDEF'`
Achtung auf die Backticks am Anfang und am Ende!!!

Und dann hat's bei mir funktioniert. Ohne diese Änderungen ist der Client beim Verbinden immer hängengeblieben und wenn man im Internet recherchiert sieht man, dass einige Leute auch diese Probleme haben.

Was kann man nun machen, wenn man auch weiterhin keine Verbindung zustande bringt. In der Datei /opt/NX/bin/nxloadconfig kann man durch folgende Änderung das Debugging in die Datei /var/log/nxserver.log aktivieren:

NX_LOG_LEVEL=0

SESSION_LOG_CLEAN=1

ist zu ersetzen durch:

NX_LOG_LEVEL=6

SESSION_LOG_CLEAN=0

Und dann kann man sich einfach an Hand der Fehlermeldungen durch die einzelnen Scripts hanteln und nach möglichen Fehlern suchen.

Ein Blick in das Blog des Paket-Maintainers (und die Kommentare) auf http://www.kraftek.com/blog/ kann eventuell auch weiterhelfen.

3 Kommentare:

  1. erstmal kompliment für die ss4200 Tips. Meiner rennt nun auch unter b134 mit dedup. Leider ist der Link des freenx.tar.gz aus http://www.opensolaris.org/os/project/awards/awards_land/Entries nicht mehr aktiv. Kannst du noch eine Version online stellen? Im verlinkten Blog des Maintainers wurde auf andere Anfragen bisher nicht reagiert.
    Danke
    AntwortenLöschen
  2. Yes, it would be great if we could find an active link of freenx.tar.gz...
    AntwortenLöschen
  3. Hi

    wollte auf meinem Laptop opensolaris installieren. Da opensolaris nie im grafischen Modus startet dachte ich mir ich versuchs per text modus. Hab alles gemacht wie es in der anleitung steht. Nur wenn ich mit ifconfig -a die ip auslesen will kommt inet 127.0.0.0 Netmask ff000000 inet 0.0.0.0 netmask 0 ether 0:12:f0:61:c3:e6 somit kann ich mit dem remote nicht auf das system zugreifen was mach ich da falsch und wie mach ichs richtig?
    AntwortenLöschen