An Update on Raspbmc – XBMC for Raspberry Pi
Earlier this month we told you about Raspbmc, now there is some more news.
This is what Sam has posted:
On to the development side of things. A draft version of the Windows installer has been completed. There is need to update a DLL pinvoke reference in future versions, but there is no reason to necessarily do so at this point in time.
I’d like to thank Alexander Beug for his continued permission in using his fantastic usbit32 IO routines for imaging devices at the block level under Windows. This has allowed integration of the imaging module into the UI installer with reportable progress for the Crystalbuntu project, and now for the Raspbmc project too.
An early version of the Linux and OSX installers has also been completed as well. I will be using the Mono GTK C# platform to allow me to develop this. At the moment, the imaging and extraction routines are not integrated well into the UI. If someone wants to take a look at that and see what they can do, that would be great. Obviously, some users won’t need the UI on Linux and will feel more comfortable installing Raspbmc with a simple: wget followed by gunzip -c image.img.gz | dd of=/dev/target.
The source code for the Windows installer is available here
The source code for the Mono installer is available here
As I am approaching the project’s development via installation first (as the target system should be an easier job), the next logical step is the Linux based installer that must run on the system itself. This will be known as the RAMDISTRIBUTION. This is because it will load itself into the memory of the Raspberry Pi, allowing the original contents of the SD card that booted to be overwritten. The advantage to this over a direct image installation, is that the ram based distribution will be able to adapt for any card size that exists, as the ext4 partition will simply be placed on the end and dynamically created.
So, where did I get to with this? Well. I was pushing up some sources so I could build the ram based distribution, and consolidating a series of scripts I had written (I’m sure devs will prefer a single ./script-to-build). Building the ram distribution takes a few stages, namely:
- We build a kernel for the device, and a kernel for QEMU – to finish the foreign debootstrap.
- We build a bootable partition for the device with the modules and GPU binaries, such as start.elf
- We initialise QEMU upon an ext4 filesystem and finish the debootstrap and configure the installer.
- Build an image to encapsulate everything: the vfat partition, the ext4 partition and a swap file.
The current sources are here
A bootable system is the most complex bit in the process now, but I believe I’m pretty much there. At the moment, I’m using 3.0.4 kernel for QEMU and a 3.1.9 kernel for the device itself. I created tarballs of pre-configured kernels, which is not ideal, as they rely on a static path toolchain. However, this is just for the initial version, and in the future there will be one kernel for Raspberry Pi and QEMU, creatable by different defconfigs.
Looking good! Can’t wait to get my hands on a Raspberry Pi board!