Novell Home

Feisty/Ocean post install checklist

From Developer Community


This article covers LTSP post-installation of a Ubuntu system for integration with the miru directory server, the technical details are kept to a minimum and examples provided from the VMware demonstration system. Please do not replace with generic configuration or include historical references which are more suited to the Ubuntu or LTSP wiki.


This article is for Ubuntu 7.04 (Feisty Fawn).

Other versions:



Contents

X11 video memory

Thin clients or recycled machines often have little memory, it is therefore important to verify that X11 has detected the correct amount of video memory otherwise the system will reset.

[17179636.596000] Out of Memory: Killed process 3407 (Xorg).


BIOS reported size

First step is to check for video memory according to the BIOS, switch on the PC, press any key sequence necessary to see the initial startup messages, and watch for a relevant video memory line.


BIOS AGP aperture size

On certain motherboards the BIOS needs to be configured for what is termed the AGP aperture size. The size should always be set to less than or equal to the system memory size.


Xorg detected size

Starting up X11 with auto-server detection and view the log file /var/log/xorg.log should detail the detection results.

(II) I810(0): VESA BIOS detected
(II) I810(0): VESA VBE Version 3.0
(II) I810(0): VESA VBE Total Mem: 12288 kB
(II) I810(0): VESA VBE OEM: Intel(r)845G/845GL/845GE/845GV Graphics Chip Accelerated VGA BIOS
(II) I810(0): VESA VBE OEM Software Rev: 1.0
(II) I810(0): VESA VBE OEM Vendor: Intel Corporation
(II) I810(0): VESA VBE OEM Product: Intel(r)845G/845GL/845GE/845GV Graphics Controller
(II) I810(0): VESA VBE OEM Product Rev: Hardware Version 0.0
(II) I810(0): Integrated Graphics Chipset: Intel(R) 845G
(--) I810(0): Chipset: "845G"
(--) I810(0): Linear framebuffer at 0xE0000000
(--) I810(0): IO registers at addr 0xEC100000
(II) I810(0): 1 display pipe available.
(II) I810(0): detected 8060 kB stolen memory.
(WW) I810(0): Detected stolen memory (8000 kB) doesn't match what the BIOS reports (12288 kB)
(II) I810(0): Kernel reported 22016 total, 1 used
(II) I810(0): Checking Available AGP Memory: 88060 kB available (total 88064 kB, used 4 kB)
(--) I810(0): Pre-allocated VideoRAM: 8060 kByte
(==) I810(0): VideoRAM: 65536 kByte


Xorg forced size

In the above example the video memory is incorrectly set at 64MB, the following configuration will force the size to 8MB:

Section "Device"
    Identifier      "Intel Corporation 82865G Integrated Graphics Controller"
    Driver          "i810"
    BusID           "PCI:0:2:0"
    VideoRam        8192
EndSection

With LTSP this setting is in /opt/ltsp/i386/etc/lts.conf as follows:

X_VIDEO_RAM             = 8192

You can also specify the colour depth, i.e. bits per pixel, 1=monochrome, 4=16 colour, 8=256 colour, 15/16=high colour, 24=true colour.

X_COLOR_DEPTH           = 16


1280x1024 Resolution failure on flat panel

For 17-19" LCD panels 1280x1024 is the popular resolution however Xorg currently has issues determined realistic modelines to use, this requires explicit configuration of the horizontal and vertical refresh frequencies. In LTSP 4.2 this is possible as follows:

X_MODE_0                = 1280x1024
X_HORZSYNC              = 64
X_VERTREFRESH           = 60

In LTSP 5.0 the Xorg configuration is generated by dexconf which doesn't yet support using these variables, so it is recommended to create a separate xorg.conf in /etc/X11 and specify that in lts.conf instead of using variables.

XF86CONFIG_FILE        = "/etc/X11/XF86Config.1280x1024"

With an appropriate monitor section.

