OpenEmbedded for Marvell Kirkwood

I recently published a BSP layer to add support for Marvell Kirkwood devices to OpenEmbedded, the build framework for embedded Linux. The Kirkwood SoC is used in several common products including plug computers like the Sheevaplug, and the BSP allows you to run OpenEmbedded-based distributions such as Angstrom on these devices.

There has been some support for Kirkwood devices in OE over the years but only in the legacy OE Classic tree, not in the more recent OE Core. Where previously a plethora of device BSPs were available in the Classic tree, you must now add separate meta-layers from elsewhere to support various CPU architectures and platforms. My new Kirkwood BSP layer can be imported to an OE Core tree to add support for Kirkwood targets. This has been tested with the Angstrom distro but should work just as well with any OE Core based distro.

The new meta-kirkwood layer should be added alongside your other OE meta layers, and provides new machine targets “sheevaplug” and “netstora” that can be used to build for the Kirkwood-based Sheevaplug and Netgear Stora platforms. Many other Kirkwood-based platforms are very similar and in practice it may be possible to run the same builds on other machines, while some may require a few minor changes. If you do make changes to get meta-kirkwood running on other Kirkwood machines then please submit pull requests via Github and I will incorporate them in the standard meta-kirkwood layer.

The meta-kirkwood layer currently uses the kernel from Marvell’s Orion git repo which is based on 2.6.35-rc1. A few patches are added to the stock Marvell kernel:

Mikael Pettersson’s patch to add support for accept4() on ARM devices, required for startup of socket-based services with the new systemd init manager used by OE Core.

Quick Start Guide

If you are interested in trying the layer out, the following describes the process from scratch from downloading the OE-based Angstrom distro and the meta-kirkwood layer, and building a kernel and rootfs for the Netgear Stora platform. Make sure you have at least 15-30GB of free disk space in the checkout location, OE uses up serious disk space.

Add the new meta-kirkwood layer to the BSPLAYERS list in conf/bblayers.conf:

${TOPDIR}/sources/meta-kirkwood \

From the checkout location (“setup-scripts”) run the setup script to configure for your chosen machine (currently a choice of sheevaplug or netstora) and download OE Core and all of the surrounding metadata layers:

./oebb.sh config netstora

This creates a script for setting up the shell environment that should be run in any shell windows that you wish to perform an OE build from:

source ~/.oe/environment-oecore

Start a build by making up your own “image” containing a list of packages, or using one of the built-in images such as console-image:

bitbake console-image

Now leave it running for several hours while it downloads and builds everything from scratch including the native tools (GCC etc) as well as the ARM code for running on the Kirkwood target. Once complete the kernel and rootfs will be generated in the folder “setup-scripts/build/tmp-angstrom_2010_x-eglibc/deploy/images/netstora/”.