ELBE XML Reference

RootFileSystem type: rfs:RootFileSystemType

describes one elbe project. An elbe project contains the creation of a build environemt and the definition of a elbe target rootfilesystem.

TYPE: RootFileSystemType

includes all subelements to define the elbe project

Example

<RootFileSystemType>
  <initvm> rfs:initvm </initvm>

  <project> rfs:project </project>

  <check-image-list> rfs:check-image-list </check-image-list>

  <target> rfs:target </target>

  <archive> base64Binary </archive>

  <debootstrappkgs> rfs:fullpkg-list </debootstrappkgs>

  <initvmpkgs> rfs:fullpkg-list </initvmpkgs>

  <initvm_sources_list> rfs:string </initvm_sources_list>

  <initvm_apt_prefs> rfs:string </initvm_apt_prefs>

  <fullpkgs> rfs:fullpkg-list </fullpkgs>

  <sources_list> rfs:string </sources_list>

  <apt_prefs> rfs:string </apt_prefs>

  <elbe_version> rfs:string </elbe_version>

  <src-cdrom> rfs:src-cdrom </src-cdrom>

</RootFileSystemType>

Elements description

[attr] created dateTime
timestamp of creation of the xml file
[attr] revision rfs:revisionNr
revision of the xml file (needs to match revision of the schema)
initvm rfs:initvm optional
Configurations that are used for creating the initvm e.g. the definition of the used debian mirrors, suite and buildtype
project rfs:project optional
Configurations that are used for creating the buildenvironment and the target rootfilesystem. e.g. the definition of the used debian mirrors.
check-image-list rfs:check-image-list optional
Sequence of image to check for emulation.
target rfs:target optional
Configurations that are used to create the target rootfilesystem
archive base64Binary optional
tar.bz2 file that contains configuration files for the target rootfilesystem. To alter this node use elbe chg_archive and to get the content of this node elbe get_archive.
debootstrappkgs rfs:fullpkg-list
List of packages installed right after debootstrap
initvmpkgs rfs:fullpkg-list
List of packages installed right after debootstrap
initvm_sources_list rfs:string
apt sources list.
initvm_apt_prefs rfs:string
apt preferences list
fullpkgs rfs:fullpkg-list
List of packages with their versions installed on the RFS
sources_list rfs:string
apt sources list.
apt_prefs rfs:string
apt preferences list
elbe_version rfs:string
Elbe Version that was used in the last build of this file.
src-cdrom rfs:src-cdrom
Configurations of the source CDROM

SIMPLE TYPE: revisionNr

is used to decide if your elbe version is compatible with the given xml file

Base Type

integer

Restrictions

minInclusive 6
maxInclusive 6

TYPE: binary-url

e.g. “http://myhost/debian /” or “http://debian.org/debian main”

Example

<binary-url>
</binary-url>

Elements description

[attr] pin string
Pin-Priority of packages from this source.
[attr] package string
Packages that should be pinned.

TYPE: url

links to one additional debian mirror

Example

<url>
  <binary> rfs:binary-url </binary>

  <source> string </source>

  <raw-key> rfs:string </raw-key>

  <options> rfs:mirror-options </options>

</url>

Elements description

binary rfs:binary-url optional
e.g. “http://myhost/debian /” or “http://debian.org/debian main”
source string optional
e.g. “http://myhost/sources /” or “http://debian.org/debian main”
raw-key rfs:string optional
Raw Public Key used to sign this Repository
options rfs:mirror-options
List of options for this mirror

TYPE: url-list

links to additional debian mirrors

Example

<url-list>
  <url> rfs:url </url>

</url-list>

Elements description

url rfs:url
describes an additional debian mirror

TYPE: mirror

specify main and additional debian mirrors

Example

<mirror>
  <options> rfs:mirror-options </options>

  <primary_host> rfs:string </primary_host>

  <primary_path> rfs:string </primary_path>

  <primary_proto> rfs:string </primary_proto>

  <primary_proxy> rfs:string </primary_proxy>

  <cdrom> rfs:string </cdrom>

  <host> rfs:string </host>

  <url-list> rfs:url-list </url-list>

</mirror>

Elements description

options rfs:mirror-options
Options for the primary mirror.
primary_host rfs:string
IP address or hostname of the primary debian mirror e.g. “debian.org” without a protocol or any slash
primary_path rfs:string
base path to the debian mirror on the given host e.g. “/debian”
primary_proto rfs:string
protocol to access the primary debian mirror e.g. “http” or “ftp”
primary_proxy rfs:string
proxy to access the debian mirror e.g. “http://me:mypass@myproxy:8080
cdrom rfs:string
iso image of a cdrom/dvd with debian packages.
host rfs:string
Url of the host mirror.
url-list rfs:url-list optional
additional debian repositories, e.g. for own debian packages

TYPE: mirror-options

List of options for a mirror

Example

<mirror-options>
  <option> rfs:string </option>

</mirror-options>

Elements description

option rfs:string
e.g. trusted=yes or check-valid-until=no

TYPE: initvm

describes settings that apply to the creation of the initvm

Example

<initvm>
  <buildtype> rfs:string </buildtype>

  <mirror> rfs:mirror </mirror>

  <noauth> rfs:string </noauth>

  <preference> rfs:preference </preference>

  <suite> rfs:suite-initvm </suite>

  <pkg-list> rfs:pkg-list </pkg-list>

  <preseed> rfs:preseed </preseed>

  <size> rfs:string </size>

  <mem> rfs:memory </mem>

  <swap-size> rfs:memory </swap-size>

  <max-cpus> integer </max-cpus>

  <img> rfs:string </img>

  <portforwarding> rfs:portforwarding </portforwarding>

  <finetuning> rfs:initvm-finetuning </finetuning>

</initvm>

Elements description