Section "Monitor"
        Identifier      "Monitor00"
        VendorName      "Unknown"
        ModelName       "Unknown"
        HorizSync       64
        VertRefresh     60
EndSection


Frame buffer mmap failure with NSC chipset

The xserver-xorg-video-nsc package version 2.8.2 has a feature causing the following error.

(...)
(II) Setting vga for screen 0.
(II) Loading sub module "vgahw"
(II) LoadModule: "vgahw"
(II) Loading /usr/lib/xorg/modules//libvgahw.so
(II) Module vgahw: vendor="X.Org Foundation"
compiled for 7.2.0, module version = 0.1.0
ABI class: X.Org Video Driver, version 1.1
(WW) System lacks support for changing MTRRs

Fatal server error:
xf86MapVidMem: Could not mmap framebuffer (0x00000000,0xfe280000) (Cannot allocate memory)

The monline blog suggests the following work around, Gutsy already has a newer version upstream.

cd /opt/ltsp/i386/tmp
wget 'http://archive.ubuntu.com/ubuntu/pool/main/x/xserver-xorg-video-nsc/xserver-xorg-video-nsc_2.8.1-0ubuntu1_i386.deb'
chroot /opt/ltsp/i386 /bin/bash
mount -t proc proc /proc
cd /tmp
dpkg --force-depends -r xserver-xorg-video-nsc
dpkg -i xserver-xorg-video-nsc_2.8.1-0ubuntu1_i386.deb
echo 'xserver-xorg-video-nsc hold' | dpkg --set-selections
umount /proc
exit


X11 backing store

For slow clients with sufficient memory it might be beneficial to configure a memory backing store for X11, this can reduce the network traffic and improve the user experience. With LTSP 4.2 a simple lts.conf configuration line is possbile.

X_DEVICE_OPTION_01      = BackingStore

For LTSP 5.0, MueKow the only available option is manually generating a xorg.conf configuration file with the option set in the video card device section.

Section "Device"
        Identifier "Card00"
        Driver     "nsc"
        Option   "BackingStore"
EndSection

For example, to reference in lts.conf.

XF86CONFIG_FILE        = "/etc/X11/XF86Config.1024x768"


X11 Speed Boost for really slow clients

For AMD Geode, VIA C3, and low clocked Eden, C7, and 486/Pentium machines you might find it necessary to disable some X11 modules matching a regular LTSP 4.2 installation to boost performance. Update /var/lib/dpkg/info/xserver-xorg.postinst, search for glx and remove all modules except "extmod", this is used to generate the xorg.conf configuration file on boot.

DEFAULT_MODULES='extmod'
if [ "$ARCH" = 'sparc' ]; then
  DEFAULT_MODULES="${DEFAULT_MODULES}, cfb, cfb32"
fi
auto_answer db_input "$(priority_ceil low)" xserver-xorg/config/modules "${DEFAULT_MODULES}" || true
db_go


CPU intensive screensavers

For an LTSP environment it is recommended to disable most screensavers, whilst its possible to drop to just screen blanking there are a few that are reasonably friendly. The following configuration file and script can be used to limit a clean install of Ubuntu:

# xscreensaver.whitelist
deco
fuzzyflakes
popsquares
#!/bin/sh
# move-screensavers.sh

XSCREENSAVER_ROOT=/usr/lib/xscreensaver
WHITELIST=xscreensaver.whitelist

