Stanford farmshare with NX: Unterschied zwischen den Versionen
Niki (Diskussion | Beiträge) |
Niki (Diskussion | Beiträge) |
||
Zeile 8: | Zeile 8: | ||
= Server (corn, ...) = | = Server (corn, ...) = | ||
+ | |||
+ | == One-Time setup == | ||
Cython is too old in raring. Solution: Download xpra-0.7.8.tar.bz2 | Cython is too old in raring. Solution: Download xpra-0.7.8.tar.bz2 | ||
Zeile 22: | Zeile 24: | ||
setenv PYTHONPATH `ls -d ~/lib*/python` | setenv PYTHONPATH `ls -d ~/lib*/python` | ||
set path=( $site_path ~/bin ~ ) | set path=( $site_path ~/bin ~ ) | ||
+ | |||
+ | == Starting server == | ||
Re-login, choose a random 16 integer (e.g. 138 - this will be the virtual screen) and: | Re-login, choose a random 16 integer (e.g. 138 - this will be the virtual screen) and: | ||
Zeile 41: | Zeile 45: | ||
Cadence starts now in a virtual screen. | Cadence starts now in a virtual screen. | ||
SSH session can be closed with CTRL+ALT+D (detaches screen) and logout. | SSH session can be closed with CTRL+ALT+D (detaches screen) and logout. | ||
+ | |||
+ | == Advanced way == | ||
+ | |||
+ | Alternatively to the previous section, the server can be started as follows. Mainly, this keeps AFS/Kerberos tokens for a long time so that the server can be used for a long period of time. | ||
+ | |||
+ | Login via ssh. Then: | ||
+ | pagsh | ||
+ | kinit | ||
+ | aklog | ||
+ | screen | ||
+ | keeptoken | ||
+ | source /tmp/.krbhold_nhammler.sh | ||
+ | |||
+ | Finally, I created a startup script for my application (Cadence) which is ~/EE315B/cad.sh: | ||
+ | #!/bin/tcsh | ||
+ | setenv EE315B_WORKDIR /afs/ir.stanford.edu/users/n/h/nhammler/EE315B | ||
+ | source /usr/class/ee315b/DOT.cshrc | ||
+ | cd $EE315B_WORKDIR/opus | ||
+ | echo Now starting virtuoso ... | ||
+ | virtuoso | ||
+ | |||
+ | Finally, the xpra server can be started: | ||
+ | |||
+ | xpra --socket-dir=/tmp/xpra --exit-with-children --no-daemon --start-child=~/EE315B/cad.sh start :138 | ||
+ | |||
+ | and screen detached via CTRL+D and SSH connection can be closed. | ||
+ | |||
+ | More details on keeping AFS credentials can be found on https://itservices.stanford.edu/service/afs/learningmore/tokens | ||
= Client = | = Client = |
Aktuelle Version vom 4. Jänner 2014, 00:08 Uhr
Update: NX (in particular FreeNX) is out-dated and very buggy. Successful reconnects are a matter of luck.
Found something much better: http://xpra.org/
Caveats: Little bit slower than NX (same as X forwarding).
I issued a ticket, everything needed for xpra should be installed on corn now.
Server (corn, ...)
One-Time setup
Cython is too old in raring. Solution: Download xpra-0.7.8.tar.bz2
Then
tar xvjf xpra-0.7.8.tar.bz2 cd xpra-0.7.8 ./setup.py install --home=install mkdir -p ~/lib ~/bin cp -r install/bin/* ~/bin cp -r install/lib/* ~/lib
Add to .cshrc:
setenv PYTHONPATH `ls -d ~/lib*/python` set path=( $site_path ~/bin ~ )
Starting server
Re-login, choose a random 16 integer (e.g. 138 - this will be the virtual screen) and:
screen xpra start --no-daemon --socket-dir=/tmp/xpra :138
- AFS does not allow the socket to be created, therefore socket directory is /tmp/xpra (or sth. else in tmp)
Press CTRL+ALT+N for a new screen window
Start the application you like (e.g. Cadence). The display must be set to the above value:
setenv DISPLAY :138 cd ~/EE315B/opus virtuoso
Cadence starts now in a virtual screen. SSH session can be closed with CTRL+ALT+D (detaches screen) and logout.
Advanced way
Alternatively to the previous section, the server can be started as follows. Mainly, this keeps AFS/Kerberos tokens for a long time so that the server can be used for a long period of time.
Login via ssh. Then:
pagsh kinit aklog screen keeptoken source /tmp/.krbhold_nhammler.sh
Finally, I created a startup script for my application (Cadence) which is ~/EE315B/cad.sh:
#!/bin/tcsh setenv EE315B_WORKDIR /afs/ir.stanford.edu/users/n/h/nhammler/EE315B source /usr/class/ee315b/DOT.cshrc cd $EE315B_WORKDIR/opus echo Now starting virtuoso ... virtuoso
Finally, the xpra server can be started:
xpra --socket-dir=/tmp/xpra --exit-with-children --no-daemon --start-child=~/EE315B/cad.sh start :138
and screen detached via CTRL+D and SSH connection can be closed.
More details on keeping AFS credentials can be found on https://itservices.stanford.edu/service/afs/learningmore/tokens
Client
Need an X server (e.g. cygwin, xming, ...)
Virtual desktop can be forwarded to local screen by logging in via SSH (enable X forwarding) and:
xpra attach --socket-dir=/tmp/xpra :138
Session, network etc. can be closed/killed now, it continues to run in background. Just repeat the step to get session again.
The whole stuff can be automated using shell script on server side, batch script on client side and configure plink to use GSSAPI (incl. credential delegation). Cadence/session can then be started without entering a password!
Yaaaay! Nomachine NX combines the advantages of both VNC and F forwarding. Summarized all Features of this approach:
- Windows seamlessly integrate into client desktop (as if Cadence, MATLAB etc. would run locally), similar as X forwarding
- connection is persistent (when connection gets lost), as for VNC
- No problems with clipboard
- Access to local devices (not tried)
Awesome! Unfortunately the FreeNX package is outdated and buggy, but after 2 hours work I got it running
Client side (Windows)
Download the old (3.5) version of the NX client for Windows: https://www.nomachine.com/NX-3-5-0-Download-Package&Prod_Id=3835
rename:
c:\Program Files (x86)\NX Client for Windows\bin\nxssh.exe
to
c:\Program Files (x86)\NX Client for Windows\bin\mxssh.exe
download nxssh.exe from http://prdownload.berlios.de/freenx/nxssh.exe and copy it to c:\Program Files (x86)\NX Client for Windows\bin\
Connection settings:
Server: @corn07.stanford.edu Port: 22 Desktop: Unix, Custom Login: nhammler@U:/afs/ir/users/n/h/nhammler/NX4U/bin/nxserver-usermode Password: [SUNET password]
- The "@" in front of the host name activates the nxssh wrapper (executes FreeNX usermode)
- The "U:" after the username executes usermode nxserver
- The path afterwards points to the nxserver-usermode binary
See source code: https://github.com/Fabianx/freenx/blob/master/freenx-utils/nxpublickey/nxssh-4US.c
Everything should work. Cadence needs some fonts (too lazy to find out which exactly), so it's recommended to install these add-on packages from: https://www.nomachine.com/NX-3-5-0-Download-Package&Prod_Id=3835:
- nxfonts-100dpi-3.5.0-1.exe
- nxfonts-misc-3.5.0-1.exe
- nxfonts-others-3.5.0-1.exe
- nxfonts-75dpi-3.5.0-1.exe
Finally, save the complete config into an nxs file (e.g., can be found in %USERPROFILE%\.nx\*.nxs) and create a shortcut. This either starts Cadence as if it would be called locally (or resumes all windows if the connection was lost).
My example:
- General -> Desktop Unix/Custom -> Settings -> Run the following command: /afs/ir/users/n/h/nhammler/EE315B/cad.sh
- ~/EE315B/cad.sh contains:
#!/bin/tcsh setenv EE315B_WORKDIR /afs/ir.stanford.edu/users/n/h/nhammler/EE315B source /usr/class/ee315b/DOT.cshrc cd $EE315B_WORKDIR/opus echo Now starting virtuoso ... virtuoso
Important: Use a particular corn (e.g. corn05.stanford.edu) to avoid load balancing
Server side (corn)
First steps based on http://openfacts2.berlios.de/wikien/index.php/BerliosProject:FreeNX_-_Howto
- Download NX4U (http://sourceforge.net/projects/freenx.berlios/files/)
- untar to ~/NX4U
- edit NX4U/bin/nxloadconfig:
NX_DIR=$HOME/NX4U
- edit etc/node.conf:
ENABLE_USERMODE_AUTHENTICATION="1" ENABLE_PASSDB_AUTHENTICATION="0" ENABLE_SSH_AUTHENTICATION="0" COMMAND_MD5SUM="md5sum"
The last line is the most important one; it causes nxserver to fail without any useful messages. Hints found in: http://mail.kde.org/pipermail/freenx-knx/2012-March/009541.html
- install libXpm libraries:
corn is a 64 bit system but nx requires the 32 bit version of this library. Download libxpm4_3.5.10-1_i386.deb from: http://packages.ubuntu.com/de/raring/i386/libxpm4/download
and copy (with Midnight Commander - can open deb files) CONTENTS/usr/lib/i386-linux-gnu/*.* to NX4U/lib
Links
- http://openfacts2.berlios.de/wikien/index.php/BerliosProject:FreeNX_-_Howto
- http://openfacts2.berlios.de/wikien/index.php/BerliosProject:FreeNX_-_FAQ/Server
- http://blog.felipe-alfaro.com/2009/01/18/freenx-usermode-authentication-and-mac-os-x/
- http://mail.kde.org/pipermail/freenx-knx/2008-August/007324.html
- http://www.rrzn.uni-hannover.de/anl-nx-client.html
- http://www.rrzn.uni-hannover.de/anl-nx-linserv.html
- http://www-flc.desy.de/flc/flcwiki/J%C3%B6rgenSamson/NXClientUsermode
- http://mail.kde.org/pipermail/freenx-knx/2012-March/009541.html
- http://wiki.centos.org/HowTos/FreeNX