buildtype rfs:string
Default buildtype like armel, ppc, and in the future armel-virtio
mirror rfs:mirror
used debian mirrors
noauth rfs:string optional
allow installation of unsigned debian packages
preference rfs:preference optional
used for pinning of all packages TODO: example?
suite rfs:suite-initvm
name of the debian suite that should be used to generate the initvm. E.g. “buster”, “bullseye”, “sid”, …
pkg-list rfs:pkg-list
additional packages that are installed into the initvm.
preseed rfs:preseed
Custom preseeding Values for apt
size rfs:string
size of the virtual harddisk used to run the build environment
mem rfs:memory
amount of memory mapped into the virtual build environment
swap-size rfs:memory
size of the virtual swap partition used in the build environment. this size is subtracted from the size of the virtual harddisk. Supports unit prefixes like GiB, GB, and G.
max-cpus integer
The number of cpus used by the initvm is clamped to this value. This shall protect the initvm from running out of memory, when running on machines with large numbers of cores. When increasing this value, be sure to also increase mem and maybe add some swap.
img rfs:string
hd image backend format: raw, qcow, vmdk, …
portforwarding rfs:portforwarding
network ports of the buildenvironment that are forwarded to the host machine
finetuning rfs:initvm-finetuning
Lists of commands to execute or files to create on the initvm at the very end after the debian-installer.

TYPE: project

describes elbe project settings that apply to the creation of the target rootfilesystem and include the definition of the build environment

Example

<project>
  <name> rfs:string </name>

  <version> rfs:string </version>

  <description> rfs:string </description>

  <buildtype> rfs:string </buildtype>

  <mirror> rfs:mirror </mirror>

  <noauth> rfs:string </noauth>

  <preference> rfs:preference </preference>

  <raw-preference> rfs:raw-preference </raw-preference>

  <suite> rfs:string </suite>

  <buildimage> rfs:buildimage </buildimage>

  <preseed> rfs:preseed </preseed>

</project>

Elements description

name rfs:string optional
name of the project this rootfilesystem is associated with
version rfs:string optional
version of the rootfilesystem definition
description rfs:string optional
human readable description of the project
buildtype rfs:string
Default buildtype like armel, ppc, and in the future armel-virtio
mirror rfs:mirror
used debian mirrors
noauth rfs:string optional
allow installation of unsigned debian packages
preference rfs:preference optional
used for pinning of all packages TODO: example?
raw-preference rfs:raw-preference optional
gets dedented and striped and is then written to /etc/apt/preferences TODO: example?
suite rfs:string
name of the debian suite that should be used to generate the buildenvironment and the rootfilesystem. E.g. “bullseye”, “bookworm”, “sid”, …
buildimage rfs:buildimage optional
reference to the buildimage which is used to generate the rootfilesystem
preseed rfs:preseed
Custom preseeding Values for apt

TYPE: check-image-list

Describes a sequence of check to be done on images.

Example

<check-image-list>
  <check> rfs:check-img </check>

</check-image-list>

Elements description

check rfs:check-img
FIXME - I have no documentation

TYPE: check-img

Name of the image in the build to emulate. Image that were .tgz are also accepted.

Example

<check-img>
  <img> rfs:string </img>

  <interpreter> rfs:string </interpreter>

  <interpreter-opts> rfs:string </interpreter-opts>

  <action> rfs:check-img-action </action>

</check-img>

Elements description

img rfs:string
Name of the image in the build to emulate. Image that were .tgz are also accepted.
interpreter rfs:string
Name of the interpreter to use for the emulation. e.g., qemu-system-x86_64 or qemu-system-ppc, etc.
interpreter-opts rfs:string

Options to pass to the interpreter. e.g., -enable-kvm or -drive format=raw,file=$ELBE_IMG or -hda $ELBE_IMG

Word expansion is done before passing it to the
interpreter.  You can safely assume that the environment
variable ELBE_IMG contains the absolute path to the target
image to emulate.
action rfs:check-img-action
Action to be done on the target image to emulate.

TYPE: check-img-action

Action to perform on the images of a build.

Example

<check-img-action>
  <login> rfs:string </login>

  <serial> rfs:serial </serial>

</check-img-action>

Elements description

login rfs:string
Try to login into root session and shutdown the machine. The element takes an (optional) plain-text password for root. Default password is “root”.
serial rfs:serial
Serial communication to do with the interpreter. This requires -serial stdio for QEMU’s interpreters.

TYPE: serial

Describes a communication to do over a serial line. The communication is done sequentially as it.

Example

<serial>
</serial>

Elements description

GROUP : serial-action

Definition of possible action on serial communication.

expect type: rfs:string

A regular expression to expect to receive on the line.

sendline type: rfs:string

Send a string terminated with a newline character on the line.

EOF type: rfs:string

Expect the connecion to be closed. This should only be the last item in the sequence.

SIMPLE TYPE: suite-initvm

FIXME - I have no documentation

Base Type

string

Restrictions

enumeration sid
enumeration bullseye

TYPE: preference

describes a global pinning of debian packages

Example

<preference>
</preference>

Elements description

[attr] pin string
TODO: format?

TYPE: raw-preference

content is directly written to /etc/apt/preferences.

Example

<raw-preference>
</raw-preference>

Elements description

TYPE: buildimage

definition of the build environment

Example

<buildimage>
  <arch> rfs:string </arch>

  <size> rfs:string </size>

  <interpreter> rfs:string </interpreter>

  <interpreterversion> rfs:string </interpreterversion>

  <kinitrd> rfs:string </kinitrd>

  <console> rfs:string </console>

  <machine> rfs:string </machine>

  <triplet> rfs:string </triplet>

  <NIC> rfs:NIC </NIC>

  <portforwarding> rfs:portforwarding </portforwarding>

  <pkgversionlist> rfs:string </pkgversionlist>

  <pkg-list> rfs:pkg-list </pkg-list>

</buildimage>

Elements description

