[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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) [1].

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. [2] to ease the generation
of different images.

If you have any ideas, questions or feedback about the ELBE project, please let
me know.

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 [2] 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
	                            target image.
	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 [3].



[0] http://elbe-rfs.org
[1] https://github.com/Linutronix/elbe
[2] https://github.com/Linutronix/elbe/blob/master/examples/x86_64-pc-hdimg-minimal-grub-jessie.xml
[3] http://elbe-rfs.org/docs/

Manuel Traut
Linutronix GmbH

fon +49 7556 452 18 96
D-88690 Uhldingen, Auf dem Berg 3

Reply to: