Creating a (low) fat Client environment for LTSP

For more detailed instructions please look here: http://www.nubae.com/ltsp-linux-terminal-server-project-netbooted-fat-client-for-ubuntu-hardy-and-intrepid

LTSP stands for the Linux Terminal Server Project and is about the coolest and most cost effective technology out there. I've been fortunate and privileged enough to be working with this technology in schools and businesses. Generally LTSP reuses older hardware that runs as a terminal connected to a powerful server. In this way, older penitum and pentium 2 machines can run at practically the same speed as the server feeding them. This is because the processor and ram of the server are actually being used, with only the screen, keyboard and mouse being used on the terminal end. This is great for older machines and dedicated thin clients (which can cost as little as 50 euros), but for newer intel core 2 duo machines, running them as thin clients would be a waste. That said, the benefits of having a centralised location for the computer image and management of users is extremely helpful to an Administrator. This is where a low fat netbooted client comes in. Instead of running the programs on the server, the entire environment is run in the client, hence the term fat. This also relieves the server cpu and ram, as well as the bandwidth of the network slightly, and is ideal for multimedia systems that require Flash, Video, and Audio streaming. Installing the fat client is very easy and requires you downloading the script from here for Ubuntu Intrepid Ibex.

/usr/share/ltsp/plugins/ltsp-build-client/Ubuntu/030-fatclient

You then build your fat client by doing:

ltsp-build-client --chroot (name-of-chroot) --fatclient Ubuntu --highfat

Not the capital U in Ubuntu. The usage of --highfat is an extra option that builds a full multimedia sytstem and is quite resource intensive. A normal fat client has only the base educational games and programs, along with a basic internet suite. The --chroot (name-of-chroot) option is not required, it is only used if you already have a thin client environment under the default i386, which is under /opt/ltsp/i386, so name-of-chroot here would be something like fati386, which would correspond to the location /opt/ltsp/fati386/.

You can see an image here of the thin client in action:

Rate It! (Average 4.00, 1 votes)



