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>
<target> rfs:target </target>
<archive> base64Binary </archive>
<debootstrappkgs> rfs:fullpkg-list </debootstrappkgs>
<initvmpkgs> rfs:fullpkg-list </initvmpkgs>
<initvm_sources_list> string </initvm_sources_list>
<initvm_apt_prefs> string </initvm_apt_prefs>
<fullpkgs> rfs:fullpkg-list </fullpkgs>
<sources_list> string </sources_list>
<apt_prefs> string </apt_prefs>
<elbe_version> string </elbe_version>
</RootFileSystemType>
Element description¶
- 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.
- 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 string
- apt sources list.
- initvm_apt_prefs string
- apt preferences list
- fullpkgs rfs:fullpkg-list
- List of packages with their versions installed on the RFS
- sources_list string
- apt sources list.
- apt_prefs string
- apt preferences list
- elbe_version string
- Elbe Version that was used in the last build of this file.
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¶
no sequence
TYPE: url¶
links to one additional debian mirror
Example¶
<url>
<binary> rfs:binary-url </binary>
<source> string </source>
<key> string </key>
</url>
Element 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”
- key string optional
- URL of the Public Key used to sign this Repository e.g “http://myhost/key.pub” or “http://debian.linutronix.de/elbe/elbe-repo.pub”
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>
<primary_host> string </primary_host>
<primary_path> string </primary_path>
<primary_proto> string </primary_proto>
<primary_proxy> string </primary_proxy>
<cdrom> string </cdrom>
<url-list> rfs:url-list </url-list>
</mirror>
Element description¶
- primary_host string
- IP address or hostname of the primary debian mirror e.g. “debian.org” without a protocol or any slash
- primary_path string
- base path to the debian mirror on the given host e.g. “/debian”
- primary_proto string
- protocol to access the primary debian mirror e.g. “http” or “ftp”
- primary_proxy string
- proxy to access the debian mirror e.g. “http://me:mypass@myproxy:8080”
- cdrom string
- iso image of a cdrom/dvd with debian packages.
- url-list rfs:url-list optional
- additional debian repositories, e.g. for own debian packages
TYPE: initvm¶
describes settings that apply to the creation of the initvm
Example¶
<initvm>
<buildtype> string </buildtype>
<mirror> rfs:mirror </mirror>
<noauth> string </noauth>
<preference> rfs:preference </preference>
<suite> string </suite>
<pkg-list> rfs:pkg-list </pkg-list>
<preseed> rfs:preseed </preseed>
<size> string </size>
<img> string </img>
<portforwarding> rfs:portforwarding </portforwarding>
</initvm>
Element description¶
- buildtype string
- Default buildtype like armel, ppc, and in the future armel-virtio
- mirror rfs:mirror
- used debian mirrors
- noauth string optional
- allow installation of unsigned debian packages
- preference rfs:preference optional
- used for pinning of all packages TODO: example?
- suite string
- name of the debian suite that should be used to generate the initvm. e.g. “lenny”, “squeeze”, “sid”, ..
- pkg-list rfs:pkg-list
- additional packages that are installed into the initvm.
- preseed rfs:preseed
- Custom preseeding Values for apt
- size string
- size of the virtual harddisk used to run the build environment
- img string
- hd image backend format: raw, qcow, vmdk, …
- portforwarding rfs:portforwarding
- network ports of the buildenvironment that are forwarded to the host machine
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> string </name>
<version> string </version>
<description> string </description>
<buildtype> string </buildtype>
<mirror> rfs:mirror </mirror>
<noauth> string </noauth>
<preference> rfs:preference </preference>
<raw-preference> rfs:raw-preference </raw-preference>
<suite> string </suite>
<buildimage> rfs:buildimage </buildimage>
<preseed> rfs:preseed </preseed>
</project>
Element description¶
- name string optional
- name of the project this rootfilesystem is associated with
- version string optional
- version of the rootfilesystem definition
- description string optional
- human readable description of the project
- buildtype string
- Default buildtype like armel, ppc, and in the future armel-virtio
- mirror rfs:mirror
- used debian mirrors
- noauth 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
- gets dedented and striped and is then written to /etc/apt/preferences TODO: example?
- suite string
- name of the debian suite that should be used to generate the buildenvironment and the rootfilesystem. e.g. “lenny”, “squeeze”, “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: buildimage¶
definition of the build environment
Example¶
<buildimage>
<arch> string </arch>
<size> string </size>
<mem> rfs:memory </mem>
<interpreter> string </interpreter>
<kinitrd> string </kinitrd>
<console> string </console>
<machine> string </machine>
<NIC> rfs:NIC </NIC>
<portforwarding> rfs:portforwarding </portforwarding>
<pkgversionlist> string </pkgversionlist>
<pkg-list> rfs:pkg-list </pkg-list>
</buildimage>
Element description¶
- arch string
- architecture of the target system. e.g. “amd64”, “armel”, “ppc”, ..
- size string
- size of the virtual harddisk used to run the build environment
- mem rfs:memory
- amount of memory mapped into the virtual build environment
- interpreter string
- virtual machine interpreter, e.g. “kvm”, “qemu-system-arm”, …
- kinitrd string
- pkg name of the initrd/kernel package.
- console string
- serial console of the virtual machine, e.g. “ttyAMA0,115200n1”
- machine string
- virtual platform to host the build environment, e.g. “versatilepb”
- NIC rfs:NIC
- network interface emulation
- portforwarding rfs:portforwarding
- network ports of the buildenvironment that are forwarded to the host machine
- pkgversionlist 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.
SIMPLE TYPE: memory¶
at least 128 MB of memory are needed to run the debian-installer
Base Type¶
integer
Restrictions¶
minInclusive | 128 |
TYPE: NIC¶
describes a virtual network interface
Example¶
<NIC>
<model> string </model>
<MAC> string </MAC>
</NIC>
Element description¶
- model string
- hardware emulation of the network interface; e.g. “e1000”
- MAC string
- mac address of the virtual network interface
SIMPLE TYPE: fw_proto¶
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>
Element 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>
Element description¶
- forward rfs:forward
- describes a single port forward
TYPE: target¶
configuration of the target rootfilesystem
Example¶
<target>
<hostname> string </hostname>
<domain> string </domain>
<passwd> string </passwd>
<console> string </console>
<package> rfs:package </package>
<images> rfs:images </images>
<fstab> rfs:fstab </fstab>
<tighten> string </tighten>
<diet> string </diet>
<setsel> string </setsel>
<norecommend> string </norecommend>
<finetuning> rfs:finetuning </finetuning>
<pkg-list> rfs:pkg-list </pkg-list>
</target>
Element description¶
- hostname string
- hostname of the system
- domain string
- domainname of the network the target system is part of
- passwd string
- root password
- console string
- serial console for getty
- 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 string optional
- don’t install any dependencies; just the content of the given debian packages
- diet 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 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. - norecommend string optional
- Turn off the installation of recommended Packages.
- finetuning rfs:finetuning optional
- apply the given commands to the target rootfilesystem
- pkg-list rfs:pkg-list
- install the given packages into the rootfilesystem
SIMPLE TYPE: ubi_type¶
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> string </label>
<id> integer </id>
<size> rfs:part_size </size>
<binary> string </binary>
<empty> string </empty>
</ubi>
Element description¶
- type rfs:ubi_type
- type of the ubi volume; either “static” or “dynamic”
- label 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 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 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> string </label>
<miniosize> string </miniosize>
<maxlogicaleraseblockcount> string </maxlogicaleraseblockcount>
<logicaleraseblocksize> string </logicaleraseblocksize>
<physicaleraseblocksize> string </physicaleraseblocksize>
<subpagesize> string </subpagesize>
</ubivg>
Element description¶
- label string
- human readable name; used to generate filename for the flashable image file
- miniosize string
- flash parameter minimal i/o size
- maxlogicaleraseblockcount string
- flash parameter maximum logical erase block count
- logicaleraseblocksize string
- flash parameter logical erase block size
- physicaleraseblocksize string
- flash parameter physical erase block size
- subpagesize string
- flash parameter subpagesize
TYPE: mtd¶
describes a mtd device
Example¶
<mtd>
<name> string </name>
<nr> integer </nr>
<size> rfs:part_size </size>
<binary> string </binary>
<ubivg> rfs:ubivg </ubivg>
</mtd>
Element description¶
- name 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 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> string </name>
<size> rfs:part_size </size>
<grub-install> string </grub-install>
<partition> rfs:partition </partition>
</gpthd>
Element description¶
- name 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
- grub-install string
- human readable name of the harddisk, this will be used as name for the image file
- partition rfs:partition
- Partition Entries of this harddisk
TYPE: msdoshd¶
describes a harddisk
Example¶
<msdoshd>
<name> string </name>
<size> rfs:part_size </size>
<grub-install> string </grub-install>
<partition> rfs:partition </partition>
</msdoshd>
Element description¶
- name 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
- grub-install string
- human readable name of the harddisk, this will be used as name for the image file
- partition rfs:partition
- Partition Entries of this harddisk (max: 4)
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> string </passno>
</images>
Element 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 string
- passno order for fsck
TYPE: fs¶
description of a linux filesystem
Example¶
<fs>
<type> rfs:fs_type </type>
<mkfs> string </mkfs>
<tune2fs> string </tune2fs>
<passno> string </passno>
</fs>
Element description¶
- type rfs:fs_type
- filesystemtype, e.g. “ext3”, “ubifs”, …
- mkfs string
- options passed to the mkfs command
- tune2fs string
- options passed to the tune2fs command
- passno string
- passno order for fsck
TYPE: bylabel¶
mount storage by the label of the partition or volume
Example¶
<bylabel>
<label> string </label>
<mountpoint> string </mountpoint>
<fs> rfs:fs </fs>
<options> string </options>
</bylabel>
TYPE: bydev¶
mount virtual filesystems or other storage devices device-node
Example¶
<bydev>
<source> string </source>
<mountpoint> string </mountpoint>
<fs> rfs:fs </fs>
<options> string </options>
</bydev>
Element description¶
- source string
- either a device-node or “none” for virtual filesystems
- mountpoint 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 string
- options passed to the mount command
TYPE: fstab¶
container for mounts
Example¶
<fstab>
<bylabel> rfs:bylabel </bylabel>
<bydev> rfs:bydev </bydev>
</fstab>
Element 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: package¶
list of packages, each contains the hole rootfilesystem
Example¶
<package>
<tar> rfs:tar </tar>
<cpio> rfs:cpio </cpio>
<squashfs> rfs:squashfs </squashfs>
</package>
Element 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> string </name>
<options> string </options>
</tar>
Element description¶
- name string optional
- filename of the tar package
- options string optional
- options passed to the tar command
TYPE: cpio¶
describes a cpio package
Example¶
<cpio>
<name> string </name>
</cpio>
Element description¶
- name string optional
- filename of the cpio package
TYPE: squashfs¶
describes a squashfs image
Example¶
<squashfs>
<name> string </name>
</squashfs>
Element description¶
- name string optional
- filename of the squashfs image
TYPE: partition¶
describes a partition of a harddisk
Example¶
<partition>
<size> rfs:part_size </size>
<label> string </label>
<bootable> string </bootable>
<biosgrub> string </biosgrub>
</partition>
Element description¶
- size rfs:part_size
- size of the partition
- label string optional
- human readable label of the partition used for mount by label and as filename for the flashable image
- bootable string optional
- Whether this partition is marked bootable.
- biosgrub string optional
- Whether this partition is marked as biosgrub partition.
SIMPLE TYPE: part_size¶
format of the partition size
Base Type¶
string
Restrictions¶
pa tte rn | (d +(k | M | G | kB | MB | GB | kiB | MiB | GiB )? | rem ain ) |
SIMPLE TYPE: part_nr¶
allow maximum 4 primary partitions
Base Type¶
integer
Restrictions¶
minInclusive | 1 |
maxInclusive | 4 |
SIMPLE TYPE: part_type¶
list of supported partition types
Base Type¶
string
Restrictions¶
enumeration | linux |
enumeration | swap |
SIMPLE TYPE: fs_type¶
list of supported filesystems
Base Type¶
string
Restrictions¶
enumeration | ext2 |
enumeration | ext3 |
enumeration | ext4 |
enumeration | xfs |
enumeration | ubifs |
enumeration | tmpfs |
enumeration | debugfs |
enumeration | configfs |
enumeration | devpts |
enumeration | proc |
enumeration | sysfs |
enumeration | vfat |
enumeration | btrfs |
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>
</finetuning>
Element description¶
TYPE: adduser¶
describes an additional user account, the following parameters are available: shell - the login shell for the user, passwd - the password for the user and groups - a comma separated list of groups the user is member of. The value of the tag describes the login name for the account.
Example¶
no sequence
TYPE: git_src¶
describes a git location of a debian source package
Example¶
<git_src>
<url> string </url>
<tag> string </tag>
</git_src>
Element description¶
- url string
- url of the git repository, e.g. “git://myhost/myrepo.git”
- tag string
- reference to a tag in the git tree
TYPE: svn_src¶
describes a svn location of a debian source package
Example¶
<svn_src>
<url> string </url>
<rev> integer </rev>
</svn_src>
Element description¶
- url string
- url of the svn repository, e.g. “svn://myhost/myrepo/tags/my_tag”
- rev integer
- svn revision which should be checked out
TYPE: pkg-list¶
container of debian packages
Example¶
<pkg-list>
<git-src> rfs:git_src </git-src>
<svn-src> rfs:svn_src </svn-src>
<pkg> rfs:pkg </pkg>
</pkg-list>
Element description¶
- git-src rfs:git_src
- reference to a git tree hosting a debian source package. The tree will be cloned into the build environment and dpkg-buildpackage will be called. The resulting debian package will be installed into the target rootfilesystem. Take care that all build dependencies needs to be listed inside buildenv/pkg-list at the moment.
- svn-src rfs:svn_src
- reference to a svn repository hosting a debian source package. The repository will be checked out into the build environment and dpkg-buildpackage will be called. The resulting debian package will be installed into the target rootfilesystem. Take care that all build dependencies needs to be listed inside buildenv/pkg-list at the moment.
- pkg rfs:pkg
- reference to a binary debian package which will be installed from the given mirrors into the target rootfilesystem.