LTSP past and future

For those of you not yet familiar with LTSP, it’s the Linux Terminal Server Project which goal is to transform a regular workstation into a terminal server that can be used by thin clients. Thin clients are either old computers recycled as thin clients or specialized minimal computers (usually disk less and without moving parts) that are used to boot off the network.

Thin clients evolving

Until now, LTSP was mainly used to do something of these good old P2s unused in the back of the computer lab but things are gently starting to change. Even if you can still use it with old computers running everything on the server and so not using much CPU on the thin clients we’re now seeing way more powerful thin clients appearing (usually Atom-based) where it’d be a waste just to use them as regular all-server-side thin clients.


1520-PXE from Diskless Workstation

Localapps are finally there

Starting with Jaunty’s LTSP one now has the possibility to choose which application will run on the server and which will run locally.

For these of you not living all day in LTSP’s world, our issue was that these thin clients just weren’t using their CPU, everything running on the server. In order to decrease the load on the servers and use the thin clients a bit more, we got the idea of running some of the softwares locally, showing them just like regular application (you usually can’t tell which one are remote and which one are local). They can access the same files and settings as their remote equivalent could, making them from a user point of view almost identical to traditional remote applications (just a bit faster).

This is achieved using LTSP’s localapps and a bit of XDG magic. Basically you can now install firefox in your LTSP chroot, set LOCAL_APPS_MENU to True in your lts.conf and here you go with your usual firefox running locally on your thin client. The XDG magic takes care of adding the application in the menu if this one isn’t installed on the server and if it’s already installed on the server, will tweak the launchers to start the localapp.
As a result you’ll see a decreased CPU usage on the server and also spare a lot of bandwidth as you’ll be accessing the content directly and rendering locally instead of getting the X11 stream directly.

New X and multi-head support

X configuration was also improved a lot, in most case you won’t need to do anything as most common thin clients are already known and fixed and everything else will rely on X’s auto-detection.

You can also play with X RandR extension now and try dual or tri head setups with you thin clients just by playing with XRANDR_MODE_X and XRANDR_OUTPUT_X (X starting at 0 for the first defined screen), it’ll automatically generate a Virtual setting if required by your driver so you can then dual-head.
I’m currently using with my laptop as a thin client hooked up into a 1920×1080 screen using HDMI, its own screen at 1680×1050 and another external screen at 1280×1024 using VGA, all that with LTSP.

And even compiz !!!

For these of you who like eye candies, compiz work perfectly with LDM_DIRECTX set to True (so X11 doesn’t get encapsulated in SSH), then just run “env SKIP_CHECKS=yes compiz –replace” in a shell and you’ll get compiz (or set it in as autostarted application).
Warning: Using SKIP_CHECKS will start compiz without doing any checks, this is needed as the checks won’t work with LTSP but you’ll need to make sure your video card supports compiz without doing it or you may crash your X server.

Clustering for large networks

Since I’ve been at Revolution Linux I’ve been working on LTSP-Cluster which is a set of component on top of LTSP to make it load-balanced and easily manageable on very large networks.
Jaunty is the first release with LTSP-cluster integrated on the thin client, so if you’re managing a large centralized LTSP setup, you may want to have a look at our wiki.

Its core components are:
The Control Center, a web interface (PHP) used to access your network logs, thin clients hardware, organize your thin clients in a tree and set attributes (equivalent of lts.conf) based on the MAC address, position in the tree or even on the hardware of the thin client. Due to some design issue and difficulty to maintain, it’s being rewritten but will at least at the beginning keep the same database to make migration easier.

The Loadbalancer, made of two components, an agent to run on your servers and a server, the server will gather the various information from the servers and return the best server every-time it gets a request from the Control Center.

The Account Manager, a python service to run on the server that’ll create new accounts on the fly for autologin users and will also manage regular accounts, doing the cleanup and ensuring you aren’t logged in twice on the network.

We also have a few more components to do NX integration of the load-balancer and generation of pxelinux’s configuration files. The howto for a generic setup in OpenVZ is present on our wiki though anyone interested in improving the documentation is greatly welcome (just contact me and I’ll answer your questions and give your write access to the wiki so you can contribute).

The additional packages you need for ltsp-cluster services aren’t yet in Ubuntu, so you’ll need to use the PPA to install the loadbalancer server/agent and the control center. Code is available on Launchpad: https://launchpad.net/ltsp-cluster

Trying it out

Starting with Hardy, LTSP is now part of the Ubuntu Alternate CD-Rom.
It can be installed by selecting the “LTSP server” option from the cdrom boot menu, installation is easier if you have two network cards, one for internet and the other for your thin client LAN.
Complete instructions can be found here: https://help.ubuntu.com/community/UbuntuLTSP/LTSPQuickInstall (also valid for Jaunty)

Resources

If you’re interested by LTSP, want to try it out or just get more information, these are useful resources:
Ubuntu LTSP help: https://help.ubuntu.com/community/UbuntuLTSP
Edubuntu handbook for LTSP: http://doc.ubuntu.com/edubuntu/edubuntu/handbook/C/server.html
LTSP’s website: http://www.ltsp.org
IRC: (please mention what distribution and version you’re using) or (LTSP used to be part of Edubuntu)