arch rfs:string
architecture of the target system. e.g. “amd64”, “armel”, “ppc”, ..
size rfs:string
size of the virtual harddisk used to run the build environment
interpreter rfs:string
virtual machine interpreter, e.g. “kvm”, “qemu-system-arm”, …
interpreterversion rfs:string
virtual machine interpreter version, no longer in use
kinitrd rfs:string
pkg name of the initrd/kernel package. (obsolete and ignored)
console rfs:string
serial console of the virtual machine, e.g. “ttyAMA0,115200n1”
machine rfs:string
virtual platform to host the build environment, e.g. “versatilepb”
triplet rfs:string
The triplet that is used to generate the SDK environment.
NIC rfs:NIC
network interface emulation
portforwarding rfs:portforwarding
network ports of the buildenvironment that are forwarded to the host machine
pkgversionlist rfs:string
create /etc/elbe_pkglist on the target RFS. It includes all packages that include files that are used in the target. The list also contains the versions of the used packages.
pkg-list rfs:pkg-list
additional packages that are only installed into the build environment; not into the target root filesystem.

TYPE: memory

Helper around memory_restriction to allow XML base attribute

Example

<memory>
</memory>

Elements description

SIMPLE TYPE: memory_restriction

Memory can be specified using binary unit prefixes like MiB and GiB, or SI prefixes like GB,MB or simply G or M.

Base Type

string

Restrictions

patt ern*

(d+(k M G kB MB GB kiB MiB Gi B)?)

TYPE: NIC

describes a virtual network interface

Example

<NIC>
  <model> rfs:string </model>

  <MAC> rfs:string </MAC>

</NIC>

Elements description

model rfs:string
hardware emulation of the network interface; e.g. “e1000”
MAC rfs:string
mac address of the virtual network interface

TYPE: fw_proto

Helper around fw_proto_restriction to allow XML base attribute

Example

<fw_proto>
</fw_proto>

Elements description

SIMPLE TYPE: fw_proto_restriction

only tcp and udp are allowed protocols for forwarding

Base Type

string

Restrictions

enumeration tcp
enumeration udp

TYPE: forward

forward a network port from the build environment to the host machine

Example

<forward>
  <proto> rfs:fw_proto </proto>

  <buildenv> integer </buildenv>

  <host> integer </host>

</forward>

Elements description

proto rfs:fw_proto
network protocol to forward either “udp” or “tcp”
buildenv integer
port on the buildenvironment, e.g. “22” for ssh
host integer
port on the host machine, e.g. “10022”

TYPE: portforwarding

forward network ports from the build environment to the host machine

Example

<portforwarding>
  <forward> rfs:forward </forward>

</portforwarding>

Elements description

forward rfs:forward
describes a single port forward

TYPE: target

configuration of the target rootfilesystem

Example

<target>
  <hostname> rfs:string </hostname>

  <domain> rfs:string </domain>

  <passwd_hashed> rfs:string </passwd_hashed>

  <console> rfs:string </console>

  <debootstrap> rfs:debootstrap </debootstrap>

  <package> rfs:package </package>

  <images> rfs:images </images>

  <fstab> rfs:fstab </fstab>

  <tighten> rfs:string </tighten>

  <diet> rfs:string </diet>

  <setsel> rfs:string </setsel>

  <install-recommends> rfs:string </install-recommends>

  <finetuning> rfs:finetuning </finetuning>

  <project-finetuning> rfs:project-finetuning </project-finetuning>

  <pbuilder> rfs:pbuilder </pbuilder>

  <pkg-list> rfs:pkg-list </pkg-list>

  <pkg-blacklist> rfs:blacklist </pkg-blacklist>

  <hostsdk-pkg-list> rfs:pkg-list </hostsdk-pkg-list>

</target>

Elements description

hostname rfs:string
hostname of the system
domain rfs:string
domainname of the network the target system is part of
passwd_hashed rfs:string
Hashed root password. The method must be supported by the target system. The default method since bullseye is yescrypt. elbe preprocess generates one from cleartext password with sha512crypt for compatibility reasons. You can generate a crypt hash via mkpasswd from whois package, e.g.: mkpasswd –method=sha512crypt –rounds=656000
console rfs:string
serial console for getty
debootstrap rfs:debootstrap
Bootstrap configuration
package rfs:package
package rootfilesystem as a tarball, cpio or a squashfs image
images rfs:images
generate (flashable) images of the rootfilesystem
fstab rfs:fstab
specify which resources should be mounted
tighten rfs:string optional
don’t install any dependencies; just the content of the given debian packages
diet rfs:string optional
use reverse dependencies of the given debian packages to determine the rootfilesystem content; this is useful to get rid of dpkg/apt.
setsel rfs:string optional
Elbe uses dpkg --set-selections to install packages in the target. The rootfs still needs dpkg, and all dependencies need to be specified in the pkg-list. The target will contain all postinst generated scripts.
install-recommends rfs:string optional
Activate the installation of recommended Packages.
finetuning rfs:finetuning optional
apply the given commands to the target rootfilesystem
project-finetuning rfs:project-finetuning optional

apply the given commands to the project directory, after images have been generated. Currently supported use-cases are:

  • extract partition from image and mark as build artifact.
  • mark files as build artifacts
  • mv files from target directory to project directory
pbuilder rfs:pbuilder
build and optionaly install debianized sources
pkg-list rfs:pkg-list
install the given packages into the rootfilesystem
pkg-blacklist rfs:blacklist
avoid installation of packages into sysroot or target
hostsdk-pkg-list rfs:pkg-list
install the given packages into the hostsdk. (ignores pin and versions, with the current implementation)

TYPE: debootstrap_variant

Helper around debootstrap_variant_restriction to allow XML base attribute

Example

<debootstrap_variant>
</debootstrap_variant>

Elements description

SIMPLE TYPE: debootstrap_variant_restriction

Restrict the possible debootstrap variants

Base Type

string

Restrictions

enumeration minbase
enumeration buildd
enumeration fakechroot

TYPE: debootstrap

Container for debootstrap configuration.

Example

