In the Emdebian vision someone wishing to build a GNU / Linux based device would:
- Port the linux kernel to their hardware (including writing any specific device drivers).
Select the prebuilt emdebian packages needed to support their application.
- Package their application as Debian package(s) using Debian and Emdebian tools.
- Build a root filesystem using Emdebian tools from the steps above.
Emdebian is involved in steps 2,3,4 above (there are far too many embedded device hardware variations to make prebuilt kernels practical).
Thus EmDebian is a binary distribution for embedded devices (whereas most of the other contenders in this space are source distributions [of course being Debian and open source the source code is still available if required].
What emdebian does
In short, what EmDebian does is wrap around the regular debian package building tools to provide a more fine grained control over package selection, size, dependencies and content to enable creation of very small and efficient debian packages for use on naturally resource limited embedded targets.
We adapt Debian tools so you can build/cross-compile Debian packages or adapted packages with info on how to cross-build and build smaller packages.
We currently have two separate distributions - a post-processed binary-compatible distribution called Emdebian Grip for intermediate installations and a much smaller, much more involved cross-built distribution called Emdebian Crush.
Emdebian is experimenting with different approaches to cross-building and small-system-friendly packages in order to produce sustainable and robust long-term solutions. For cross-building there are two main approaches: Scratchbox (pkg), which allows cross-builds to appear to be native to the apps being built, and dpkg-cross (pkg) which allows conventional cross-builds to occur in a Debian-compatible way. EmdebianSlind is a distribution built using dpkg-cross, and now we have emdebian-tools to build modified debian packages.
For package meta-data making packages more suitable for shrinking, two approaches are currently being investigated. The STAG approach uses a $(DEBIAN_DIR) directory to overlay changed info from the /debian directory, and is used by STAGE. The udeb approach of Debian-installer gives a tighter integration with Debian, with embedded packages having changed names so they can exist in the debian package namespace. Both mechanisms have pros and cons which are discussed in EmdebianMetaData.
August 17th 2006: The server has moved to a new machine in Europe instead of the US.
Frequently Asked Questions (FAQ)
Quick Start Guide
EmdebianTracker - quick notes about issues that need a fix within the Emdebian packages (issues unrelated to cross building). e.g. a postinst script that calls a binary that is not available or with an unknown option, conflicts between packages that only show up when Essential is ignored, extra dependencies needed when Essential is ignored, etc.)
EmdebianCodeAudit - coordinating a complete audit of all patches required for Emdebian Crush 1.0 to support the implementation of the patches within the relevant Debian packages.
Wiki pages in continuous devel
Domotics - Debian in X10 and other domotic standards.
EmdebianPackagingGuidelines is a document explaining to package maintainers the sorts of things they should be aware of in their packaging to make their packages 'Embedded-friendly'. This includes cross-building and small-system-building.
Embedded Debian Packaging Infrastructure explains how the Emdebian repositories are organised, where the repositories are located and how to setup your system for emdebian uploads.
Emdebian packaging rules details how emdebian packages should be built and organised.
Things that need doing are:
- Emdebianising more packages for Crush so that they
- do not install unnecessary things (docs, examples, multiple translations)
- cross-build correctly
- split packages where the default has too many dependencies
- Work on Emdebian policy and actual packages to:
- Speed up boot time
- Reduce dependencies
- Differentiate between install time and run-time dependencies
- Differentiate between build and target build-dependencies
- Shrink minimum rootfs sizes
Busybox-based rootfs as well as GNU-based EmdebianRootfs
- Dash instead of bash
- Remove perl from essential
- Work on Debian and emdebian tools to:
- Support changes due to above policy
- Push changes back into Debian as much as possible (e.g faster boot)
- Infrastructure Work:
- Completing auto-build mechansism that will keep emdebian cross-toolchains uptodate with debian toolchain versions
- Incorporate full 3-stage bootstrap changes from slind
- Auto-build emdebian packages, tracking debian versions and including support for developers to track packages which have build failures
- Making Emdebian systems
- Emdebianising new packages
- The infrastructure
- Developed Policy
- create configurations for various devices and document howto do it
- promote DEB_BUILD_OPTIONS=nodocs flag for not building docs
- promote DEB_BUILD_OPTIONS=notest for skipping tests
- co-operate with i386-uclibc team and embedded arch porters
- Kill scratchbox in its current form and make a better scratchbox2
Set-up a buildd inside scratchbox
Document setting up the buildd so developers and non-developers can try it out for themselves.
Integrate ?uclibc in the story. This will definitely give some size boost toward smaller footprint to the packages.
Once we have proven that this works start pushing things into Debian proper.
- Make sure everything works with the successors of scratchbox
- Check the ARM build of Ubuntu
There are also a few ideas that may need to be investigated further to decide whether it is a good idea to make them a new TODO item. These are collected on the EmdebianWackyIdeas page.
Donations / Donors
Meetings, Conferences, Work Sessions
May 14th - May 21st, in Mexico. DebConf6EmdebianStuff
April 12-16th, in Extremadura, Spain. DebianEmbeddedWorkSessionExtremadura2006
October 25&26th, in London, UK. London Linux World Expo
February 24&25th, in Brussels, Belgium. Fosdem2007
June 17-23rd, in Edinburgh, Scotland. DebConf7
February 23rd-24th in Brussels, Belgium http://fosdem.org/2008/
June, TCL work session
September, Extremadura Work Meeting EmdebianWorkSessionExtremadura2008
February 7th-8th in Brussels, Belgium Fosdem2009
http://en.wikipedia.org/wiki/embedded_system - Embedded systems
http://en.wikipedia.org/wiki/cross-compilation - cross compiling
http://www.netrino.com/Publications/Glossary/ - Embedded systems glossary