|
|
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
to cross-build a base distribution called 'Emdebian', 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
This is essentially standard Debian optimised for size. Packages are
rebuilt with uclibc or glibc, 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 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.
Documentation
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. It is available as a
1.4Mb tarball. Neil
Williams is currently revising 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. One task within Emdebian is to incorporate this
documentation into the main website.
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.
Getting Started
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 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.
|