<debootstrap>
  <variant> rfs:debootstrap_variant </variant>

  <include> string </include>

  <exclude> string </exclude>

</debootstrap>

Elements description

variant rfs:debootstrap_variant

Name of the bootstrap script variant to use. The following variants are supported:

  • minbase: required packages and apt.
  • buildd: build-essential packages.
  • fakechroot: installs the packages without root privileges.
include string
Comma separated list of packages which will be added to download and extract lists.
exclude string
Comma separated list of packages which will be removed from download and extract lists. WARNING: you can and probably will exclude essential packages, be careful using this option.

TYPE: ubi_type

Helper around ubi_type_restriction to allow XML base attribute

Example

<ubi_type>
</ubi_type>

Elements description

SIMPLE TYPE: ubi_type_restriction

a ubi volume can be either static or dynamic

Base Type

string

Restrictions

enumeration static
enumeration dynamic

TYPE: ubi

describes a ubi volume

Example

<ubi>
  <type> rfs:ubi_type </type>

  <label> rfs:string </label>

  <id> integer </id>

  <size> rfs:part_size </size>

  <binary> rfs:string </binary>

  <empty> rfs:string </empty>

</ubi>

Elements description

type rfs:ubi_type
type of the ubi volume; either “static” or “dynamic”
label rfs:string
human readable name of the ubi volume (also used for mount by label)
id integer
id of the ubi volume
size rfs:part_size
size of the ubi volume
binary rfs:string
path and filename of a binary image which will be used as a source for this volume; this can be used for example to store the linux kernel in a static ubi volume
empty rfs:string
if binary is used or a label was given that is also available in the fstab this tag can be used to force the creation of an empty ubi volume.

TYPE: ubivg

container for all ubi volumes of a mtd device

Example

<ubivg>
  <label> rfs:string </label>

  <miniosize> rfs:string </miniosize>

  <maxlogicaleraseblockcount> rfs:string </maxlogicaleraseblockcount>

  <logicaleraseblocksize> rfs:string </logicaleraseblocksize>

  <physicaleraseblocksize> rfs:string </physicaleraseblocksize>

  <subpagesize> rfs:string </subpagesize>

  <ubi> rfs:ubi </ubi>

</ubivg>

Elements description

label rfs:string
human readable name; used to generate filename for the flashable image file
miniosize rfs:string
flash parameter minimal i/o size
maxlogicaleraseblockcount rfs:string
flash parameter maximum logical erase block count
logicaleraseblocksize rfs:string
flash parameter logical erase block size
physicaleraseblocksize rfs:string
flash parameter physical erase block size
subpagesize rfs:string
flash parameter subpagesize
ubi rfs:ubi
list of ubi volumes

TYPE: mtd

describes a mtd device

Example

<mtd>
  <name> rfs:string </name>

  <nr> integer </nr>

  <size> rfs:part_size </size>

  <binary> rfs:string </binary>

  <ubivg> rfs:ubivg </ubivg>

</mtd>

Elements description

name rfs:string
human readable name of the mtd device
nr integer
number of the mtd device
size rfs:part_size
size of the mtd device
binary rfs:string
path and filename of a binary image which will be used as a source for this mtd device; this can be used for example to store the bootloader in the beginning of the flash (mtd0)
ubivg rfs:ubivg
if the mtd will be used to store ubi volumes, this container is used to define them

TYPE: gpthd

describes a harddisk

Example

<gpthd>
  <name> rfs:string </name>

  <size> rfs:part_size </size>

  <first_partition_sector> rfs:part_size </first_partition_sector>

  <grub-install> rfs:string </grub-install>

  <binary> rfs:binaryblob </binary>

  <partition> rfs:partition </partition>

</gpthd>

Elements description

name rfs:string
human readable name of the harddisk, this will be used as name for the image file
size rfs:part_size
size of the harddisk
first_partition_sector rfs:part_size
Starting sector for the first partition
grub-install rfs:string
Installs grub on this harddisk. The text content will be used as additional command line arguments to Elbe’s grub-install call.
binary rfs:binaryblob
binary blob that is dd’ed to the specified offset
partition rfs:partition
Partition Entries of this harddisk

TYPE: binaryblob

a binary that is dd’ed to the specified offset. If path starts with a /, the binary blob will be interpreted as relative to target root. Otherwise, the path will be interpreted as being relative to the corresponding elbe project.

Example

<binaryblob>
</binaryblob>

Elements description

[attr] offset int
byteoffset from the beginning of the image
[attr] blocksize int
blocksize in bytes for the bytewise copy (default 1)

TYPE: msdoshd

describes a harddisk

Example

<msdoshd>
  <name> rfs:string </name>

  <size> rfs:part_size </size>

  <first_partition_sector> rfs:part_size </first_partition_sector>

  <grub-install> rfs:string </grub-install>

  <binary> rfs:binaryblob </binary>

  <partition> rfs:partition </partition>

  <extended> rfs:extended </extended>

  <partition> rfs:partition </partition>

</msdoshd>

Elements description

name rfs:string
human readable name of the harddisk, this will be used as name for the image file
size rfs:part_size
size of the harddisk
first_partition_sector rfs:part_size
Starting sector for the first partition
grub-install rfs:string
Installs grub on this harddisk. The text content will be used as additional command line arguments to Elbe’s grub-install call.
binary rfs:binaryblob
binary blob that is dd’ed to the specified offset
partition rfs:partition
Partition Entries of this harddisk (max: 4)
extended rfs:extended
Extended Partition Entries of this harddisk (max: 1)
partition rfs:partition
Partition Entries of this harddisk (max: 3)

TYPE: images

container for all storage devices of the target

Example

<images>
  <mtd> rfs:mtd </mtd>

  <msdoshd> rfs:msdoshd </msdoshd>

  <gpthd> rfs:gpthd </gpthd>

  <passno> rfs:string </passno>

</images>

Elements description

