Embedded Debian Overview
Using Debian on embedded devices covers a wide range of possible scenarios. The 'embedded' hardware can be anything from a full-blown PC to a MMU-less thing with a few MB of RAM and flash. There is not one solution that suits all of these scenarios at once, so Embedded Debian provides infrastructure and tools to produce systems according to particular project needs.
The aim of the project is to provide: minimised Debian packages, with the same sort of consistency that Debian itself offers, but a much smaller footprint, a complete Debian-based environment in which to build and customise them, and finally complete distributions for various devices or types of devices.
It is also an open development environment to cover the multitude of possible ways of building small GNU/Linux systems. Different methodologies are appropriate depending on the resources and functionality of the target system and the development environment. Embedded Debian exists to encourage work on all possible methods that build from Debian's coherent source tree or use its multi-architecture build tools. The common thread is free software and open development. The various development threads are organised as sub-projects.
The composite method is combining previous threads to create a cross-build environment based on 'stag' for minimised Debian packages via emdebian-tools (now renamed to)emdebian-crush) to cross-build a base distribution called 'Crush', suitable for small systems including built-in package management and the 'Slind' toolchain-building methods and installer.
- Emdebian cross-build environment
Emdebian has provided a reliable ARM 2.95.3 cross-toolchain from our own CVS for several years. Now we are using the standard Debian toolchain sources and providing cross-toolchains built from them. There are too many packages to have them all in Debian proper, so we provide an aptable repository to make them easily available to developers.
The Emdebian packaging is independent of exactly how the packages will be built, but most developers will be cross-building things. One of the main thrusts of the Embedded Debian Project is to make Debian cross-buildable. This is not a trivial task - Debian is currently all natively built for good reasons. Nevertheless, the realities of embedded Development mean that cross-building is usually the most sensible way, despite the additional complexity.
Emdebian uses a modified stag build system implemented using scripts from the emdebian-tools package in Debian, which is essentially just some helpful commands based on Debian's dpkg package management system and dpkg-cross cross-building utility which makes it easy to manage packages for both the host development machine, and the target environment on one machine.
All the intricacies of package management and build dependencies are (hopefully!) taken care of for you, so all you have to do is specify the target and build or install the packages you need.
There are still areas of development where cross-building succesfully is problematic. In these cases other options such as using the scratchbox 'sandbox' environment makes sense, as well as OpenEmbedded enviroment.
Emdebian/Grip is essentially standard Debian packages optimised for size. Translations are split out into dedicated packages rather than forcing all translations onto all users, documentation and examples and similar extraneous guff is left out, and library dependencies are reduced as far as possible. It will also reduce dependencies by defaulting to not using optional components, rather than defaulting to using them, and building optional things as separate packages. The necessary packaging changes will be integrated with Debian so that we are not continually playing catch-up. We intend that supporting the emdebian environment will eventually be a requirement of Debian policy in due course.
Policy for this distribution is in the process of being defined. Feedback on whether this meets your needs is welcome. Some aspects of the policy can only be decided by experimentation to see what does and doesn't work well in the real world, so in these cases we are going ahead with something to see how it pans out. Once both the build environment and policy are sufficiently mature we can start 'Emdebianising' packages - this will need lots of community help - it's a big job but the task has been started.
An important feature of Emdebian/Crush is that it can be rebuilt from source easily, unlike standard Debian. We will ensure that all the build dependencies of a package are available, this is not always true of standard Debian, (prior to the Sarge release). At this early stage, it is not always possible but tools are under development to make this automatic.
Packages can be cross-built, or built natively, as they are for Debian, but we expect most users to be cross-building. The process will be explained in full so that you can build your own mini-Debian with particular compile options or locales relatively easily. This scheme will suit people wanting to quickly prototype a working system, and those for whom the standard Debian or Emdebian builds aren't quite what they wanted.
The best development solution depends on a whole host of factors including the GNU/Linux expertise of the developer(s), how much of a hurry they are in to demo something, the hardware, software and licensing requirements and restrictions, the development environment (Windows/GNU/Linux Cross-compiled/Native) and so on. Emdebian cannot be the best choice for all situations, but as we're not a commercial entitity, were happy to point you elsewhere if that would suit you best. See the Links page for other relevant or similar projects and tools.
The final thread of all this is documenting it. Developing a "Guide to Embedding Debian"; a comprehensive guide to getting the most (or least, depending on how you look at it) out of Debian for embedded systems is something this project has always intended to achieve. The first 3 years of Emdebian has produced minimal progress, but hopefully someone will get enthused and write down the collected expertise at some point.
In the interim and as 'your starter for 10', a Stag presentation written by Philippe de Swert has been revised and updated as an OpenOfficeorg Impress file, together with exported PDF and HTML. Neil Williams reviewed this documentation and the HTML output can be viewed as a work-in-progress.
The presentation was used at DebConf7 and used as the basis of the paper submitted to DebConf. Any part of that paper can be reused for other documentation within Emdebian and the XML source itself exists in Emdebian SVN.
This guide will cover topics such as
- Configuring and building (minimal) kernels.
- Boot and run-time kernel configuration options.
- Building minimal systems (i.e. root filesystems) in a simple and controlled manner.
- Development of cross compiler packages for Debian and other hosts.
- Debugging the kernel.
- Debugging applications.
- Where to find embedded Linux related tools.
- Setting up a build system for your own variant.
- Cross-compiling advice.
- Using Emdebsys (deprecated).
- Using Stag.
Some of this info already exists but it needs bringing together.
If you want to use the toolchains or emdebsys (deprecated) go right ahead and download them. If you want to use Emdebian then you need to read about Grip, Crush and Baked or muck in and make it happen. See the todo page for details.
If you have something which you feel would fit within Embedded Debian then do please suggest its adoption.
Back to the Emdebian Project homepage.