"In het verleden behaalde resultaten bieden geen garanties voor de toekomst"
About this blog

These are the ramblings of Matthijs Kooijman, concerning the software he hacks on, hobbies he has and occasionally his personal life.

Most content on this site is licensed under the WTFPL, version 2 (details).

Questions? Praise? Blame? Feel free to contact me.

My old blog (pre-2006) is also still available.

Sun Mon Tue Wed Thu Fri Sat
Powered by Blosxom &Perl onion
(With plugins: config, extensionless, hide, tagging, Markdown, macros, breadcrumbs, calendar, directorybrowse, entries_index, feedback, flavourdir, include, interpolate_fancy, listplugins, menu, pagetype, preview, seemore, storynum, storytitle, writeback_recent, moreentries)
Valid XHTML 1.0 Strict & CSS
Embedded Gentoo: Small footprint linux

In the last few weeks I've been playing around with embedded Linux. Bert, a flatmate, brought two old thin clients from his work. They're bot Wyse WT8440XL devices, containing a 400Mhz K6-II processor, some peripherals, and a "DiskOnChip". This last one is flash device that is used instead of a hard disk. It's soldered directly onto the mainboard and as far as I can tell, it interfaces with the system directly into the memory controller, similar to what a BIOS chip does. Anyway, this means I have no hard disk to put a full OS on, but only 96MB of flash storage (And yes, I know I can just plug in some USB storage, which is even what I do for testing, but not using the internal flash chip wouldn't be half as much fun :-p)


My initial attempt was using a small Debian root filesystem (using debootstrap) but that didn't really work out. Just the base system already filled up my available 100M. There is an embedded Debian project, but it's quite unfinished and underdocumented, so I gave up running my favorite Linux distro on the device.

Embedded Gentoo

Instead, (after some more googling), I gave Embedded Gentoo a try. It's a subproject of Gentoo, which is a Linux distribution focused on compiling everything from source. They use a nice systems of use flags, with which you can essentially specify compile options for each of the installed packages. This is of course a fine environment for making things small and dropping unneed options.

The main feature of Embedded Gentoo, opposed to normal Gentoo, is that it runs on uClibc as opposed to normal glibc. This saves a lot of space on disk (the library itself is 3.7MB vs 27MB for glibc) and makes programs memory footprints smaller.


Apart from having a fancy thin client running Linux (which is nice in itself), I am actually trying to get somewhere. I want to turn the device into an audio server, which I can stuff away in on top of the stereo at Brenda's place. Currently, if we want to listen to music in the living room, we put one of our laptops in the cabinet, where the stereo is. So, I'm trying to get the device to run: * Pulseaudio, an audio server to which I can stream raw audio. I can also set it up such that I have a virtual audio device on my laptop, so I can just use a local music player on my laptop. * Music player daemon (MPD), a daemon for playing music. It plays music that is stored locally on the device. Brenda specifically wants this option, so she can put on some music and then turn off her laptop. * WebDAV/sshfs/samba/something for filesharing. I need some kind of filesharing, so files can be uploaded for MPD to play. I haven't quite figured out which type of filesharing to use, but it needs to be be easy to use from Windows (since Brenda uses Windows). However, I'd rather not have a full samba installation, since I expect that to be rather big.


So far, I've progressed quite far already. I got the device running pulseaudio already, and MPD should not be far away. It did cost quite some effort to get everything working so far, since a lot of things (locales, iconv, tls, shm) are not supported on the system (or by uclibc mainly). Along the way, I've generated a dozen bugreports or so, so hopefully things will get easier for other people who will try to get this working.

Once I'm done, I'll clean up my stuff and post everything I did to build the system. Along the way, I'll probably post some stuff about the problems I'm encountering and their solutions.

0 comments -:- permalink -:- 23:17
Copyright by Matthijs Kooijman