mtd rfs:mtd
container for all mtd devices of the target
msdoshd rfs:msdoshd
container for Harddisks with msdos Partitionlabel.
gpthd rfs:gpthd
container for Harddisks with GPT Partitionlabel
passno rfs:string
passno order for fsck

TYPE: fs

description of a linux filesystem

Example

<fs>
  <type> rfs:fs_type </type>

  <mkfs> rfs:string </mkfs>

  <fs-finetuning> rfs:fs-finetuning </fs-finetuning>

  <passno> rfs:string </passno>

</fs>

Elements description

type rfs:fs_type
filesystemtype, e.g. “ext3”, “ubifs”, …
mkfs rfs:string
options passed to the mkfs command
fs-finetuning rfs:fs-finetuning
apply the given commands to the filesystem
passno rfs:string
passno order for fsck

TYPE: bylabel

mount storage by the label of the partition or volume

Example

<bylabel>
  <label> rfs:string </label>

  <mountpoint> rfs:string </mountpoint>

  <fs> rfs:fs </fs>

  <options> rfs:string </options>

  <nofstab> rfs:empty </nofstab>

</bylabel>

Elements description

label rfs:string
label of the partition/volume to mount
mountpoint rfs:string
path in the rootfilesystem where the partition/volume is mounted
fs rfs:fs
filesystem of the partition/volume to mount
options rfs:string
options passed to the mount command
nofstab rfs:empty
This mountpoint shall not be inserted into fstab. Useful for redundant filesystems, where two entries with identical mountpoint would end up in the fstab.

TYPE: bydev

mount virtual filesystems or other storage devices device-node

Example

<bydev>
  <source> rfs:string </source>

  <mountpoint> rfs:string </mountpoint>

  <fs> rfs:fs </fs>

  <options> rfs:string </options>

</bydev>

Elements description

source rfs:string
either a device-node or “none” for virtual filesystems
mountpoint rfs:string
path in the rootfilesystem where the device or virtual filesystem is mounted
fs rfs:fs
filesystem of the device or the virtual filesystem name
options rfs:string
options passed to the mount command

TYPE: fstab

container for mounts

Example

<fstab>
  <bylabel> rfs:bylabel </bylabel>

  <bydev> rfs:bydev </bydev>

</fstab>

Elements description

bylabel rfs:bylabel
describes a mount by a volume or partition label
bydev rfs:bydev
describes a mount based on a device node or a mount of a virtual filesystem like debugfs or tmpfs

TYPE: fs-finetuning

container for filesystem finetuning commands; these commands are executed directly after the filesystem was created.

Example

<fs-finetuning>
</fs-finetuning>

Elements description

GROUP : fs-action

definition of filesystem finetuning commands

device-command type: rfs:string

execute the defined command in /bin/sh. The command is being executed before the filesystem.

path-command type: rfs:string

execute the defined command in /bin/sh. The command is being executed after the filesystem is mounted to.

TYPE: package

list of packages, each contains the hole rootfilesystem

Example

<package>
  <tar> rfs:tar </tar>

  <cpio> rfs:cpio </cpio>

  <squashfs> rfs:squashfs </squashfs>

</package>

Elements description

tar rfs:tar optional
tar package of the rootfilesystem
cpio rfs:cpio optional
cpio package of the rootfilesystem
squashfs rfs:squashfs optional
squashfs image of the rootfilesystem

TYPE: tar

describes a tar package

Example

<tar>
  <name> rfs:string </name>

  <options> rfs:string </options>

</tar>

Elements description

name rfs:string optional
filename of the tar package
options rfs:string optional
options passed to the tar command

TYPE: cpio

describes a cpio package

Example

<cpio>
  <name> rfs:string </name>

</cpio>

Elements description

name rfs:string optional
filename of the cpio package

TYPE: squashfs

describes a squashfs image

Example

<squashfs>
  <name> rfs:string </name>

  <options> rfs:string </options>

</squashfs>

Elements description

name rfs:string optional
filename of the squashfs image
options rfs:string optional
options passed to the mksquashfs command

TYPE: partition

describes a partition of a harddisk

Example

<partition>
  <size> rfs:part_size </size>

  <label> rfs:string </label>

  <name> rfs:string </name>

  <binary> rfs:string </binary>

  <bootable> rfs:string </bootable>

  <biosgrub> rfs:string </biosgrub>

</partition>

Elements description

size rfs:part_size
size of the partition
label rfs:string
human readable label of the partition used for mount by label and as filename for the flashable image
name rfs:string
human readable name of the partition used for naming a gpt partition
binary rfs:string optional
path and filename of a binary image which will be used as a source for this volume; this can be used for example to store a bootloader in a partition.
bootable rfs:string optional
Whether this partition is marked bootable.
biosgrub rfs:string optional
Whether this partition is marked as biosgrub partition.

TYPE: extended

describes a extended partition of a harddisk

Example

<extended>
  <size> rfs:part_size </size>

  <logical> rfs:partition </logical>

</extended>

Elements description

size rfs:part_size
size of the partition
logical rfs:partition
logical partition of this extended partition

TYPE: part_size

Helper around part_size_restriction to allow XML base attribute

Example

<part_size>
</part_size>

Elements description

SIMPLE TYPE: part_size_restriction

format of the partition size

Base Type

string

Restrictions

pa tte rn (d +(k M G kB MB GB kiB MiB Gi B)? r ema in)

TYPE: part_nr

Helper around part_nr_restriction to allow XML base attribute

Example

<part_nr>
</part_nr>

Elements description

SIMPLE TYPE: part_nr_restriction

allow maximum 4 primary partitions

Base Type

integer

Restrictions

minInclusive 1
maxInclusive 4

TYPE: part_type

Helper around part_type_restriction to allow XML base attribute

Example

<part_type>
</part_type>

Elements description

SIMPLE TYPE: part_type_restriction

list of supported partition types

Base Type

string

Restrictions

enumeration linux
enumeration swap

TYPE: fs_type

