Skip to the note
zecrazytux.net resource  |  note index

~ / resources / embedded intro

resource

Embedded Linux, Debian and the Openmoko project

Resource Embedded Debian Openmoko

A reading note that grew into a talk: what it means to run a full Linux system on a board the size of a business card, and why Debian is a good fit for that job.

What makes embedded different

A desktop machine hides a great deal behind its firmware and its disks. A small board exposes all of it. The bootloader must find a kernel in flash or on a card, the kernel must be told about memory and storage that are not discoverable in the usual way, and the root filesystem must fit in a limited budget.

  • Storage is often flash or a removable card rather than a rotating disk.
  • Memory is measured in megabytes, so every daemon has to justify itself.
  • Cross compilation is normal, because building on the target is too slow.

Why Debian travels well

Debian has been ported to a wide range of processor families, and its packaging rules keep a system reproducible. For an embedded build that means the same tools, the same package format and the same upgrade path as a server. A board can be brought up with a cross built kernel and a root filesystem assembled from packages, then updated the way any Debian system is updated.

The Openmoko story

Openmoko set out to build a phone that ran free software from the bootloader up, with no hidden components and no locked boot chain. It was an ambitious idea that arrived before the hardware and the market were ready for it. Even so, it pushed the conversation about software freedom in the pocket forward, and the boards are still interesting to anyone who wants to understand how a phone is put together.

Where to go from here

  • Start with a kernel and a serial console before worrying about a graphical stack.
  • Keep the root filesystem small and version controlled.
  • Document the boot chain, because it is the first thing to break and the hardest to see.

Background on the distributions and the project is listed on the resources page.