Nx

From Linuxintro
Revision as of 16:15, 8 January 2012 by imported>ThorstenStaerk (→‎TroubleShooting)

NX aims at providing stateful desktop sessions, similar to xdmcp, but with sound and requiring much less bandwidth. One NX implementation is FreeNX.

Install NX as an application

As a first step, create a connection from your local computer to your local computer, just to make sure it works:

rpm -ivh nx*.rpm
  • Start NX as root:
nxserver --start
  • Verify as user root that the NX server is active
nxserver --status
  • Connect to the NX server
nxclient --wizard

Continue as advised.

Now, to connect from a remote host, open the 500# ports in your target host's firewall. If you do not know how to do this, you can also shut down the firewall.

Install NX as display manager

Maybe you have a very old computer and want to make it a thin client to a faster one (the faster one acting as terminal server). Then you want the old computer to display the NX client program right after startup, without a user having to log in. So you want Nx to be your display manager. Here are some changes I did to /etc/init.d/xdm to make this happen:

case "$1" in
    start)
        X &
        export DISPLAY=:0
        /usr/NX/bin/nxclient
        while true; do sleep 9; done

Tweaking NX

Almost everything is very fast and low-latency with NX. However, Window resizing effects are slow. Switch them off, e.g. in KDE using kpersonalizer:

kpersonalizer -> chose Next till you come to the Eyecandy-O-Meter -> Show details -> Window Moving/Resizing Effects

KDE 4

In order to run KDE 4 in an NX session, you may need to change the call startkde to startkde4 in /usr/NX/etc/node.cfg and /usr/NX/scripts/setup/nxnode. This is the case if your KDE is started with the command startkde4.

TroubleShooting

To get logging output to /var/log/messages, edit /usr/NX/etc/node.cfg. Set

SessionLogLevel = "6"

and you can read NX' log from /var/log/messages. Let's look at this one:

Jan  8 17:07:18 mars NXNODE-3.2.0-11[30374]: ERROR: run command: process: 30461 died because of signal: 9 Logger::log nxnode 3844
Jan  8 17:07:18 mars NXNODE-3.2.0-11[30480]: Directory '/home/tstaerk/.nx/C-mars-1019-7C3118AB902BD0DFE9CEC4AC7631B407' renamed into '/home/user/.nx/F-C-mars-1019-7C3118AB902BD0DFE9CEC4AC7631B407' for further investigation Logger::log nxnode 6215

Now you cd to /home/user/.nx/F-C-mars-1019-7C3118AB902BD0DFE9CEC4AC7631B407 and look at the log files.

wrong colors

Sometimes you see wrong colors in your NxClient like this: Snapshot-wrong-colors.png In this case, disable compression.

Established display connection

If you NX connection fails after the message "Established display connection", it may be the X Font Server. Start it

/etc/init.d/xfs start

not available

If you get an error message that NX is not available or has been disabled, re-install it:

/usr/NX/bin/nxserver --uninstall
/usr/NX/bin/nxserver --install

maximum session number exceeded

List your user sessions with

nxkill --list

Then kill them like this:

# ps -A | grep -i nx
 3435 ?        00:00:00 nxserver
 3477 ?        00:00:00 nxssh
 3481 ?        00:00:00 nxnode
 3576 ?        00:00:03 nxagent
 3579 ?        00:00:00 nxserver
 3586 ?        00:00:00 nxssh
 3594 ?        00:00:00 nxnode
28689 ?        00:00:00 nxserver
28732 ?        00:00:00 nxssh
28737 ?        00:00:00 nxnode
28830 ?        00:25:54 nxagent
28833 ?        00:00:00 nxserver
28838 ?        00:02:01 nxssh
28848 ?        00:00:00 nxnode
# nxkill --kill --pid 28830

no sessions are active

enable users

If you cannot log in to the NX server and get an error message like

maximum session number exceeded

AND

nxkill --list 

shows you there are no active user sessions, this can be the case because your user is not enabled to log in. To find out if your user is enabled to log in, use

nxserver --userlist

You will be able to log in with all users that are shown then.

Re-install NX

If no sessions are shown, you will have to re-install NX:

/usr/NX/bin/nxserver --uninstall
/usr/NX/bin/nxserver --install

See also