Posted in Planet Ubuntu | 9 Comments

Announcing Mirrorkit – frontend to debmirror and possibly other mirroring softwares

After deploying it at a couple of customers at Revolution Linux I thought it’d be a good idea to finally release it publicly.

So here it’s, Mirrorkit now has it’s Launchpad project setup and Michael Jeanson is now working on getting it packaged for Karmic.

So what’s it exactly ? Mirrorkit is a simple frontend to debmirror with a user-friendly (I hope) configuration file helping you create your own Ubuntu/Debian mirror.

It’s a python script that basically takes an xml file as input describing both general and per-mirror configuration including proxy, help pages for the user, log output as html files and user-readable (I hope) definition of the mirrors.
When run (usually from a cron job) it’ll parse the .xml file and generate the debmirror (or in the future other mirroring softwares) command line, run it, parse the output and generate a report as an html page.

Today, I’ve released version 0.1 that can be downloaded here: https://launchpad.net/mirrorkit/+download
An example of its output can be found here: http://www.stgraber.org/download/mirrorkit/example/
And its commented configuration file here: http://www.stgraber.org/download/mirrorkit/mirrors.xml

I’ve been running it for over a year now in my previous school and it’s working like a charm (thanks to debmirror mainly).

Suggestions and bugs can be reported on Launchpad, here: https://bugs.launchpad.net/mirrorkit/+filebug
Code (GPLv2+) can be found here: https://code.launchpad.net/mirrorkit

Posted in mirrorkit, Planet Ubuntu | 2 Comments

Pastebinit 0.11 is out

It’s been a long time since pastebinit 0.10 was released.
Some people have been asking me when I planned to finally release 0.11, fixing most of the reported bugs, getting it properly translated and add more pastebins.

Well, it’s now done, these last weeks I’ve been integrating all the proposed patches on Launchpad, had some help updating the manpage, updated the translations and finally tagged 0.11.

For those of you who don’t know what pastebinit is, it’s a small python script that simply sends whatever you give it to an online pastebin and gives you the URL in return. It’s useful when doing IRC support (when you don’t want one to paste a 200 lines log) or when working on a command line box with no way to SSH in it.

So a quick changelog. There actually is nothing new in pastebinit itself, only a minor change that some of you may find annoying is that you now always have to use the “-i” parameter. This one can either be “-” for stdin or be a filename. This had to be done to fix some issues with reading from stdin.
All bugs reported on Launchpad have been closed (most of them being about adding new pastebins) the result being:
– 13 supported pastebins
– 13 complete translations
– 9 partial translations

I updated the Launchpad project page and added the new release to the download page. You can also download it directly from the usual place.

For the next release, I plan to improve the way pastebins are handled, at least by moving the different pastebin definition to an xml file for each pastebin (containing the list of URLs and html fields) or if I find the time, having something more clever handling the different pastebin engines and guessing what fields to fill with what value depending on the index page of the URL the user entered.

Until then, feedback is as always welcome and bugs can be filed on Launchpad.

Posted in pastebinit, Planet Ubuntu | 6 Comments

Pastebinit update, translation needed

For a long time now people have been poking me on IRC/mail/IM to get an updated pastebinit released.
The pastebinit currently in Ubuntu shows some bug (piping data often fails), doesn’t support most of the newest pastebins and isn’t translated in more than 2 or 3 languages.

I fixed most of these bugs thanks to all the patches attached to the bug reports, I now just need to update the manpage with the new supported pastebins. But before I release version 0.11, I’d like to get as many supported languages as possible.

So if you like translating and want pastebinit to speak your language, all you need is a Launchpad account and go to: https://translations.launchpad.net/pastebinit/ to translate it.
I’ll then export the .po from Launchpad and include them before releasing 0.11

Thanks

Posted in pastebinit, Planet Ubuntu | 3 Comments

Computer names

To continue with the meme that’s going on Planet Ubuntu, here is my computers name:
– Dakara
– Vagonbrei
– Castiana
– P4X-123 (Will be used for DHCP client 123) (Milky way galaxy)
– P3R-123 (Will be used for VPN client 123) (Pegasus galaxy)

You may have recognized those names, they are all taken from Stargate SG1 and Atlantis, series that I watch for several years now. http://en.wikipedia.org/wiki/Planets_in_Stargate

For ISO testing, I’m usually using: so ubuntu-i386 for example.
For my development Xen VMs, I use the boring but efficient naming: xenXX (xen04 is the test VM for Ubuntu Brainstorm and the QA team websites)

My LAN routers are usually called with router- so I currently have:
– router-roubaix (Roubaix, Nord-Pas-de-Calais, FR) (VPN gateway)
– router-bevaix (Bevaix, NE, CH) (Family house)
– router-neuchatel (Neuchâtel, NE, CH) (Grandma’s house)
– router-sherbrooke (Sherbrooke, QC, CA) (Home)

And other LAN computers are usually named after their owner and their type, using . (Standard boring naming)

Posted in Planet Ubuntu | Tagged | Leave a comment