EDV:FreeNX/NX-3.0.0-freenx-solaris-10

From KIP Wiki
⧟kip-jumptonavigation⧽⧟kip-jumptosearch⧽

FreeNX mit 3.0.0-backend auf Solaris 10

Nachdem FreeNX (fast nur) auf shell-Skripten basiert, sollte zumindest der FreeNX-Teil eines NX-Servers plattformunabhängig sein. D.h. mit den Libraries von nomachine.com fßr Solaris sollte man auch einen FreeNX-Server auf Solaris realisieren kÜnnen. Hier beschreibe ich eine solche Installation.

NX-Pakete installieren

Die Pakete bekommt man von der Download-Seite von nomachine.com

pkgadd -d nxclient-3.0.0-84.sparc
pkgadd -d nxnode-3.0.0-88.sparc
pkgadd -d nxserver-3.0.0-74.sparc

die Original-Dateien sichern:

mv /usr/NX/bin/nxserver /usr/NX/bin/nxserver.nomachine
mv /usr/NX/bin/nxclient /usr/NX/bin/nxclient.nomachine

FreeNX installieren

svn checkout svn://svn.berlios.de/freenx
cp freenx/freenx-server/trunk/nxkeygen /usr/NX/bin/
cp freenx/freenx-server/trunk/nxloadconfig /usr/NX/bin/
cp freenx/freenx-server/trunk/nxnode /usr/NX/bin/
cp freenx/freenx-server/trunk/nxnode-login /usr/NX/bin/
cp freenx/freenx-server/trunk/nxserver /usr/NX/bin/
cp freenx/freenx-server/trunk/nxsetup /usr/NX/bin/
cp freenx/freenx-server/trunk/nxcups-gethost /usr/NX/bin/
cp freenx/freenx-server/trunk/nxdesktop_helper /usr/NX/bin/
cp freenx/freenx-server/trunk/nxviewer_helper /usr/NX/bin/

[ -f /usr/NX/etc/node.conf ] || cp freenx/freenx-server/trunk/node.conf.sample /usr/NX/etc/node.conf 
cd freenx/freenx-server/trunk/nxserver-helper/
gcc -o nxserver-helper nxserver-helper.c -lsocket
cp nxserver-helper /usr/NX/bin/
ln -s /usr/NX/bin/nxserver /usr/bin/
ln -s /usr/NX/bin/nxsetup /usr/bin/
ln -s /usr/NX/bin/nxagent /usr/bin/
ln -s /usr/NX/bin/nxloadconfig /usr/bin/

Damit nxclient zur VerfĂźgung steht:

ln -s /usr/NX/bin/nxclient.nomachine /usr/local/bin/nxclient

sicherheitshalber noch ein fehlender (?) Link:

cd /usr/NX/lib && ln -s libXrender.so.1.2.2 libXrender.so.1.2

Vorbereitungen

FĂźr die unten gezeigte Konfiguration braucht man ein fakehome Verzeichnis, in dem die lokalen nx-Dateien angelegt werden kĂśnnen. In unserem Fall brauchen wir das, weil die Homeverzeichnisse per AFS zur VerfĂźgung gestellt werden.

mkdir /usr/NX/fakehome
chmod 1777 /usr/NX/fakehome

Auf dem Rechner werden die Pakete von blastwave verwendet. Von dort holen wir uns die noch benĂśtigten Programme.

Dringend benĂśtigte Pakete:

pkg-get -i expect
pkg-get -i netcat
pkg-get -i textutils

Zusätzlich noch

pkg-get -i icewm
pkg-get -i xfce
pkg-get -i cupsd
pkg-get -i samba_client
pkg-get -i rdesktop vncviewer

expect wird an einem bestimmten Ort erwartet:

ln -s /opt/csw/bin/expect /usr/bin/expect

Dann sollten Sie die Verzeichnisangaben am Anfang von /usr/NX/bin/nxloadconfig ändern:

NX_DIR=/usr/NX
NX_ETC_DIR=$NX_DIR/etc
NX_SESS_DIR=$NX_DIR/var/db
NX_HOME_DIR=$NX_DIR/home/nx

