Awhile back I wrote about how you can set up a cross-compile toolchain for compiling on x86_64 with the Raspberry Pi as a target. There is another, perhaps easier way to do the same thing by using Qemu 2.0 as your backend.
By installing and enabling Qemu support, you can run code compiled for another architecture (that is supported by Qemu) on your native machine. You can then create a Chroot environment, perhaps similar to what you have on your Raspberry Pi, and run it as if it was natively.
Running an X (Xorg) server on your Raspberry Pi is frustrating. You can either use the fbdev or fbturbo driver which will give an un-accelerated 2D environment with swrast 3D (OpenGL) all beating your poor RPi’s CPU. Overclocking it will only help you so much which is a pity considering that there is another layer on the SoC that would be perfect for that but is now unused.
Enter the VideocoreIV (VC4) and Eric Anholt (formally of Intel, now of Broadcom), who are going to breath new life into the RPi. The idea is to offload the 2D rendering, via Glamor, to the VC4 with OpenGL calls. Since a OpenGL stack needs to exist, that means there will be a Direct Rendering Manager (DRM) Linux kernel module and Gallium/DRI module in Mesa.
This is happening now, here is the current status of support via the Piglit test-suite: skip 19102, fail 3866, pass 3146, crash 153, total 26267
Now that I’m a proud owner of a Raspberry Pi, I’ve being really stressing the little guy. There is only but so much a ARMv6 processor, on an microSD with only 512MiB of ram can do, which means that compiling on such a machine is going to take a really long time.
Take for example OpenMW, currently it takes about 4 minutes on a quad-core i7 to compile. You’re in for a treat on the Pi, it will take you at least a day, two days if you realize that half-way through the OOM Killer came through and killed your cc process. This is about the time you start wondering about various ways to improve the situation, such as a larger swap file or using zram.
At this point, I was wondering about other ways compiling binaries and packages for the Pi. There was cross-compiling, but then I would have to set up a full toolchain and recompile all the packages from scratch. That will have to be for another post though as it is another world. Another option is to try virtualizing the Pi and apparently QEMU gets us pretty darn close.
I’ve been there before with Gentoo, as a developer, but times and situations have changed. Over the years I’ve been deeply involved with Ubuntu for my work and at its heart, Debian. I’ve become a Debian Developer to help get closer to the development process, package management and maintenance to do my share of the heavy lifting.
The first thing I did was sign up at Alioth, a software ‘forge’ used by Debian for collaboration. Create a ‘New Account’ and just be aware that whatever login name you use, it will be appended with ‘-guest’. This will go away once you’ve officially joined Debian. At this point, it is also a good idea join a Debian mailing list and/or join IRC at irc.debian.org and have a nice chat with the folks in #Debian or their various sub-channels where you would like to help. It is important to have a sponsor/mentor that can help you out if you a problem. You will need them when getting accepted into the Debian community in order to start working.
So tried my hand at getting Linux up and running on a hand me down laptop that I’ll be doing a lot of work on. It is a Dell Latitude D505 with 1.2 Gigs of DDR ram, 1024×768 15in LCD, Pentium-M 1.5Ghz, Intel based wireless (802.11b), 120Gig Drive, and Intel based video card.
Started off wired to the Internet, Debian 3.1 install CD, linux26 install and everything was smooth sailing during install process. I selected http for getting my apt sources, wrapped up the install, rebooted. Once logged in, I immediately added testing and performed a aptitude dist-upgrade. This bumped me up to Debian 4.0. I installed the latest kernel 2.6.22 as it comes with the ipw2100 driver automatically. The earlier kernels do not and require you to compile yet more source code.