Monday, December 22, 2008

Peaceful Holidays ...

... and a Happy 2009 to everyone from me and my family.
Presented by my XO-hugging USB men (who seem to have more memory capacity than me at times).
Featuring a seriously tree-infested Etoys project, with snow (for those living south who cannot enjoy the white fluff this time of the year).
And see you at 25C3 I hope!

Wednesday, December 10, 2008

Emulating the latest stable OLPC XO software

Even with XO laptops readily available now there are quite a lot of reasons why one would want to emulate it on another machine. One being to hook up a projector. Unfortunately there are quite a number of hoops (*) one has to jump through to make it work.

Anyway, I made a virtual machine that allows me to emulate the XO in VMWare on my Mac, running Sugar in the XO's native 1200x900 resolution, scaled down to a nice physical size in a window on my regular screen (fullscreen works, too). Sound works (even Tam Tam), Browse works (so networking is good), and after setting a working Jabber server I do see other XOs in the neighborhood view (Chat worked fine). Camera and mic are half working (Measure crashes, Record shows blank picture, but reportedly does record video), and a "Sugar restart" does not actually restart Sugar, but apart from that it seems fully functional, and much nicer than the emulations I had used to date.

Click to see actual screenshots (calibrated to match the XO's physical extent using the Ruler activity on my MBP's 110 ppi screen):

And here you can get that virtual machine (665 MB, 2 GB unzipped):

I made this using VMWare Fusion, which I found to be much better at running Linux clients than Parallels Desktop (I had been using that for 2 years). Give it a try, it's free as in beer for 30 days. No, I don't get paid if you buy it.

Update: Reportedly it does work in VMWare Player on Windows and Linux, too (see comments). And maybe someone can make an appliance for even easier use?

(*) Now to the hoops:
  • I started with the 767/ext3 image from
  • extended to 2 GB by appending /dev/zero
    (jffs2 compression gives roughly 2 GB too)
  • enlarged the partition to full 2 GB
    (using fdisk and ext2resize)
  • mounted that in a Fedora 10 virtual machine
  • copied over the F10 kernel, initrd, and modules
    (olpc kernel wanted AMD instructions)
  • edited grub.conf to use that kernel
  • and appended a root=/dev/sda1 kernel arg
    (the fedora kernel wants to use LVM otherwise)
  • unmounted
  • created new virtual machine
    (that disk, 1 CPU, 256 MB RAM, NAT networking)
  • booted into that new system
  • installed Perl
    (for vmware tools installer)
  • installed vmware tools
    (to get the X driver)
    (but none of the kernel modules, would need make/gcc/etc.)
  • deleted Perl
    (to restore the default sw environment)
  • copied the existing xorg-vmware.conf to xorg.conf
    (to get 1200x900 resolution w/ 200 dpi)
  • booted into Sugar
    (looks really nice so scaled down)
  • installed activities
    (took a long time, maybe it's my DSL)
  • tested a bit
  • rm -r ~olpc/.sugar
    (to remove my personal data)
  • should have deleted sshd host keys, too, but didn't
  • shut down
  • zip
  • upload
  • ...
  • ...
  • ...
  • still no profit? ;)

Friday, December 05, 2008

European grassroots meeting

I went to Brussels last weekend, meeting with folks from OLPC Europe, OLPC Boston, and some other European grassroots (me representing OLPC Germany e.V.). We mostly discussed how to implement the new Give-1-Get-1 program as well as Give-many here in Europe. Some notes are available.

And, while sitting together at a nice Cafe on Sunday I made this little Etoys project to celebrate OLPC Europe. Just click here if you are on an XO or have the Squeakland plugin installed (as everyone should of course). For those who were there and took the huge file home on their USB drives - this is a fixed version that does not keep growing indefinitely while animating.

For the Etoyers out there - if you put a copy of a player in one of its own variables repeatedly, this creates an evergrowing "linked list" of player copies. Bad idea. Reset the variable first (by assigning dot for example) then do the copy: see my example.