LTSP 5.2 is out !

After almost two years or work and 994 commits later made by only 14 contributors, I'm proud to announce that the Linux Terminal Server Project project released LTSP 5.2 on Wednesday the 17th of February.

LTSP 5.2 is released

As we wanted this release to be some kind of a reference point in LTSP's history, we also released LDM (LTSP Display Manager) 2.1 and LTSPfs 0.6 on the same day.

Packages for LTSP 5.2, LDM 2.1 and LTSPfs 0.6 are already in Ubuntu Lucid and a backport for Karmic is available in my PPA.
For other distributions, I'm expecting packages to be available very soon. If you want to check out the code, it's on Launchpad.

It would take a lot of pages to describe all that was changed during these two years so I won't even try to do that :)

Instead, I'll simply give you a short overview of what one can do with LTSP nowadays:

  • Boot a Debian/Fedora/Gentoo/Ubuntu environment using PXE (dhcp + tftp) and connect to an application server using SSH and X11.
  • Either run the whole session remotely or run select applications locally to use specific hardware or advance 3D capabilities
  • If running Ubuntu, run everything locally and only select applications remotely (that's called Fat Client)
  • Support for RDP sessions using rdesktop
  • Working local block devices like harddisks, floppy disks and cd-rom drives (thanks to ltspfs)
  • Easily extensible thanks to an amazing plugin infrastructure, providing hooks pretty much everywhere
  • Multi-lingual support in LDM and most of our scripts
  • Scalable to thousands of thin clients, at least on Ubuntu, thanks to LTSP-Cluster
  • Complete documentation, in the LTSP handbook
  • Active and supporting community, mostly on the various mailing-lists and #ltsp (freenode)

Now, to quickly summarize what changed between 5.1.99 and 5.2, here's the changelog I used in the Ubuntu package:

  • Improve fat client support (a lot faster)
  • Update nbd-proxy for stability
  • Rewrite of ltsp-update-image
  • Updated sound configuration
  • Lots of optimizations
  • Added ssh and whiptail screen script

LDM was made a bit faster in 2.1 and a few ltspfs bugs have been fixed as well as lot of optimization and code cleanup (in both cdpinger and ltspfsd).

Measure boot time on Ubuntu Lucid is under 10s on an Atom-based thin client (1.6Ghz, Hyper-Threated with 512MB of DDR2). That's just blazing fast !!

Once again, thanks to everyone who made that possible. I'm really impressed by all the changes made to LTSP over the past few years and I really love being a part of it.

No releases are perfect, so if you find bugs, please report them here (for LTSP), here (for LTSP in Ubuntu) or here (for LTSP-Cluster).

Say Hi to the Edubuntu Menu Editor

Back at UDS in Dallas, TX we decided that one of the focus for Edubuntu in Lucid would be to to make menu customization a lot easier.

So we wrote a specification covering most use cases for menu customization, editing and sharing.

After a few months of work, mostly done by my colleague at Revolution Linux, Marc Gariepy, we now have a working tool, that's in Edubuntu's default installation.

You can install it on a regular Lucid desktop by doing: sudo apt-get install edubuntu-menueditor
A PPA is also available here (Lucid and Karmic).

Or download Edubuntu's latest daily build here.

It'll install you two different tools:

  • The menu editor itself in Applications => System Tools => Menueditor
  • The Profile manager in System => Administration => Profile manager

The first can be run by any user, it shows you a window like this one:

menueditor-main

There you can create new sub-menus, copy items in them and hide items from the existing menu. Then save it (as a .tar.gz archive).

With this archive, you can either share it with your friends/colleagues/general community or directly start the Profile manager to import it and assign it to a group.
On login, all users in that group will see that new menu you assigned them.

menueditor-profile

As every new open source projects, it's not bug free, so if you find a bug or have suggestions, please go to Launchpad and report them here.

Now it's your turn to start creating and sharing your menus for your region/country/school system or for your company.
And if you aren't using Ubuntu in English, you can go on Launchpad and help us by translating it to your language !

NOTE: It's currently "branded" as Edubuntu-specific, that's done because it's initially an Edubuntu project but it'll work with every xdg-based menu (that's why the Lauchpad project is called "menueditor").

The new LTSP-Cluster website's officially out

The LTSP-Cluster project is proud to announce that its website is now on-line.

LTSP-Cluster is a project to extend LTSP (Linux Terminal Server Project) with the required components for a large scale deployment. It makes it easy to deploy and manage thousands of thin clients connecting to a cluster of Linux or Windows application servers.

website

The LTSP-Cluster team works very closely with the main LTSP project so the required hooks are included directly in stock LTSP. On top of that, the required load-balancing components, various daemons and a web interface have been developped to add the clustering functionalities.

The LTSP-Cluster packages have been included in Ubuntu in the Karmic development cycle by Jonathan and have already been used for a few large LTSP deployments.

All of these components have been developed by Revolution Linux and integrated with the help of upstream LTSP developers. They are all freely available under a GPLv3+ license.

Existing LTSP users considering to extend their current setup and wanting an easier way to manage it should definitely have a look at it.

People looking for a way to migrate from desktops to a thin client solution for a large network, be that with a Linux desktop or Windows desktop should also check it out.

You can learn more on: https://www.ltsp-cluster.org

If you like it, please Digg it!

Last step before LTSP 5.2

ltsp

Tonight I released both LTSP (Linux Terminal Server Project) 5.1.99 and LDM (LTSP's display manager) 2.0.54.
Next up will be LTSP 5.2 that will basically be a bugfix release of 5.1.99 that should be rock solid and that we hope we'll be able to use as a reference in the future.

LTSP 5.1.99 is bringing a lot of changes, optimizations and bug fixes as well as improvements in areas that haven't been touched for a long time.
Here's a quick overview:

  • Add Fat client support for Ubuntu (more on that after)
  • General optimization (using shell built-ins when possible, implement caching, improved data parsing, ...)
  • Implement nbd-proxy for more stability (developed by Revolution Linux to prevent SQUASHFS errors and properly handle NBD fail-over)
  • Properly save/restore IFS (avoid some bugs that are usually very hard to debug)
  • Implement vendor specific functions in ltsp-build-client
  • Update a lot of ltsp-build-client plugins, sharing more code between Debian and Ubuntu, improving existing common functions
  • Speed up boot process by starting more functions in background and fixing tty/vt detection for flickerless boot

That's of course not a complete changelog of what happened in 5.1.99, more details can be found in the package changelog or looking at the bzr branch history.

Now, to come back to that Fat client thing, recently, thin clients are getting a lot thicker. What we are now considering as recent thin clients, are actually the exact same hardware as netbooks and these are perfectly capable of running a full desktop.

That Fat client change adds the possibility to do something like:
ltsp-build-client --arch i386 --dist lucid --fat-client --fat-client edubuntu-desktop

And next time you boot, you'll get the exact same LTSP login screen and will still be logging in against that same LTSP server, only difference, nothing will be running on the server, everything will be running locally. Of course locally means from the NBD image, there's still no harddisk involved :)
Home directory gets mounted over sshfs which will work fine with most applications.

Thanks to both Jonathan Carter and Άλκης Γεωργόπουλος (Alkis Georgopoulos) for making a working LTSP plugin using the few hooks I implemented a while back in LTSP.

Now, as we clearly want LTSP 5.2 to be rock solid, please help us and test LTSP 5.1.99. It can be found in current Lucid and a Karmic backport is available in my PPA (never tried it yet though).
PPA publishing took a lot longer than expected, it should be online by 14:00 UTC on the 26th of January
Bugs can be reported here for Ubuntu-specific ones or here for upstream ones.

We're usually around in #ltsp on irc.freenode.net if you want to chat directly with us.

Edubuntu wiki day

Wiki day

Following the very successful Bug day we had last week, the Edubuntu project will be having an Edubuntu Wiki day tomorrow.

Wiki reorganization information can be found on this mailing-list post.

As for the Bug day last week, we'll be discussing on #edubuntu (irc.freenode.net), going through wiki pages, moving them, setting redirections and deleting these that shouldn't exist anymore.

Jonathan Carter will be coordinating that on IRC, I'll also be around during the day.

Looking forward to having a clean wiki and discussing with you tomorrow.

Edubuntu bug day on Tuesday (12nd of January)

On Tuesday the 12nd of January, the Edubuntu project will have its first bug day for the Lucid development cycle.

Edubuntu logo

It'll be coordinated by Scott Balneaves, our dear LTSP developer, Sabayon developer and most recently Edubuntu council member. The event will take place all day in #edubuntu on irc.freenode.net.

At least Jonathan Carter and I will also be around during that day (as part of our work for Revolution Linux).
We will help these interested in looking for education software bugs in the most recent daily image and confirm/close the various bugs we have on Launchpad.

It's also a very good opportunity for everyone interested in Edubuntu to come and discuss in #edubuntu.

The announcement from Scott can be found here, bug suggestions can be sent to the Mailing-List.

Looking forward to talking to you in #edubuntu.

Ubuntu Desktop in the Cloud, now working with Lucid

Just a few minutes ago, I noticed an update to the Desktop in the cloud blueprint on Launchpad.

It basically said that images available at http://uec-images.ubuntu.com/desktop/lucid/current now contain a NX server (neatx).

I did a quick test on EC2:

  • Create a new instance: ec2-run-instances ami-0a749663 --instance-type m1.large --region us-east-1 --key ${EC2_KEYPAIR_US_EAST_1}
  • Waited for it to start, watching with: ec2-describe-instances
  • Got the public IP and connected using ssh: ssh -i data/ec2/ec2-keypair.pem ubuntu@[some EC2 ip]
  • Created a new user with: sudo adduser test
  • Connected using a NX client (qtnx or the binary one)
  • Destroyed the test instance: ec2-terminate-instances

That was extremely easy and got me a working NX session showing a regular Ubuntu desktop. Thanks to everyone who made that happen !!

In-flight internet and LXC working in libvirt

Interesting day, flying from Montreal, Quebec to Dallas, Texas for the Ubuntu Developer Summit.
I have been able to try American Airlines' in-flight wireless, it works surprisingly well, I get a stable 80ms latency to my home server and a quick bandwidth test gives me some 100kB/s.

On a completely different topic but still somewhat related, on that same flight, I have been able to install the latest libvirt packages I uploaded this morning to my PPA.

It's the first time I actually manage to get networking to work with LXC in libvirt using libvirt's network configuration.

I'll be trying to convert some of the UDS attendees so they try it out and help making it work just fine in Lucid. Having that and kvm supported by libvirt will make Ubuntu a rocking platform for virtualization/contextualization.

Quick quote from my first test (starting the container, entering it, setting up network with DHCP, pinging my home server):

root@castiana:~# sudo virsh --connect lxc:///
Welcome to virsh, the virtualization interactive terminal.

Type:  'help' for help with commands
       'quit' to quit

virsh # start shell
Domain shell started

virsh # console shell
Connected to domain shell
Escape character is ^]
root@castiana:/# dhclient3 eth0
There is already a pid file /var/run/dhclient.pid with pid 29
removed stale PID file
Internet Systems Consortium DHCP Client V3.1.1
Copyright 2004-2008 Internet Systems Consortium.
All rights reserved.
For info, please visit http://www.isc.org/sw/dhcp/

Listening on LPF/eth0/52:54:00:d8:9b:96
Sending on   LPF/eth0/52:54:00:d8:9b:96
Sending on   Socket/fallback
DHCPREQUEST of 192.168.122.78 on eth0 to 255.255.255.255 port 67
DHCPACK of 192.168.122.78 from 192.168.122.1
bound to 192.168.122.78 -- renewal in 1749 seconds.
root@castiana:/# ping athos.stgraber.org
PING athos.stgraber.org (24.200.46.78) 56(84) bytes of data.
64 bytes from modemcable078.46-200-24.mc.videotron.ca (24.200.46.78): icmp_seq=1 ttl=43 time=94.1 ms
^C
--- athos.stgraber.org ping statistics ---
1 packets transmitted, 1 received, 0% packet loss, time 0ms
rtt min/avg/max/mdev = 94.124/94.124/94.124/0.000 ms
root@castiana:/# ps aux
USER       PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root         1  0.0  0.0  17636  1772 pts/0    Ss   20:16   0:00 /bin/bash
root        29  0.0  0.0   6488   440 ?        Ss   20:16   0:00 dhclient3 eth0
root        31  0.0  0.0  14892  1028 pts/0    R+   20:16   0:00 ps aux
root@castiana:/# 

LXC containers or extremely fast virtualization

Update: Added an hardy i386 template, mentioned the need of bridge-utils and fixed typo (s/addbr/brctl addbr/g)

This (quite long) post is about the LXC (Linux containers), an example of its usage on Karmic is provided after the introduction to contextualization.

Most of you are probably already familiar with "usual" virtualization as kvm/virtualbox/vmware/... These are now extremely fast ways to do "full" virtualization of an OS on a host running either the same OS or a completely different one.
In Ubuntu, the most widely used is probably KVM used with libvirt and virt-manager as frontend.

At Revolution Linux, we have literately hundreds of virtual machines for each of our customers and we noticed that they are all Ubuntu virtual machines running on Ubuntu hosts. Then, running them in a "full" virtualization environment adds unneeded overhead and makes resource assignment quite difficult (you can't easily change the CPU/RAM/DISK/NIC of a running virtual machine).

So, what we are currently doing is using contextualization instead of regular virtualization.
Contextualization can (in a much simpler way) be seen as improved chroots, these "chroots" are called containers and work just like a regular virtual machine, inside them you have your own network interface, can apply disk/cpu/ram quotas and start/stop/suspend as many of them as you want.
All the quotas and restrictions can be changed on the fly without needing any restart, because it's technically just a set of process running on the host, not a single process as with virtualization.
It also means that you can list/kill or execute a process in any of these containers, directly from the host (a container obviously can't access another's processes).

The technology we have been using for more then a year now has been OpenVZ (open source implementation of Virtuozo) which basically is a huge patchset on top of the Linux kernel and only exists in Ubuntu hardy (8.04 LTS).

What I've been looking at more recently and hope to have working correctly in Lucid (10.04 LTS) is LXC. LXC is basically the same as OpenVZ except that it's in the upstream kernel and uses already existing kernel features such as "cgroups" for example.
LXC is also supported by libvirt although it's not working in Karmic, that will let users play with it just like any other virtualization technology using their existing scripts and interfaces.

Here's a quick howto to make it work on Karmic with an Ubuntu 8.04 amd64 container (I've had issues making Karmic to work in a container):

  • Install bridge-utils: sudo apt-get install bridge-utils
  • Install LXC from my PPA (upstream snapshot) : https://launchpad.net/~stgraber/+archive/ppa/+packages
  • Create /var/lib/lxc/: mkdir -p /var/lib/lxc/
  • amd64 template (if your computer is running Ubuntu 64bit): Get http://www.stgraber.org/download/lxc-ubuntu-8.04-amd64.tar.gz (Hardy amd64 image)
  • i386 users (if your computer is running Ubuntu 32bit): Get http://www.stgraber.org/download/lxc-ubuntu-8.04-i386.tar.gz (Hardy i386 image)
  • Uncompress it in /var/lib/lxc/ (will create an ubuntu directory containing a configuration file and a root directory)
  • Mount cgroups somewhere: sudo mkdir /dev/cgroup && mount -t cgroup none /dev/cgroup
  • Create a bridge with: sudo brctl addbr br0
  • Set an IP on the bridge: ifconfig br0 192.168.2.1 (VE will be 192.168.2.2 by default)
  • Start the VE: lxc-start -d -n ubuntu
  • Enter the VE: "lxc-console -n ubuntu" or "ssh root@192.168.2.2" (root password is "password")

The VE (virtual environment) configuration file is in: /var/lib/lxc/ubuntu/config

Additional information can be found on:

Also, I plan to have a session about it at UDS-Lucid in Dallas

Edubuntu 9.10 is out !!!

On this Thursday 29th of October, the Edubuntu community is extremely pleased to announce that the 9.10 release is out !!!

edubuntu logo

Some may have thought Edubuntu was kind of dead, especially after changing its name to become an Add-on, these days are over and we are happy to announce that it's now a full distribution again and is provided as a DVD image.

The biggest changes for this release are:

  • Moving to a DVD image
  • LTSP installation working from the DVD (text mode)
  • Live (ready to use) environment with possibility to install
  • LTSP-Cluster is now packaged in Universe
  • Sabayon is working again

The release announcement can be found on the Edubuntu website along with download information: here.

It's now time to celebrate Ubuntu's and its derivative's latest release, then we can start thinking of what to work on for 10.04 (Lucid Lynx) which will be a Long Term Support release.

I'd like to say a huge thank you to everyone who was involved in creating that great release and helped getting Edubuntu back to what it was if not even better. I'm sure that in the next 6 months, we'll achieve a lot more.

An Ubuntu OpenWeek session is planned on Thursday the 5th of November at 19:00 UTC on IRC (#ubuntu-classroom) where I'll try to explain how to get involved in that great community and what are our plans for the release to come.