Debian based Filesystems with ELBE
we wrote some software to generate customized Debian rootfilesystem images.
The project is called ELBE and is available as open-source (GPLv3) .
ELBE uses debootstrap, python-apt, qemu-user-static & chroot, mtd-utils and
python-parted to generate target images. Currently amd64, armel, armhf and
i386 are tested successfully.
I'm quite sure, a lot of people wrote scripts for doing this.
We decided to describe a target by a XML file, e.g.  to ease the generation
of different images.
If you have any ideas, questions or feedback about the ELBE project, please let
In the following a short description of the basic workflow:
To ensure that the same target image can be generated again, the target image
generation is done in a defined Debian installation, typically running in KVM.
We call this machine 'initvm'. The installation of the initvm is automated by
a generated preseeding for the debian-installer. Multiple target images can be
generated on the same initvm.
To generate the target image, that is described by  just type:
$ elbe initvm create x86_64-pc-hdimg-minimal-grub-jessie.xml
This will first generate an initvm, boot the initvm in a tmux session, upload
the XML into the initvm and trigger a target image build. After the build the
build output is transferred to a directory on the Host PC with the name
'elbe-build-<TIMESTAMP>'. This directory will contain the following files:
sda.img.gz (217.90 MB) just use 'zcat sda.img.gz | dd of=/dev/sdX bs=50M'
bin-cdrom.iso (350.38 MB) this ISO image contains all Debian binary packages
that are needed to build the initvm and the target
src-cdrom.iso (951.66 MB) this ISO image contains the Debian source packages
for the binary packages on the bin-cdrom.iso.
licence.txt (986.77 KB) licence files of the Debian packages used for the
elbe-report.txt (876.20 KB) contains a lot of informations about the target
image, e.g. which file belongs to which package.
log.txt (510.69 KB) contains the output of debootstrap ... image
source.xml (58.29 KB) contains a section describing the preseeding of
the initvm, followed by the content of the input
XML file and a list of all packages installed on
the target along with their version and md5sum.
validation.txt (116 B) logs if a specified package couldn't be found
in the configured repositories.
To use the existing initvm to build another target image use:
$ elbe initvm submit armhf-ti-beaglebone-black.xml
And to regenerate the initvm and rebuild an already built target image use:
$ elbe initvm create elbe-build-<TIMESTAMP>
This is just the basic usage of elbe. We have some more features. If you are
interested you can get more detailed informations at .
fon +49 7556 452 18 96
D-88690 Uhldingen, Auf dem Berg 3