32 Responses to Creating a (low) fat Client environment for LTSP

  1. October 10th, 2008 | david

    This is great, i hope it will become better everyday. Documenting the build process and other issues are very crucial to greater adoption. For example, what do u mean by the "name-of-chroot"?

    You know using linux generally assume some levels of familiarity, this assumption is what slows down greater adoption. Average person wants the simplest way to solve their problems, computer systems is suppose to help in solving problems, as the saying goes, "The best solution is the simplest solution".

    But all the same thanks to all of you contributing positively to the open source community!

  2. October 10th, 2008 | nubae

    Thanks David,
    I realise its not so easy, especially for users coming from a Windows background, and I agree we need to make it as easy as possible for them to understand and even enjoy the Linux experience. I've added a bit more explanation to the blog entry and also set up a separate section here, which includes a version of the plugin for both Intrepid and Hardy:

    http://nubae.com/ltsp-linux-terminal-server-project-netbooted-fat-client-for-ubuntu-hardy-and-intrepid

    If you notice anything else that seems confusing, please let me know.

  3. October 25th, 2008 | Dale

    Nubae,

    I installed your fat client for hardy on intrepid. How does one fix this?

    When the "client" boot, how does it choose fat or thin for it's environment?

  4. October 25th, 2008 | Nubae

    Hi Dale,
    Thanks for the heads up. I forgot to add the sections on having NFS installed on the server and modifying the /etc/ltsp/dhcpd.conf file to include fat client loading. It should be all up to date now, but do let me know if there is something else I have missed.

    Kind Regards

  5. November 12th, 2008 | Tom Wolfe

    I'm getting the following error when trying to run your script:

    W: GPG error: http://packages.medibuntu.org intrepid Release: The following signatures couldn't be verified because the
    public key is not available: NO_PUBKEY 2EBC26B60C5A2783

    any suggestions on how to fix it? I tried a couple of things but I'm not familiar enough with the plugin concept to come up with a solution.
    Tom

  6. November 12th, 2008 | Tom Wolfe

    ... that's with Intrepid, fresh install

  7. November 13th, 2008 | nubae

    Actually it should run fine without the need for that as I set the script to force --accept-unsigned-packages, but try and do that at build time: ltsp-build-client --fatclient Ubuntu --highfat --chroot fati386 --accept-unsigned-packages

    Kind Regards

  8. November 14th, 2008 | Tom Wolfe

    Thanks, actually I added a line to your script after the following line:
    echo "deb http://packages.medibuntu.org/ intrepid free non-free" >> /opt/ltsp/$CHROOT/etc/apt/sources.list
    ####added this
    chroot /opt/ltsp/$CHROOT apt-get --yes --force-yes install medibuntu-keyring

    ... then things ran smoothly until it errored out on installing libflashplugin:

    Package libflashsupport is not available, but is referred to by another package.
    This may mean that the package is missing, has been obsoleted, or
    is only available from another source
    However the following packages replace it:
    flashplugin-nonfree-extrasound
    E: Package libflashsupport has no installation candidate
    error: LTSP client installation ended abnormally

    .... so I removed the libflashplugin from your script and changed:
    flashplugin-nonfree
    to this:
    flashplugin-nonfree-extrasound

    and am now patiently waiting for the chroot to build. Holy it takes a long time. Thanks for the suggestion and the script, I'm anxious to see how it works when all's said and done.

  9. November 14th, 2008 | Tom Wolfe

    .... sorry if I'm spamming your website here :) but I figured out how to make ltsp-build-client work WAY faster.... add the mirror flag to point to a faster mirror, e.g.

    ltsp-build-client --chroot fati386 --fatclient Ubuntu --highfat --mirror http://mirror.its.uidaho.edu/pub/ubuntu/

    ... now things are cooking!

  10. November 15th, 2008 | Djoko Srs

    Hi...
    I have Core2Duo server with Pentium-3 733 - 900 clients (256 MB RAM each client) and now running with Ubuntu 8.10 LTSP.
    With these clients, can I apply the FAT Client on my network ? Or my computer-machine doesn't enough to run FAT-Client?
    Thanks for your attention

  11. November 15th, 2008 | nubae

    @tom:
    Nice find with the keyring and mirror, I'll apply that to the script. The latest version, uploaded a couple days ago, fixes some issues like libflashsupport no longer existing in the ubuntu repositories. Let me know how you get on, and any ideas for improvements.

    @djoko
    Fat client will run fine on those machines. I believe 600mhz is sort of the limit... but of course, the more ram and cpu the better.

    Kind Regards

  12. November 17th, 2008 | Djoko Srs

    I have install fat client beside my LTSP (Intrepid) on one server, but when I try to login from client side, it's not work and this is the message :

    Your home directory is listed as :"/home/$userdir/" but it doesn't appear to exist. Do you want to log in with the / (root) directory as yourhome directory? It is unlikely anything will work unless you use a failsafe session

    I've edited your script to reduce the program installed :
    ....
    WORKSTATION_PACKS="$WORKSTATION_PACKS ubuntu-desktop human-theme ubuntu-artwork language-pack-gnome-en firefox ubufox avahi-daemon gnome-mount flashplugin-nonfree swfdec-mozilla pidgin"
    if [ $HIGHFAT == True ] ; then
    echo "deb http://packages.medibuntu.org/ intrepid free non-free" >> /opt/ltsp/$CHROOT/etc/apt/sources.list
    chroot /opt/ltsp/$CHROOT apt-get update
    WORKSTATION_PACKS="$WORKSTATION_PACKS ubuntu-restricted-extras vlc xchat xsane"
    fi
    ...

    Do I have a mistake, and how to solve that..?
    Many thanks for your attention.

  13. November 17th, 2008 | nubae

    Please follow the instructions on how to create a shared nfs home here:- http://www.nubae.com/ltsp-linux-terminal-server-project-netbooted-fat-client-for-ubuntu-hardy-and-intrepid

    I'll link that from this page too, since many users seem to come here first.

    Kind Regards

  14. November 26th, 2008 | Iurie

    Hi all,

    After creating fat clients on intrepid with Nubae's script, my clients cannot connect to Internet. Who can help me?

  15. November 26th, 2008 | Iurie

    Solved with iptables command!

  16. December 5th, 2008 | Pablo

    Nubae, thanks for the great script!! :D

    like Djoko, I installed the fat client on Intrepid and had issues with NFS mounting on the client. However, for me, it wasn't the server. I had to add the server's IP to /opt/ltsp/fati386/etc/nfsmounts.sh and then rebuild the image.

    However, I'm now having a problem with sound. I've tested on 3 different clients and none have sound working. I go to System -> Preferences -> Sound and run the test but get:

    ...
    audiotestsrc wave=sine freq=512 ! audioconvert ! audioresample ! gconfaudiosink: Failed to connect: Access denied
    ...

    Any ideas ? I'm soo close! :)
    Thanx

  17. December 6th, 2008 | rEINER scHMID

    For highfat I would sugguest to add the packages
    mozilla-plugin-vlc
    vlc-plugin-pulse

    Thanks for your work

    Reiner

  18. December 9th, 2008 | nubae

    Hi Pablo,
    It sounds to me like the script did not grab the server IP variable and so couldn't set up pulse audio. Try adding
    default_driver=pulse
    default_server=127.0.0.1

    to /etc/pulse/client.conf. The script assumes eth0 is the internal ltsp ethernet device.

    @Reiner
    done...

    Good luck

  19. December 22nd, 2008 | Dedi Eko

    I got this error (these are the last few lines):
    ...
    Can not write log, openpty() failed (/dev/pts not mounted?)
    Setting up xubuntu-artwork-usplash (0.20) ...
    update-initramfs: deferring update (trigger activated)

    Processing triggers for initramfs-tools ...
    Removing any system startup links for /etc/init.d/kde-guidance ...
    update-rc.d: /etc/init.d/kde-guidance: file does not exist
    error: LTSP client installation ended abnormally

    Obviously I've missed something, always ended here.
    Any help would be appreciated

  20. December 26th, 2008 | nubae

    @Dedi

    The conflicting lines have been taken out of the script. Please download again, and it should be fine.

  21. January 27th, 2009 | Shrenik

    This solution also assumes that there are 2 NICs in the system, isn't it?

    At least this bit does:

    ### Discover server ips, split and show eth1 only
    IPS=$(ip -o -f inet addr show | sed -e 's,.* \(.*\)/.*,\1,' | grep -v '^127')
    set -- $IPS
    eth0=$1
    shift
    eth1=$@
    ### Add nfs startup script for lts.conf
    cat

  22. February 16th, 2009 | Reiner Schmid

    Hello David,

    I tried your script with a fresh intrepid.

    At first I had no sound, but I noticed that in (chroot)/etc/group there was no user filled in the line pulse-access. So I added one. Sound works now.

    The next problem was watching youtube-videos. The swfdec-mozilla-package stopped every flash video (also flash online games) . After I had removed this package in (chroot), all was fine.

    Reiner

  23. April 23rd, 2009 | Iurie

    user@user:~$ sudo ltsp-build-client --fatclient Ubuntu --chroot li386 --accept-unsigned-packages
    NOTE: adding default dist and components to security mirror:
    http://security.ubuntu.com//ubuntu jaunty main restricted universe multiverse
    chmod: failed to get attributes of `Ubuntu': No such file or directory
    error: LTSP client installation ended abnormally

    How to make to run this script in Jaunty?

  24. May 5th, 2009 | IURIE

    IURIE, did you figure this out? I successfully built a fat client in 8.10 after making the plugin edits in these posts, but recently upgraded the server to 9.04 thinking I would be able to easily re-build my fat client and I am having the same issues you are not, get error:
    chmod: failed to get attributes of 'Ubuntu': No such file or directory
    The entire office is down (they were down already from other stuff, so I figured it would be a good time to upgrade) so I need help asap! Thanks.

  25. May 11th, 2009 | bezt

    When I run the scipt, it seem to be download some plugin, but my computer is't connect the internet,
    can anyone tell me how to build this aplication manualy?
    Sory for my bad English, and thanks

  26. May 16th, 2009 | KaLLE rOSENBAUM

    Iurie, i had this problem also, and it turned out that 030-fatclient used a variable $TMP that interfered with other ltsp-build-scripts that also used this variable name. The solution was to rename all occurrences of TMP with, say TMP1, in 030-fatclient. Hope this helps.

  27. May 20th, 2009 | nubae

    If you send me the updated script, I'll upload it here for others to download. I have had no time to use or test the fat client script under Jaunty.

    regards,
    Nubae

  28. May 22nd, 2009 | Iurie

    KALLE ROSENBAUM, thank you.

    I builded the image, but now I have this message, like Djoko Srs and Pablo : "Your home directory is listed as :"/home/$userdir/" but it doesn't appear to exist. Do you want to log in with the / (root) directory as yourhome directory? It is unlikely anything will work unless you use a failsafe session."

    I have exported/created a shared nfs home directory (how Hubae suggest) but nothing changed. In /opt/ltsp/fati386/etc/nfsmounts.sh I have:
    # nfs starts before portmap so mounts fail, so we restart portmap here
    /etc/init.d/portmap restart
    mount -t nfs 192.168.0.1:/home /home

  29. May 29th, 2009 | Nader aeinehchi

    Hi

    When I am running the script on Ubuntu 8.04 either as

    ltsp-build-client --chroot /opt/ltsp/fati386/ --fatclient Ubuntu
    or
    ltsp-build-client --chroot fati386/ --fatclient Ubuntu

    I get
    /usr/sbin/ltsp-build-client: unrecognized option `--chroot'

    If I omit --chroot, then apt-get fails.

    What is wrong?

    Thanks

  30. June 5th, 2009 | Anthony

    Hi!

    Thanks alot for the setup!

    Just one question;

    Is it normal I get this:

    --------------------------------------------------------------
    Please enter the main admin user with root privileges!

    and then it doesn't do anything even if I type in stuff, press enter, periods enter, multiple enters and all..
    as if the read TMP doesn't get my return carriage that actually works all the time normally..

    Thank you!

  31. November 2nd, 2009 | rolf

    hi there, i applied the receipe from your webpage with Ubuntu 8.10 and LTSP5.
    first the script did not run, because there was some conflict with ubuntu-desktop.
    taking this out, everything goes well. the client image is created.
    the only problem seems to be that things are not running on the client.?

    any suggestions?

    rolf

  32. November 26th, 2009 | Ehren

    I am having the same problem as Anthony.

    The build hangs on

    "--------------------------------------------------------------
    Please enter the main admin user with root privileges"

    , when I attempt type a name it says the build has failed.

    I am attempting this on a x64 server and am using

    ltsp-build-client --chroot fati386 --fatclient Ubuntu --highfat

    Any help would be appreciated.

    Also does any one know how I can set this as the default image for all of my clients?

    Thanks

Leave a Reply

(will not be published)