Hello,

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
                                    image.
        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
                                    generation.
        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].

Regards,

    Manuel

[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 via email to