Helper around fs_type_restriction to allow XML base attribute

Example

<fs_type>
</fs_type>

Elements description

SIMPLE TYPE: fs_type_restriction

list of supported filesystems

Base Type

string

Restrictions

enumeration ext2
enumeration ext3
enumeration ext4
enumeration ubifs
enumeration tmpfs
enumeration debugfs
enumeration configfs
enumeration devpts
enumeration proc
enumeration sysfs
enumeration vfat
enumeration btrfs
enumeration devtmpfs
enumeration swap

TYPE: initvm-finetuning

container for initvm-finetuning actions; these actions are executed at the end of the init-elbe.sh script in the target.

Example

<initvm-finetuning>
  <command> rfs:string </command>
</initvm-finetuning>

Elements description

GROUP : initvm-action

definition of initvm-finetuning actions

command type: rfs:string

execute a shell command in the target

TYPE: finetuning

container for finetuning commands; these commands are executed in the root of the target filesystem after the target filesystem was created

Example

<finetuning>
  <addgroup> rfs:addgroup </addgroup>
  <adduser> rfs:adduser </adduser>
  <file> rfs:file </file>
  <rm> rfs:rm </rm>
  <cp> rfs:cpmv </cp>
  <ln> rfs:cpmv </ln>
  <buildenv_cp> rfs:cpmv </buildenv_cp>
  <b2t_cp> rfs:cpmv </b2t_cp>
  <t2b_cp> rfs:cpmv </t2b_cp>
  <mv> rfs:cpmv </mv>
  <buildenv_mv> rfs:cpmv </buildenv_mv>
  <t2p_mv> rfs:cpmv </t2p_mv>
  <mkdir> rfs:string </mkdir>
  <buildenv_mkdir> rfs:string </buildenv_mkdir>
  <mknod> rfs:mknod </mknod>
  <purge> rfs:string </purge>
  <raw_cmd> rfs:string </raw_cmd>
  <command> rfs:string </command>
  <buildenv_command> rfs:string </buildenv_command>
  <updated> rfs:string </updated>
  <artifact> rfs:string </artifact>
  <rm_apt_source> rfs:string </rm_apt_source>
</finetuning>

Elements description

GROUP : action

definition of finetuning commands

addgroup type: rfs:addgroup

add a group by name

adduser type: rfs:adduser

add a user account by login name

file type: rfs:file

write or append text to a file

rm type: rfs:rm

remove a file or directory (recursive). Also allows specifying an exclude pattern.

cp type: rfs:cpmv

copy a file or directory (recursive)

ln type: rfs:cpmv

create a symbolic link

buildenv_cp type: rfs:cpmv

copy a file or directory (recursive)

b2t_cp type: rfs:cpmv

copy a file or directory (recursive)

t2b_cp type: rfs:cpmv

copy a file or directory (recursive)

mv type: rfs:cpmv

move a file or directory

buildenv_mv type: rfs:cpmv

move a file or directory

t2p_mv type: rfs:cpmv

move a file from the target to the project directory

mkdir type: rfs:string

create a directory

buildenv_mkdir type: rfs:string

create a directory

mknod type: rfs:mknod

move a file or directory

purge type: rfs:string

purge a debian package out of the rootfilesystem

raw_cmd type: rfs:string

execute the defined command

command type: rfs:string

execute the defined command in /bin/sh

buildenv_command type: rfs:string

execute the defined command

updated type: rfs:string

include the base debian repository in the target rfs to enable downgrades via elbe-updated

artifact type: rfs:string

make the named file an artifact. The path is relative to the target root.

rm_apt_source type: rfs:string

remove the specified source from the sources.list on the target

TYPE: project-finetuning

container for project-finetuning commands; these commands are executed in the project directory, after the images have been generated.

Example

<project-finetuning>
  <t2p_mv> rfs:cpmv </t2p_mv>
  <artifact> rfs:string </artifact>
  <rm_artifact> rfs:string </rm_artifact>
  <losetup> rfs:losetup </losetup>
  <img_convert> rfs:img_convert </img_convert>
  <set_packer> rfs:set_packer </set_packer>
  <unit-tests> rfs:unit-tests </unit-tests>
</project-finetuning>

Elements description

GROUP : project-action

definition of finetuning commands

t2p_mv type: rfs:cpmv

move a file from the target to the project directory

artifact type: rfs:string

make the named file an artifact. The path is relative to the project directory.

rm_artifact type: rfs:string

remove a project artifact from the list of artifacts.

losetup type: rfs:losetup

Setup the loop device with an image file. This node wraps image_finetuning Actions, which access the loop device then.

img_convert type: rfs:img_convert

Convert a Partitionimage to another format. The new Image is added to the list of artifacts.

set_packer type: rfs:set_packer

Specify the packer to use for an artifact.

unit-tests type: rfs:unit-tests

Allows to generate test suites for the project.

TYPE: losetup

Container for image_finetuning commands; these commands are executed in the project directory, while a drive image is setup as a loop device. The loop device id is passed to the individual actions.

Example

<losetup>
  <extract_partition> rfs:extract_partition </extract_partition>
  <copy_from_partition> rfs:copy_from_partition </copy_from_partition>
  <copy_to_partition> rfs:copy_to_partition </copy_to_partition>
  <set_partition_type> rfs:set_partition_type </set_partition_type>
  <command> rfs:partition-command </command>
</losetup>

Elements description

[attr] img string
Name of the image artifact that would be used for loop mounting.

GROUP : image_action

definition of image finetuning commands

extract_partition type: rfs:extract_partition

Extract a Partition from the currently mounted loop device.

copy_from_partition type: rfs:copy_from_partition

Copy a file from a partition. The partition is mounted, and the file is then copied from the mounted filesystem into the builddir. Its marked as an Artifact.

copy_to_partition type: rfs:copy_to_partition

Copy an artifact onto a partition. The partition is mounted, and the file is then copied into the mounted filesystem.

