Background

Increasingly software companies, OEMs, ODMs and system integrators are adopting Linux for developing appliance-type systems. The most visible indication of this has been in the mobile market, where Android, Maemo, Moblin, MeeGo, OpenMoko, Limo, Bada, WebOS, Tizen and Ubuntu Core show leading players choosing Linux-based technologies for small form factor devices.

Perhaps less obvious is the uptake of Linux in televisions, set-top-boxes, network devices, automotive systems, aerospace, telemetry and industrial systems.

The problem

Most current Linux distribution mechanisms are not well suited to appliance-type projects, such as in embedded systems where we usually have to deal with some or all of the following characteristics:

  • Constrained CPU, memory and power
  • Limited communications bandwidth
  • Custom, limited or no user interface
  • There is no "desktop"
  • Fast boot
  • Realtime performance
  • BSP is probably customised

The current best-of-breed approaches for building constrained systems with Linux conversely miss functionality we see as critical:

  • Built-in security
  • Unattended upgrade, and possibly factory reset, in the field
  • Multi-level developer teams - OEM, System Integrator, ODM, etc.
  • Repeatability and traceability for development, integration and test
  • Fast, stable build

We believe that we need a new open source solution to meet all of these requirements. Hence Baserock.

Our solution

Baserock provides an optimised build approach for Linux-based appliance solutions specifically designed to use on projects with the above drivers. We are drawing on the upstream work and thinking done by a wide range of FOSS initiatives - particularly Linux, GNOME, Linaro, OpenEmbedded/Poky.

Design approach

We have identified a core set of steps for the kinds of systems we are targeting as follows:

  • We start with Linux, a boot loader, a file system, and the minimum set of software packages and configuration required to boot
  • then we need additional system software stacks, probably optimised for the target
  • then we need a secure way to deliver applications onto the above, both in the factory and in the field
  • and finally we need a robust way to upgrade everything in the field (for example, for security updates), and to roll back failed upgrades

We have started from the ground up, including only the components that we are sure need to be in Baserock. The immediate gaps we are addressing are

  • Minimum bootable software set
  • Field upgrade and rollback

These are addressed by

Morph - a tool to build and integrate multiple upstream open and closed source project components into chunks, strata and systems.

Trebuchet - a tool to apply these software blocks on to target devices, optimised for field upgrade, with rollback and reset.