I've set up LTSP-5 with Xubuntu 6.10 and found that at some point during the boot process of the thin clients (in the "Setting up LTSP client..." phase) it seemed to "stall" for a very long time (several minutes!). My thin clients are very "thin" indeed

(we use old Compaq Evo T20 clients with a ~300MHz Geode GX1 CPU and 64MB of RAM), which might be the reason for the slow boot process. However I did not want to accept it as a fact since with LTSP-4.x I did not experience anything like this.
I digged into the issue and came up with the following result: each invocation of the
preseed()
function within the
ltsp-client-setup
script took around 10-12 seconds on my thin clients.

The fact is that the execution of
debconf-communicate
has a fairly large overhead (at least on my thin clients), but the processing of its input commands has a quite acceptable speed. Fortunately
debconf-communicate
can accept multiple commands on its input, separated by newlines. My first test was to merge the two
debconf-communicate
calls within
preseed()
into one call, like this:
Original:
echo "set $question $value" | debconf-communicate $package
echo "fset $question seen true" | debconf-communicate $package
Merged:
echo "set $question $value\nfset $question seen true" | debconf-communicate $package
This took down the execution time of a
preceed()
call from 10-12 secs to 5-6secs! This seemed very promising so I worked on it a bit further. I've modified the
preseed()
function not to execute
debconf-communicate
on each call, but only "collect" the parameters in a variable, and added to the end of
configure_x()
to pipe all the commands in one batch to
debconf-communicate
. The result is that instead of several minutes, now
configure_x()
runs in ~30 seconds on my clients.
As already mentioned, I use Xubuntu 6.10 where the latest version of
ltsp-server
is 0.124. In the
ltsp-client-setup
script in this LTSP version there're in "worst" case 19 calls to the
preseed()
function and each call has 2
debconf-communicate
calls (a
preseed()
call took approx. 10s on my clients). These all together can took 6.5 minutes on my site, but with my patch it takes only 6 seconds! The execution time of
debconf-communicate
remained almost unchanged regardless of how many commands I piped into it.

More than 60 times speedup ... not bad.
Of course this is only true on my slow Evo T20 thin clients. My modifications would not have such a huge impact on faster thin clients. I've attached both the full, modified version of
ltsp-client-setup
and a patch, where you can spot the modifications a lot more easily.
Comments
How are you booting the T20's?
I am wondering how you are using your T20's.. Have you flashed the firmware? Are you PXE booting? USB booting? and if so, how did you manage to do this?
Thanks!
Evo T20 hacking
There're several ways to boot Linux on the Evo T20 (as you wrote: various net booting options, USB or solely by putting everything on the internal flash disk), but the easiest to administer is the net booting (you'll have everything coming from a server). The Evo does not support neither of these by default, so you'll have to re-flash it with a modified (or custom made) firmware.
patch accepted :-)
LTSP 5 Ubuntu