mkdir ${XSCREENSAVER_ROOT}/disabled
mv ${XSCREENSAVER_ROOT}/* ${XSCREENSAVER_ROOT}/disabled

for theme in `grep -v "^#" ${WHITELIST}`
do
        mv ${XSCREENSAVER_ROOT}/disabled/${theme} ${XSCREENSAVER_ROOT}
done


Local X11 server

A little extra memory and CPU time can be saved by disabling the local X11 server on the LTSP server. Add the option --no-console to the gdm startup file /etc/init.d/gdm or apply the following patch:

--- gdm 2006-10-07 02:49:49.000000000 +0800
+++ gdm.orig    2006-10-07 02:49:40.000000000 +0800
@@ -56,7 +56,7 @@
                        DO_NOT_SWITCH_VT=yes /etc/init.d/usplash start
                fi
                log_begin_msg "Starting GNOME Display Manager..."
-               start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --name gdm $SSD_ARG -- $CONFIG_FILE >/dev/null 2>&1 || log_end_msg 1
+               start-stop-daemon --start --quiet --oknodo --pidfile $PIDFILE --name gdm $SSD_ARG -- --no-console $CONFIG_FILE >/dev/null 2>&1 || log_end_msg 1
                log_end_msg 0
        fi
   ;;


Wacom Tablet

Input devices are managed on the LTSP client. To enable full tablet support for GIMP and Inkskape follow the Ubuntu Wiki instructions on installing a USB Wacom tablet. It is highly likely that other tablet manufacturers such as Genius, and the many Chinese micro-tablets will only support basic mouse functionality, i.e. no pressure sensitivity.

To update /etc/X11/xorg.conf you have to modify /usr/bin/dexconf which generates the configuration file on boot unless one is specified in /etc/lts.conf. Simply add the input/ subdirectory to each Device line as per the wiki.

--- dexconf.moo 2006-09-30 19:08:24.000000000 +0800
+++ dexconf     2006-09-30 19:08:37.000000000 +0800
@@ -308,7 +308,7 @@
 Section "InputDevice"
   Driver        "wacom"
   Identifier    "stylus"
-  Option        "Device"        "/dev/wacom"          # Change to
+  Option        "Device"        "/dev/input/wacom"    # Change to
                                                       # /dev/input/event
                                                       # for USB
   Option        "Type"          "stylus"
@@ -318,7 +318,7 @@
 Section "InputDevice"
   Driver        "wacom"
   Identifier    "eraser"
-  Option        "Device"        "/dev/wacom"          # Change to
+  Option        "Device"        "/dev/input/wacom"    # Change to
                                                       # /dev/input/event
                                                       # for USB
   Option        "Type"          "eraser"
@@ -328,7 +328,7 @@
 Section "InputDevice"
   Driver        "wacom"
   Identifier    "cursor"
-  Option        "Device"        "/dev/wacom"          # Change to
+  Option        "Device"        "/dev/input/wacom"    # Change to
                                                       # /dev/input/event
                                                       # for USB
   Option        "Type"          "cursor"


Local Media: Media Card Readers

Local media devices are implemented used LTSPFS, they need to be enabled on the client with lts.conf:

LOCALDEV = True

On the LTSP server a LTSPFS client needs to be installed:

$ sudo apt-get install ltspfs

Then add the users to the fuse group, for example with /etc/group

fuse:x:115:steve-o,ying,edgar

Restart both the server and the client and any new media will appear directly on the users desktop (after a few seconds).

Ubuntu desktop with media inserted into external USB media card reader on a thin client terminal
Enlarge
Ubuntu desktop with media inserted into external USB media card reader on a thin client terminal

With external media card readers remove the entire device from its USB port then the card from the reader, otherwise hotplug events will not occur. There is no method to umount a device as the underlying system will automagically umount after a period of inactivity.


Local Apps

Currently unsupported as of Ubuntu Feisty 7.04. Planned for Gutsy/+1.


Audio

Best described as 'work in progress' due to multiple API standards: OSS, ALSA, ESD, aRts, NASD, Jack, and PulseAudio, and direct access to the audio device using /dev/dsp and /dev/mixer. For LTSP try whether ESD or NASD works for you. I found that RealPlayer only works with NASD and generates a bus error on ESD, Skype fails to detect any audio devices with either configuration. PulseAudio is now the recommended default as it is the most flexible for such network configurations, however it isn't 100% suitable enough for the regular Ubuntu desktop.


NASD

Update /opt/ltsp/i386/etc/lts.conf to specify NASD:

SOUND = True
SOUND_DAEMON = nasd

Install the audiooss wrapper on the LTSP server:

$ sudio apt-get install audiooss

I found that I needed to force re-install of NASD on the client:

$ sudo chroot /opt/ltsp/i386 apt-get remove nas
$ sudo chroot /opt/ltsp/i386 apt-get install nas libaudio2

Then reboot the client and start any application with the audiooss wrapper, e.g.

$ audiooss realplayer

With multiple sound cards some modification to /opt/ltsp/i386/etc/nas/nasd.conf will be required.


ESD

Update /opt/ltsp/i386/etc/lts.conf to specify ESD:

SOUND = True
SOUND_DAEMON = esd

All ESD friendly applications should work immediately, including the system login audio. For applications that access /dev/dsp directly there is a wrapper:

# esddsp program

However this fails with both Skype and Real Player.


Pulse Audio

The new recommended default audio system for LTSP, in lts.conf update to enable sound as follows.

SOUND = TRUE
SOUND_DAEMON = pulse

For dsp based applications wrappers exist similar to other audio frameworks:

# padsp program


Read the Feisty/HOWTO:_PulseAudio for further details.


Real Player

For Real Player edit /usr/bin/realplayer and comment out the following line:

# See if LD_PRELOAD contains any of the sound servers libs. If so, remove them.
#LD_PRELOAD=`echo $LD_PRELOAD | sed -e 's/\([^:]*libesd[^:]*\|[^:]*libartsp^:]*\);\?//g'`
#export LD_PRELOAD


Skype

Audio conversations possible but not great due to bad recording quality, ensure users are members of the pulse-rt group on the server. In the future it may be possible to run Skype directly on the terminal hardware for better audio quality.


Global Gnome Configuration

The Gconf tool allows setting of global defaults or mandatory values, alternatively use gconf-editor for a GUI similar to regedit on Windows. For complication configurations you might find it easier to configure a setup using the System Administration tools and investigate which settings were created in ~/.gconf/.

Gconf graphic interface to the Gnome configuration system, run with super-user rights will edit the system defaults or mandatory settings
Enlarge
Gconf graphic interface to the Gnome configuration system, run with super-user rights will edit the system defaults or mandatory settings


Examples of useful settings include:

  • Network proxy: /system/proxy & /system/http_proxy
  • UI fonts: /desktop/gnome/interface
  • Anti-aliasing: /desktop/gnome/font_rendering
  • Wallpaper: /desktop/gnome/background
  • Icon preview: /apps/nautilus/preferences
  • Sounds: /desktop/gnome/sound
  • Remote access (VNC): /desktop/gnome/remote_access


Removing the default autostart mixer applet and update notifier requries a different approach, create the following files before creating the user accounts:

/etc/skel/.config/autostart/update-notifier.desktop:

[Desktop Entry]
Name=No name
Encoding=UTF-8
Version=1.0
Exec=update-notifier
X-GNOME-Autostart-enabled=false

/etc/skel/.config/autostart/gnome-power-manager.desktop:

[Desktop Entry]
Name=No name
Encoding=UTF-8
Version=1.0
Exec=gnome-power-manager
X-GNOME-Autostart-enabled=false

For kiosk style lockdown there is a Lockdown Editor called Pessulus that can be installed via Synaptic, however only suitable for certain deployments.

Pessulus allows easy access to system lockdown options
Enlarge
Pessulus allows easy access to system lockdown options


Advanced Search

Similar to Google Desktop Search is Gnome Beagle, however this runs an extra task per user requiring more system resources. Install via Synaptic or on the command line:

$ sudo apt-get install beagle

In order to make Beagle start indexing your home directory, you need to disable then re-enable indexing in the Beagle preferences dialog (System->Preferences->Search & Indexing->Indexing tab->Uncheck then re-check the box next to Index my home directory.

Beagle replaces the default search with a live multi-format search with preview
Enlarge
Beagle replaces the default search with a live multi-format search with preview

By default Beagle ships with debugging enabled, this can create 1GB log files in every users home directory. To disable this edit /usr/bin/beagled and update line 104:

#    CMDLINE="$BEAGLE_MONO_RUNTIME --debug $MONO_EXTRA_ARGS $TARGET_EXE $BEAGLED_ARGS $FGBG_ARG"
    CMDLINE="$BEAGLE_MONO_RUNTIME $MONO_EXTRA_ARGS $TARGET_EXE $BEAGLED_ARGS $FGBG_ARG"

Further details are logged in launchpad: bug 64807, fixed in Feisty.

For shared resources you can setup static indexes, periodically rebuilding on a crontab. The crontab is already installed in Ubuntu and jobs for system documentation and applications are already setup for daily checking. To create a new one, e.g. for /miru, create a new file, and adjust the CRAWL_PATHS and other parameters as necessary. As this is NFS I enable the caching feature.

/etc/beagle/crawl-nfs:

CRAWL_ENABLED="yes"
CRAWL_INDEX_NAME="nfs"
CRAWL_PATHS="/miru"
#CRAWL_ALLOW_PATTERNS="*.xml,*.html,*.docbook"
CRAWL_DENY_PATTERNS=".beagle*,.nfs*,*.exe"
CRAWL_RECURSIVE="yes"
CRAWL_DISABLE_FILTERING="no"
CRAWL_CACHE_TEXT="yes"

Next test that the configuration works correctly and update CRAWL_DENY_PATTERNS to remove any unneeded files or ones that break Beagle (*,exe in this case). The cron job does not log to a file so the commands are typed on the command line.

$ mkdir /tmp/.beagle
$ sudo chown beagleindex /tmp/.beagle
$ sudo su -s /bin/bash beagleindex -c "MONO_SHARED_DIR=/tmp/.beagle \
                       /usr/sbin/beagle-build-index \
                       --target /var/cache/beagle/indexes/nfs \
                       --recursive \
                       --enable-text-cache \
                       --deny-pattern \".beagle*,.nfs*,*.exe\" /miru"

To start searching you need to restart the Beagle daemon:

$ pkill beagle
$ beagle


Boot/NFS performance

Update the initial ram disk image by editing /etc/initramfs-tools-pxe/initramfs.conf and set the following to reduce disk image by 50%. However module loading of additional devices might end up slower therefore test in each configuration for the best speed.

MODULES=netboot

Second step is to update the /etc/fstab mounting options to match those from the ram disk.

# NFS version 3 support with TCP
/dev/nfs        /               nfs     defaults,noatime,mand,vers=3,rsize=32768,wsize=32768,hard,proto=tcp,timeo=600,retrans=10  0       0

# NFS version 3 support with UDP only
/dev/nfs        /               nfs     defaults,noatime,mand,vers=3,rsize=32768,wsize=32768,hard,timeo=4,retrans=10  0       0

# NFS version 2
/dev/nfs        /               nfs     defaults,noatime,mand,rsize=8192,wsize=8192,hard,timeo=4,retrans=10  0       0


Extra services

Some services are specific to a single machine LTSP server or for a Ubuntu desktop not a thin client and they can be disabled with the "Services settings" administration applet.

  • Bluetooth device management (bluetooth)
  • Disk client (nbd-client)
  • Disk server (nbd-server) - NBD swap is handled separately
  • Network service (inetd) - only required for TFTP
  • Folder sharing service (nfs-kernel-server)
  • Folder sharing service (tftpd-hpa)
  • Hotkeys management (hotkey-setup) - For laptops or media keyboards
  • Printer service (hplip) - If you have no HP printer or HP scanner direct attached
  • Speech synthesis support (festival) - Unless a required service


Remote desktop

The remote desktop implementation in Gnome is called Vino and currently fails to work on remote X11 desktops, although the underlying technology does albeit not very speedy. The alternative is to therefore install a VNC server on the thin client, the most efficient version is a module within the X11 server itself.

$ sudo chroot /opt/ltsp/i386 apt-get install vnc4server

As the configuration is regenerated each boot you will have to modify the source configuration to allow for VNC: /var/lib/dpkg/info/xserver-xorg.postinst, search for glx and add vnc to the answer line.

DEFAULT_MODULES='i2c, bitmap, ddc, dri, extmod, freetype, glx, int10, vbe, vnc'
if [ "$ARCH" = 'sparc' ]; then
  DEFAULT_MODULES="${DEFAULT_MODULES}, cfb, cfb32"
fi
auto_answer db_input "$(priority_ceil low)" xserver-xorg/config/modules "${DEFAULT_MODULES}" || true
db_go


Next update /opt/ltsp/i386/usr/bin/dexconf to allow remote access with no password, refer to the RealVNC documentation for alternative options. Search for the line Screen and add the SecurityTypes option listed below.

Section "Screen"
        Identifier      "Default Screen"
        Device          "$DEVICE_IDENTIFIER"
        Monitor         "$MONITOR_IDENTIFIER"
        DefaultDepth    $DISPLAY_DEFAULT_DEPTH
        Option          "SecurityTypes" "None"
SECTION

To connect to the desktop install a VNC viewer program and specify the terminal name or IP address and window :6 or port 5906.

$ sudo apt-get install xvnc4viewer
$ xvnc4viewer terminal123:6


Remote syslog

To help diagnose problems with errant terminals you can configure the LTSP server to accept remote syslog events and the terminals to send syslog messages to the server instead of logging locally to MFS. On the server update /etc/default/syslogd

# For remote UDP logging use SYSLOGD="-r"
#
#SYSLOGD=""
SYSLOGD="-r"

In the lts.conf file add the following to the top:

## Network syslog
SYSLOG_HOST            = server


X11 font server (XFS)

To speed up client startup times an XFS server can be started which can process the X11 font configuration on behalf of all connecting clients. Install XFS on the server:

$ sudo apt-get install xfs

In the lts.conf file add the following to the top:

## X11 font server
USE_XFS                 = True

By default xfs only create a local unix socket, for LTSP usage TCP connectivity needs to be enabled. Edit /etc/X11/fs/config and comment the following line.

# turn off TCP port listening (Unix domain connections are still permitted)
#no-listen = tcp


Network Swap Server

The default Ubuntu LTSP configuration does not configure the network block server (NBD) to terminate on time out as recommended by the developers, the configuration is set for Edubuntu and Debian Education users though. Also if frequent users of Mozilla Firefox and Thunderbird will need to increase the swap space to cope with webpages and email containing many pictures. Create the following configuration file /etc/ltsp/nbdswap.conf

NBD_SERVER_OPTS="-a 3600"
SWAP="256"

You can also specify an alternative location to /tmp with SWAPDIR. An alternative if swap is rarely used (>= 128MB thin clients) is to use NBD's copy-on-write feature, replace /usr/sbin/nbdswap with the following.

#!/bin/sh

# generates swap space on-demand (so slow) but allows faster start

SIZE=32

if [ -f /etc/ltsp/nbdswapd.conf ]; then
    . /etc/ltsp/nbdswapd.conf
fi

SWAP=/var/tmp/swap
if [ ! -f $SWAP ]; then
        dd if=/dev/zero of=$SWAP bs=1024k count=$SIZE 2> /dev/null
        /sbin/mkswap $SWAP
fi

/bin/nbd-server 0 $SWAP -c $NBD_SERVER_OPTS


High Performance SSH

LTSP 5 tunnels X11 connections through SSH for security, LTSP 4.2 uses regular X11 networking. However for very slow hardware even using the blowfish encryption algorithm you only achieve 88% CPU efficiency to a un-encrypted channel and that can be noticeable.

You can download the OpenSSH source and apply the OpenSSH-4.3p2-hpn12 v9 patch, replacing ssh in the LTSP chroot and sshd on the server with the resultant binaries.

$ cd /tmp
$ wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssh/openssh_4.3p2.orig.tar.gz
$ wget http://www.psc.edu/networking/projects/hpn-ssh/openssh-4.3p2-hpn12.diff.gz
$ tar zxf openssh_4.3p2.orig.tar.gz
$ cd openssh_4.3p2
$ zcat ../openssh-4.3p2-hpn12.diff.gz | patch
$ ./configure --prefix=/usr --sysconfdir=/etc/ssh --libexecdir=/usr/lib/openssh \
    --mandir=/usr/share/man --with-tcp-wrappers --with-xauth=/usr/bin/X11/xauth \
    --with-default-path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11:/usr/games \
    --with-superuser-path=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/bin/X11 \
    --with-pam --with-4in6 --with-privsep-path=/var/run/sshd --without-rand-helper \
    --with-libedit --with-kerberos5=/usr --with-selinux
$ make
$ sudo cp ssh /opt/ltsp/i386/usr/bin
$ sudo cp sshd /usr/sbin

Update /opt/ltsp/i386/usr/sbin/ldm to enable the new NONE cipher for the client.

ssh_opts = ['-v',
           '-X',
           '-oNoneSwitch=yes', '-oNoneEnabled=yes',
           '-c', 'blowfish-cbc,aes128-cbc,3des-cbc']

For the server append the following to /etc/ssh/sshd_config and restart.

NoneEnabled=yes


Alternative #1: Faster Encryption

An alternative is to enable the arcfour cipher instead of the blowfish algorithm which as a weaker encryption is faster.

ssh_opts = ['-v',
           '-X',
           '-c', 'arcfour,blowfish-cbc,aes128-cbc,3des-cbc']


Alternative #2: Direct X11

Ubuntu Gutsy re-introduces the capability of using direct X11 connectivity, i.e. not tunnelling through ssh, simply patch /opt/ltsp/i386/usr/sbin/ldm

--- ldm-original        2007-07-11 17:21:41.000000000 +0800
+++ ldm 2007-07-11 17:55:10.000000000 +0800
@@ -34,6 +34,7 @@
         self.vt = vt
         self.display = display
         self.server = get_config('SERVER')
+       self.directx = get_config_bool('LDM_DIRECTX')
         self.use_xfs = get_config_bool('USE_XFS')
         self.use_sound = get_config_bool('SOUND')
         self.use_localdev = get_config_bool('LOCALDEV')
@@ -107,9 +108,15 @@
             os.environ['SSH_ASKPASS'] = '/usr/lib/ltsp/ldm-askpass'
 
             ssh_opts = ['-v',
-                       '-X',
                        '-c', 'blowfish-cbc,aes128-cbc,3des-cbc']
 
+           if self.directx:
+               directx_cmd='DISPLAY='+self.ip+self.display
+           else:
+               directx_opts=['-X']
+               ssh_opts.extend(directx_opts)
+               directx_cmd=
+
             if self.override_port:
                 ssh_extra_port=['-p', self.override_port]
                 ssh_opts.extend(ssh_extra_port)
@@ -186,6 +193,7 @@
                                   '-c',
                                   " ".join( ['\,
                                     'env',
+                                       directx_cmd,
                                                                        lang_command,
                                     'LTSP_CLIENT="%s"' % (socket.gethostname()),
                                     ] + sound_cmd + [

Then add LDM_DIRECTX to your lts.conf

LDM_DIRECTX             = True

Novell® Making IT Work As One

© 2009 Novell, Inc. All Rights Reserved.