set_partition_type type: rfs:set_partition_type

Set the type of a partition via fdisk. (to support esoteric partition types, that parted does not support.)

command type: rfs:partition-command

Execute a command with a partition mounted. Before the comand is executed, the environment variable ELBE_MNT is set to the absolute filepath to the mount point.

TYPE: extract_partition

Describe the partition to be extracted (nr) and the destination filename. The value of the tag describes the filename of the generated Imagefile. The Image is per default compressed with gzip afterwards.

Example

<extract_partition>
</extract_partition>

Elements description

[attr] part integer
The partition of the rfs image in integer that needs to be extracted.

TYPE: partition-command

The tag’s text node should be valid shell commands.

Example

<partition-command>
</partition-command>

Elements description

[attr] part integer
This is the device partition number.
[attr] nomount boolean
If true, device will not be mounted.

TYPE: copy_from_partition

Using “copy_from partition”, the user gets an opportunity to copy a file from a partition and save it as an atrifact in the build output. This element’s content is the file’s path mentioned in the “part” partition.

Example

<copy_from_partition>
</copy_from_partition>

Elements description

[attr] part integer
Describes the partition to which the required file belongs.
[attr] artifact string
The name of the file that needs to be extracted is termed as an “artifact”.

TYPE: copy_to_partition

It copies the artifact to a given partition that will be mounted. Please note that this element’s value is destination’s path in “part” partition.

Example

<copy_to_partition>
</copy_to_partition>

Elements description

[attr] part integer
Describes the partition number that the required file is copied to.
[attr] artifact string
The name of the file that is copied to the destination is termed as “artifact”

TYPE: set_partition_type

Sets the partition type of a particular partition to the specified type for disk labels. When changing partition type, it asks user the partition number in case of many partitions, and then the type.

Example

<set_partition_type>
</set_partition_type>

Elements description

[attr] part integer
Describes the partition to be modified in integer.
[attr] type string
Describes the numerical partition id, as understood by fdsik. It is the “partition type” and can be a numerical id or a textual alias for it.

TYPE: addgroup

describes an additional user group to be created. the following parameters are available: gid - group id. ‘system = “True” - system group. The value of the tag describes the group name for the account.

Example

<addgroup>
</addgroup>

Elements description

[attr] gid string
Describes the numerical value of group’s ID. Since the type is string, this can be a numerical or textual alias
[attr] system boolean
It needs to be True by default to create a new system group. This makes it possible to have the system groups chosen in the range of SYS_GID_MIN-SYS_GID_MAX.

TYPE: img_convert

Gives an opportunity to convert the image to a specific format. The Image is by default compressed with gzip afterwards. The value of the tag describes the name of the image.

Example

<img_convert>
</img_convert>

Elements description

[attr] dst string
Describes the filename of the converted image file.
[attr] fmt string
Describes the format which image file needs to be converted to. Please check supported formats section in “qemu-img –help”.
[attr] keep_src boolean
If set to true the original image file is kept.

TYPE: set_packer

Set the packer to use for an artifact. The value of the tag describes the filename of the Imagefile.

Example

<set_packer>
</set_packer>

Elements description

[attr] packer rfs:packer-type
Describes the compressor for the resulting image from the following values:(none, gzip, zstd, tar, targz, tarxz, tarzstd).

SIMPLE TYPE: packer-type

FIXME - I have no documentation

Base Type

string

Restrictions

enumeration none
enumeration gzip
enumeration zstd
enumeration tar
enumeration tarxz
enumeration targz
enumeration tarzstd

TYPE: file

Gives opportunity to write, append, encode data to a specific file on the target image, change permissions, owner and group of file. The value of the tag is the raw/encoded content to write/append to the destination.

Example

<file>
</file>

Elements description

[attr] dst string
This defines the destination to write to.
[attr] encoding string
This is an optional attribute for encoding of the content. Please note that available encoding options are plain, raw and base64.
[attr] append boolean
If true, appends the content to file instead of writing.
[attr] owner string
This sets the file owner to the file given in dst attribute.
[attr] group string
This sets group ownership for the file given in dst attribute.
[attr] mode string
This sets file permission using mode bits.

TYPE: adduser

Adds an additional user account for the rfs. It creates a new user or updates the default new user information. The value of the tag defines the name of the user to be added.

Example

<adduser>
</adduser>

Elements description

[attr] shell string
This specifies the login shell for the user.
[attr] passwd_hashed string
This is an optional attribute for hashed password for the user.
[attr] groups string
This is a comma separated list of groups the user is member of.
[attr] uid string
This gives user id for the required user.
[attr] gid string
This is an optional attribute for primary group, may be numeric or a name.
[attr] home string
The new user will be created using this value as a home directory. This can be used as user’s login directory.
[attr] system boolean
This needs to be True by default to create a new system account.
[attr] create_home boolean
This needs to be False to not create a home directory.
[attr] create_group boolean
This needs to be “False” to not create a group with same name as the user.

TYPE: cpmv

Copies or moves a file within the root file system. The tag’s text node is the destination path where file needs to be moved or copied to.

Example

<cpmv>
</cpmv>

Elements description

[attr] path string
This attribute is a source file that needs to be copied to the destination file.

TYPE: rm

Remove a file or directory from the target. The tag’s text node matches on the absolute location of the file to be deleted.

Example

<rm>
</rm>

Elements description

[attr] exclude string
This sets an exclude pattern that will not be deleted.

TYPE: mknod

Describes a mknod operation in finetuning to make block or character special files. The value of tag’s text node is the special block or character file on which mknod needs to be operated.

Example

<mknod>
</mknod>

Elements description

[attr] opts string
This attribute makes node of type, major number, minor number for a given file.

TYPE: git_src

The value of this tag is the URI of the git repository, e.g. “git://myhost/myrepo.git”.

Example

<git_src>
</git_src>

Elements description

[attr] revision string
This attribute describes the revision to be checked out from the git tree.

