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>
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
- Q: 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: 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>
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: 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