The Hyperpessimist

The grandest failure.

Current State of Rasberry Pi Kernels

If you look at the current mainline kernel (3.4.4 at this moment) you’ll realize, there is no support for the Raspberry Pi, so you cannot just get the kernel from, compile it and dump it on the RPi. So how does it run Linux then?

The answer is that currently the Raspberry Pi runs an old, forked version of Linux, 3.1.9, which can be found on the foundation’s GitHub page. It turns out that for some reason, Broadcom uses this kernel internally and therefore that’s what the people from Broadcom support (mostly popcornmix). Now this is rather unfortunate, first, since the latest 3.1 kernel is 3.1.10, so the current “official” kernel lags behind and second that the 3.1 series reached it’s end of life which means there won’t be any more updates, not even security updates. In fact, there is an exploit for 3.1.9 which means that local users can get root privileges without password.

As this is quite some unfortunate, especially as the following 3.2 series is a long-term-support series and will be used in the upcoming Debian 7.0, “Wheezy”. Therefore Chris Boot ported the changes to the newer 3.2 series, which will be supported for a couple of years, which is already a considerable improvement. This tree includes most drivers. In the near term future it is planned to migrate to this kernel, which should solve the most pressing problems. But it still is bound to 3.2, not mainline, so no new features will make it to this kernel, unless someone backports it.

Now, why is having RPi support important in mainline? Having a device supported in upstream Linux means that on every new kernel release, you can just update your kernel and the device will keep on running. Also, distributions like Fedora only officially support the mainline kernel, so the Fedora version for the Raspberry Pi is more or less also a fork of Fedora.

I talked to one of the maintainers of the arm-soc tree, that maintains Linux support for ARM devices. He told me that the current state of the foundations kernel is not close to being merged into the mainline kernel, as it does not support DeviceTree and in general does not use the kernel infrastructure.

Fret not, help is on the way! Due to the effort of Simon Arlott and others, there exists another kernel fork which is meant for inclusion into the mainline kernel. This effort is coordinated via the linux-rpi-kernel list as well as the #raspberrypi-dev IRC channel on freenode. The main things blocking inclusion to the mainline kernel are proper USB drivers and the sound-driver (the vchiq code seems to be too difficult to port directly).

If you happen to have a Raspberry Pi and would like to help the developers, drop by in the channel and help testing. I am sure they’ll appreciate.