From July 6th-8th 2012, the Vienna Hackerspace Metalab organized its 8th Hackathon. The idea behind this 48h long event is that anybody can join in an inspiring and relaxed environment to work on their own project, idea or experiment. There is little constraint on what exactly should be the topic of one’s work, and of course there is always a social component, i.e. participants typically collaborate and exchange knowledge and suggestions. At the end of the event, one’s achievements are presented to the community.
I participated with the intent to work more on the FreedomBox.
I had the following concrete goals:
Goal 1: Build FreedomBox Image
FreedomBox images are regularly being published on the FreedomBox mailing list. These images can be flashed onto a plug server such as the Dreamplug.
I also wanted to be able to build the FreedomBox image myself, using the freedom-maker script. Existing instructions on how to do this are actually very good, see e.g. this page on the FreedomBox website, or this README file in the freedom-maker repository.
Even though theoretically this is quite easy, I encountered the following challenges:
- I tried it on a clean Debian Squeeze, and ran into all sorts of errors with freedom-maker that I couldn’t fix. So I then tried it on the most recent Debian Wheezy, and that worked better.
- I had to manually copy the kernel/uInitrd to the image, freedom-maker didn’t do it.
- In the bin/finalize script, I had to change “projects-chroot.sh” to “projects-chroot”. Update: This has been fixed now.
- Contrary to the instructions, I had to make sure my partitions were NOT mounted when I ran make, because freedom-maker mounted them by itself.
- At the end, one mount (build/dreamplug/var/cache/apt) wasn’t unmounted. I have to unmount it manually if I want to run freedom-maker again.
Despite these minor observations, I was able to build a FreedomBox image, yay!
The output of the freedom-maker script had 72639 lines of text, I’m attaching it here.
Goal 2: FreedomBox on Guruplugs
I wanted to make the FreedomBox image work on my 4 Guruplugs. The challenge here was that by now the image was about 700MB – too much for the Guruplug’s 512MB NAND Flash.
My initial plan was to simply try to work on the image in order to reduce its size and fit it on the Guruplug. However, I soon decided that this was probably wasted time, since I would have to re-do the process again every time I wanted to use a new image.
The alternative was to simply boot the Guruplugs not from NAND, but from a USB drive or via TFTP. This is relatively easy with the U-Boot bootloader and involved the following U-Boot commands:
usb start fatload usb 0:1 0x800000 uImage fatload usb 0:1 0x1100000 uInitrd setenv bootargs root=/dev/sda2 bootm 0x800000 0x1100000
## Booting kernel from Legacy Image at 00800000 ... Image Name: Debian kernel 3.0.0-kirkwood Image Type: ARM Linux Kernel Image (uncompressed) Data Size: 2733148 Bytes = 2.6 MiB Load Address: 00008000 Entry Point: 00008000 Verifying Checksum ... OK ## Loading init Ramdisk from Legacy Image at 01100000 ... Image Name: Debian ramdisk 3.0.0-kirkwood Image Type: ARM Linux RAMDisk Image (gzip compressed) Data Size: 2455604 Bytes = 2.3 MiB Load Address: 00000000 Entry Point: 00000000 Verifying Checksum ... OK Loading Kernel Image ... OK OK Starting kernel ... Uncompressing Linux... done, booting the kernel. Debian GNU/Linux wheezy/sid freedombox ttyS0 freedombox login:
Goal 3: VirtualBox
The third idea was to run the FreedomBox image with VirtualBox. This had been discussed on the FreedomBox mailing list for a while, the intention being that it should be super-easy for non-Linux users to try the FreedomBox software on their own computer.
The problem here is that the FreedomBox software is for ARM architectures, but VirtualBox is a “virtualizer for x86 hardware”, not a hardware emulator.
One theoretical option would be to virtualize a Linux system in VirtualBox, and then within that, use the QEMU emulator to run FreedomBox.
However, early on during the hackathon I was persuaded by a fellow participant that this would be slow and complicated, cause all sorts of problems, and be generally not worth doing.
In addition, whatever procedure would be required to achieve this would have to be repeated with every new FreedomBox image.
Goal 4: FreedomBox and OLSR
My most interesting (yet as it turned out easiest) goal was to install OLSRd on my 4 Guruplugs, in order to establish a mesh network between them.
The reason for exploring this goal is that it would support a vision in which Internet freedom and independence are achieved not only with a personal FreedomBox, but also with decentralized connectivity, i.e. with mesh networks such as the Austrian FunkFeuer, or the ones envisioned by the Free Network Foundation. At a time in which highly centralized Internet structures on all layers are being increasingly criticized, the number of efforts to move to decentralized alternatives is growing, as is public awareness of the merits of such alternatives. Thus, an exciting scenario would be to set up FreedomBox’es as nodes in a mesh network such as FunkFeuer.
Making OLSRd work on the FreedomBox is the first step. Since I had already set up wireless ad-hoc networking in an earlier experiment involving B.A.T.M.A.N. (see this wiki page), switching to the OLSR protocol was extremely easy, and basically only involved installing the respective Debian package and configuring the correct network interface.
I ended up distributing the 4 Guruplugs in the Metalab hackerspace in a pattern that made sure not every node was able to talk to every other node. The final result is described in more detail on this wiki page and looked like this:
Finally, I also spent some time with fellow participant Florian aka “uniqx”, who had also been looking into the FreedomBox.
Together we had the following ideas:
- We will try to make the FreedomBox image work on a Raspberry Pi, a topic which has also been debated a few times on the FreedomBox mailing list.
- He and a few other people are launching a great new effort called freie.it, which intends to provide free support services for free/open software and hardware. We agreed it would be great to offer FreedomBox-related support on this platform.
- Perhaps we will collectively order a few Dreamplug devices for interested individuals in the local community.
- Some time in August/September we will run a FreedomBox workshop at Metalab.