das geht auch so :

cd /usr/NX/bin/
cat nxloadconfig | sed -e "s#^NX_DIR=.*#NX_DIR=/usr/NX#" > nxloadconfig.1
cat nxloadconfig.1 | sed -e "s#^NX_ETC_DIR=.*#NX_ETC_DIR=\$NX_DIR/etc#" > nxloadconfig.2
cat nxloadconfig.2 | sed -e "s#^NX_SESS_DIR=.*#NX_SESS_DIR=\$NX_DIR/var/db#" > nxloadconfig.1
cat nxloadconfig.1 | sed -e "s#^NX_HOME_DIR=.*#NX_HOME_DIR=\$NX_DIR/home/nx#" > nxloadconfig
rm nxloadconfig.1 nxloadconfig.2

LOG-Datei vorbereiten

touch /var/log/nxserver.log
chown nx /var/log/nxserver.log

Solaris 9

Die hier vorliegende Beschreibung gilt fßr Solaris 10. Ich habe es auch auf Solaris 9 versucht, dabei musste ich zusätzlich noch nxloadconfig ändern. Das Hauptproblem ist wohl, dass auf solaris 9 'egrep' nicht so funktioniert wie erwartet.

Folgende Änderungen wurden an nxloadconfig vorgenommen:

# diff nxloadconfig ~/nx/freenx/freenx-server/trunk/nxloadconfig
59c59
< NX_DIR=/usr/NX
---
> NX_DIR=/usr
62,64c62,64
< NX_ETC_DIR=$NX_DIR/etc
< NX_SESS_DIR=$NX_DIR/var/db
< NX_HOME_DIR=$NX_DIR/home/nx
---
> NX_ETC_DIR=/etc/nxserver
> NX_SESS_DIR=/var/lib/nxserver/db
> NX_HOME_DIR=/var/lib/nxserver/home
389,390c389
< #     [ -z $(echo "$SSHD_PORT" | egrep "^[1-9][0-9]{0,4}$") ] && \
<       [ -z $(echo "$SSHD_PORT" | egrep "^[1-9][0-9]+$") ] && \
---
>       [ -z $(echo "$SSHD_PORT" | egrep "^[1-9][0-9]{0,4}$") ] && \
413,414c412
< #     [ -z $(echo "$DISPLAY_BASE" | egrep "^[1-9][0-9]{0,4}$") ] && \
<       [ -z $(echo "$DISPLAY_BASE" | egrep "^[1-9][0-9]+$") ] && \
---
>       [ -z $(echo "$DISPLAY_BASE" | egrep "^[1-9][0-9]{0,4}$") ] && \
416,417c414
< #     [ -z $(echo "$SESSION_LIMIT" | egrep "^[1-9][0-9]{0,4}$") ] &&  \
<       [ -z $(echo "$SESSION_LIMIT" | egrep "^[1-9][0-9]+$") ] &&  \
---
>       [ -z $(echo "$SESSION_LIMIT" | egrep "^[1-9][0-9]{0,4}$") ] &&  \
419,422c416,419
< #     [ -z $(echo "$SESSION_USER_LIMIT" | egrep "^[1-9][0-9]{0,4}$") -o $SESSION_USER_LIMIT -gt $SESSION_LIMIT ] && \
< #             ERROR="yes" && echo "Error: Invalid value \"SESSION_USER_LIMIT=$SESSION_USER_LIMIT\""
< #     [ -z $(echo "$DISPLAY_LIMIT" | egrep "^[1-9][0-9]{0,4}$") -o $DISPLAY_LIMIT -lt $SESSION_LIMIT ] && \
< #             ERROR="yes" && echo "Error: Invalid value \"DISPLAY_LIMIT=$DISPLAY_LIMIT\""
---
>       [ -z $(echo "$SESSION_USER_LIMIT" | egrep "^[1-9][0-9]{0,4}$") -o $SESSION_USER_LIMIT -gt $SESSION_LIMIT ] && \
>               ERROR="yes" && echo "Error: Invalid value \"SESSION_USER_LIMIT=$SESSION_USER_LIMIT\""
>       [ -z $(echo "$DISPLAY_LIMIT" | egrep "^[1-9][0-9]{0,4}$") -o $DISPLAY_LIMIT -lt $SESSION_LIMIT ] && \
>               ERROR="yes" && echo "Error: Invalid value \"DISPLAY_LIMIT=$DISPLAY_LIMIT\""
467,468c464
< #     [ "$ENABLE_SERVER_FORWARD" = "1" -a -z $(echo "$SERVER_FORWARD_PORT" | egrep "^[1-9][0-9]{0,4}$") ] && \
<       [ "$ENABLE_SERVER_FORWARD" = "1" -a -z $(echo "$SERVER_FORWARD_PORT" | egrep "^[1-9][0-9]+$") ] && \
---
>       [ "$ENABLE_SERVER_FORWARD" = "1" -a -z $(echo "$SERVER_FORWARD_PORT" | egrep "^[1-9][0-9]{0,4}$") ] && \
477,478c473
< #     [ "$ENABLE_NOMACHINE_FORWARD_PORT" = "1" -a -z $(echo "$NOMACHINE_FORWARD_PORT" | egrep "^[1-9][0-9]{0,4}$") ] && \
<       [ "$ENABLE_NOMACHINE_FORWARD_PORT" = "1" -a -z $(echo "$NOMACHINE_FORWARD_PORT" | egrep "^[1-9][0-9]+$") ] && \
---
>       [ "$ENABLE_NOMACHINE_FORWARD_PORT" = "1" -a -z $(echo "$NOMACHINE_FORWARD_PORT" | egrep "^[1-9][0-9]{0,4}$") ] && \