TYPE: svn_src

The value of this tag is the URI of the svn repository, e.g. “svn://myhost/myrepo/tags/my_tag”.

Example

<svn_src>
</svn_src>

Elements description

[attr] revision string
This attribute gives the revision to be checked out from the given svn repository.

TYPE: pkg

describes a debian binary package

Example

<pkg>
</pkg>

Elements description

[attr] pin string
prefer the defined version of the debian package
[attr] version string
version of the package
[attr] auto boolean
installed automatically as a dependency
[attr] md5 string
md5 sum of the package.
[attr] sha256 string
sha256 sum of the package.
[attr] prio string
priority of the package in the original repository.
[attr] on_src_cd string
If set to “False” the source will not be included on the source cdrom.

TYPE: pbuilder

reference to debian source packages

Example

<pbuilder>
  <src-pkg> rfs:string </src-pkg>

  <git> rfs:git_src </git>

  <svn> rfs:svn_src </svn>

</pbuilder>

Elements description

src-pkg rfs:string
reference to a debian source package from a deb-src archive. The source will be built with a pbuilder before the image generation.
git rfs:git_src
reference to a git tree hosting a debian source package. The source will be built with a pbuilder before the image generation.
svn rfs:svn_src
reference to a svn repository hosting a debian source package. The source will be built with a pbuilder before the image generation.

TYPE: pkg-list

container of debian packages

Example

<pkg-list>
  <pkg> rfs:pkg </pkg>

</pkg-list>

Elements description

pkg rfs:pkg
reference to a binary debian package which will be installed from the given mirrors into the target rootfilesystem.

TYPE: blacklist

blacklists of debian packages

Example

<blacklist>
  <sysroot> rfs:pkg-list </sysroot>

</blacklist>

Elements description

sysroot rfs:pkg-list
avoid installing the specified packages into the sysroot

TYPE: fullpkg-list

List of packages to be validated against the installed list.

Example

<fullpkg-list>
  <pkg> rfs:pkg </pkg>

</fullpkg-list>

Elements description

pkg rfs:pkg
Reference to a binary debian package which is supposed to be installed.

TYPE: conf

describes a preseeding entry

Example

<conf>
</conf>

Elements description

[attr] owner string
owner package of the config entry
[attr] key string
key name of the entry
[attr] type string
type of the config entry
[attr] value string
value of the config entry

TYPE: preseed

container of config entries

Example

<preseed>
  <conf> rfs:conf </conf>

</preseed>

Elements description

conf rfs:conf
A config entry

TYPE: empty

This element just acts like a flag. It might be there, or not.

Example

<empty>
</empty>

Elements description

TYPE: string

E.L.B.E. standard string. Allow XML base attribute.

Example

<string>
</string>

Elements description

TYPE: unit-tests

Sequence of test suites. The required attribute dst is the name of the file where the Junit XML file will be dump relative to the project directory.

Example

<unit-tests>
  <test-suite> rfs:test-suite </test-suite>

</unit-tests>

Elements description

test-suite rfs:test-suite
FIXME - I have no documentation

TYPE: test-suite

A test suite is a sequence of test cases. The required attribute name is the a human readable identifier for the test suite. The value of this tag consists of the test registers defined in elbepack/junit.py to be performed for the specific files.

Example

<test-suite>
  <file-exists> rfs:string </file-exists>
</test-suite>

Elements description

[attr] name string
This attribute describes the name of the test suite.

GROUP : test-case

A test-case is a choice of a test to make on the target fs.

file-exists type: rfs:string

Verify that a file exists.

TYPE: src-cdrom

Configuration of the src-cdrom

Example

<src-cdrom>
  <size> rfs:memory </size>

  <src-opts> rfs:iso-opts </src-opts>

  <archive> rfs:src-cdrom-archive </archive>

</src-cdrom>

Elements description

size rfs:memory
The size limit for each source cdrom ISO image. The files are distributed on several cdroms as needed. Omitting this element means no size limit.
src-opts rfs:iso-opts
Options for the source cdrom ISO images.
archive rfs:src-cdrom-archive
tar.bz2 file that contains base64 encoded files for the source cdrom.

TYPE: src-cdrom-archive

Holds a base64 encoded tar.bz2 file that is added to the src-cdrom.

Example

<src-cdrom-archive>
</src-cdrom-archive>

Elements description

[attr] volume rfs:volume-type
Use this to control where the archive is stored when using split src-cdroms. It consists of a comma-separated list of volume numbers. A volume number can be 0 to n-1 for n equals the number of volumes if the src-cdrom is split. A volume number can also be negative to identify a volume beginning from the last index. (-1: last, -2: second last, …) If you do not specify this attribute, the archive is added to each volume.

SIMPLE TYPE: volume-type

FIXME - I have no documentation

Base Type

string

Restrictions

pattern (-?d+,)*-?d+ all

TYPE: iso-opts

ISO image options passed to genisoimage(1).

Example

<iso-opts>
  <abstract> rfs:string </abstract>

  <app> rfs:string </app>

  <biblio> rfs:string </biblio>

  <copyright> rfs:string </copyright>

  <publisher> rfs:string </publisher>

  <preparer> rfs:string </preparer>

  <sysid> rfs:string </sysid>

  <volid> rfs:string </volid>

  <volset> rfs:string </volset>

</iso-opts>

Elements description

[attr] strict boolean
If set to “true”, fails in preprocessing stage if an option doesn’t respect ISO-9660. The default is “false”.
abstract rfs:string
FIXME - I have no documentation
app rfs:string
FIXME - I have no documentation
biblio rfs:string
FIXME - I have no documentation
copyright rfs:string
FIXME - I have no documentation
publisher rfs:string
FIXME - I have no documentation
preparer rfs:string
FIXME - I have no documentation
sysid rfs:string
FIXME - I have no documentation
volid rfs:string
FIXME - I have no documentation
volset rfs:string
FIXME - I have no documentation