dc7 - 1.0

DebConf7

Speakers
Wookey
Neil Williams
Schedule
Day 10
Room Basement Talk Room
Start time 11:00
Duration 01:00
Info
ID 30
Event type Lecture
Track DebConf
Language English
Feedback

Embedded Debian

Update on Embedded Debian tools and distro

This talk will cover the work of the Embedded Debian Project over the last two years to supply cross-development and distro-building tools for a Debian environment, and a corresponding mini-debian distro for embedded/small systems. The tools, mechanisms and infrastructure will be covered, and the use of the build-tools and current state of the distro demonstrated.

Embedded Debian has been working for some years on the tricky problem of generating small and embedded systems from standard Debian. Various schemes and mechanisms for building, cross-building, cross-installing, stripping out stuff, maintaining a set of differences from Debian, have been proposed and developed to varying degrees over that time. Many discussions have been held between interested parties, to try and achieve consensus on what is needed and how best to accomplish it. Over the last two years things have started to come together to the extent that emdebian is now a useful project with usable outputs.

Cross-Toolchains

The most complete current output is our set of cross-toolchains. It is now possible to build most sensible cross-toolchain combinations from the debian sources. However this cannot currently be done on the standard buildds because there is no way to specify dependencies on packages from other architectures. So Emdebian has developed scripts to do the necessary building. First compbuild (which builds on the host directly), then buildcross (which builds in chroots) and also emchain (for end-users - it only builds the 'latest' toolchain but needs no setup).

With these scripts emdebian maintains a repository of cross-tools covering gcc 3.3, 3.4, 4.0, 4.1, on stable, testing and unstable for host machines of i386 and amd64 and targets of arm, amd64, powerpc, m68k, mips, mipsel, i386. Other scan be added if anyone actually needs them. We endeavour to keep this set of tools in sync with Debian proper, although there is still work to do on automating this and making it more robust.

Emdebian Tools

The other major part of our work has been producing a set of tools for building and cross-building small packages. The current set comprises:

dpkg-cross apt-cross emsetup emchain emdebuild emlocale em_make empath

dpkg-cross has been around a long time (in Debian proper) and essentially replaces dpkg-buildpackage with a tool which is aware of the changes needed for cross-building, such as taking cached autoconf answers for tests that cannot be run at build-time in a cross environment. It also generates cross- versions of libraries and dev packages by taking the normal package and moving the libraries and headers into the correct directories for cross-building.

emsetup checks your system paths and sets it up for emdebian cross-building

emchain builds a cross-toolchain for a given target. Useful when the toolchain you want is not pre-built at emdebian.org

apt-cross makes dpkg-cross much more convenient to use by automatically downloading necessary build-dependencies and running dpkg-cross on them then installing them so that a given package can be cross-built.

emlocale separates out the various translations into a set of packages so that it is easy to install just the ones you want, and save the space tkane up by all the others.

em_make is the emdebian equivalent of dh_make. It generates changelog entries in the emdebian format, and removes doc references from the packaging. Most packages still need som e manual packaging changes for best effect.

emdebuild is the emdebian version of debuild - it cross-builds the package (using dpkg-cross) for the specified architecture.

Packages and Infrastructure

The final part of this to make it useful is relevant modifications to standard packages to make them better-suited to small system/embedded use. The emdebian changes are stored in emdebian SVN in such a way that they can be maintained or pushed upstream into Debian proper as required. Binaries are built from these modified sources using the emdebian tools.