und auch in /usr/NX/bin/nxsetup: Hier liegt das Problem bei cp

Zeile 362

		cp -af "$CUPS_BACKEND/ipp" "$CUPS_IPP_BACKEND"

ändern in

		cp -prf "$CUPS_BACKEND/ipp" "$CUPS_IPP_BACKEND"

Eine hier funktionierende Konfiguration

#grep -v ^# /usr/NX/etc/node.conf | grep -v ^$
ENABLE_PASSDB_AUTHENTICATION="0"
NX_LOG_LEVEL=7
NX_LOGFILE=/var/log/nxserver.log
ENABLE_FOOMATIC="0"
CUPS_BACKEND="/opt/csw/lib/cups/backend"
CUPS_IPP_BACKEND="$CUPS_BACKEND/nxipp"
CUPS_ETC="/opt/csw/etc/cups"
SAMBA_MOUNT_SHARE_PROTOCOL="none"
USER_FAKE_HOME=/usr/NX/fakehome/$USER
DEFAULT_X_SESSION=/usr/dt/bin/Xsession
COMMAND_START_KDE=/opt/csw/bin/icewm
COMMAND_START_CDE=/opt/csw/bin/xfce4-session
COMMAND_XAUTH=/usr/openwin/bin/xauth
COMMAND_NETCAT=/opt/csw/bin/netcat
COMMAND_CUPSD=/opt/csw/sbin/cupsd
COMMAND_MD5SUM=/opt/csw/bin/gmd5sum
COMMAND_RDESKTOP=/opt/csw/bin/rdesktop
COMMAND_VNCVIEWER=/opt/csw/bin/vncviewer
ENABLE_EXTERNAL_NXDESKTOP="1"
ENABLE_EXTERNAL_NXVIEWER="1"
AGENT_EXTRA_OPTIONS_X="-noshmem "
AGENT_LIBRARY_PATH=/usr/NX/lib/
PROXY_LIBRARY_PATH=/usr/NX/lib/
APPLICATION_LIBRARY_PRELOAD=/usr/NX/lib/libXft.so.2.1.2:/usr/NX/lib/libX11.so:/usr/NX/lib/libXext.so:/usr/NX/lib/libXcomp.so:/usr/NX/lib/libXcompext.so:/usr/NX/lib/libXrender.so

Aktivierung der Installation

nxsetup --install --clean --purge