- bootpartition=”true|false”:
Boolean parameter notifying KIWI NG whether an extra boot
partition should be used or not (the default depends on the current
layout). This will override KIWI NG’s default layout.
- bootpartsize=”nonNegativeInteger”:
For images with a separate boot partition this attribute
specifies the size in MB. If not set the boot partition
size is set to 200 MB
- efipartsize=”nonNegativeInteger”:
For images with an EFI fat partition this attribute
specifies the size in MB. If not set the EFI partition
size is set to 20 MB
- efifatimagesize=”nonNegativeInteger”:
For ISO images (live and install) the EFI boot requires
an embedded FAT image. This attribute specifies the size
in MB. If not set the FAT image size is set to 20 MB
- efiparttable=”msdos|gpt”:
For images with an EFI firmware specifies the partition
table type to use. If not set defaults to the GPT partition
table type
- dosparttable_extended_layout=”true|false”:
For oem disk images, specifies to make use of logical partitions
inside of an extended one. If set to true and if the msdos table type
is active, this will cause the fourth partition to be an
extended partition and all following partitions will be
placed as logical partitions inside of that extended
partition. This setting is useful if more than 4 primary
partitions needs to be created in an msdos table
- btrfs_quota_groups=”true|false”:
Boolean parameter to activate filesystem quotas if
the filesystem is btrfs
. By default quotas are inactive.
- btrfs_set_default_volume=”true|false”:
Tell kiwi to explicitly make a volume the default volume
This can be either /
or the root subvolume or the root
snapshot depending on the specified btrfs configuration
attributes. By default btrfs_set_default_volume is set to: true
If no default volume should be set, this attribute can be
used to turn it off
- btrfs_root_is_subvolume=”true|false”:
Tell kiwi to create a root volume to host (/) inside.
The name of this subvolume is by default set to: @
.
The name of the subvolume can be changed via a volume entry
of the form:
<systemdisk>
<volume name="@root=TOPLEVEL_NAME"/>
</systemdisk>
By default the creation of a toplevel volume is set to: true
- btrfs_root_is_snapshot=”true|false”:
Boolean parameter that tells KIWI NG to install
the system into a btrfs snapshot. The snapshot layout is compatible with
snapper. By default snapshots are turned off.
- btrfs_root_is_readonly_snapshot=”true|false”:
Boolean parameter notifying KIWI NG that
the btrfs root filesystem snapshot has to made read-only. if this option
is set to true, the root filesystem snapshot it will be turned into
read-only mode, once all data has been placed to it. The option is only
effective if btrfs_root_is_snapshot
is also set to true. By default the
root filesystem snapshot is writable.
- bootstrap_package=”package_name”:
For use with the apt
packagemanager only. Specifies the name
of a bootstrap package which provides a bootstrap tarball
in /var/lib/bootstrap/PACKAGE_NAME.ARCH.tar.xz
.
The tarball will be unpacked and used as the bootstrap
rootfs to begin with. This allows for an alternative bootstrap
method preventing the use of debootstrap
. For further details
see Section 11.22, “Circumvent debootstrap”.
- compressed=”true|false”:
Specifies whether the image output file should be
compressed or not. This option is only used for filesystem only images or
for the pxe
or cpio
types.
- editbootconfig=”file_path”:
Specifies the path to a script which is called right
before the bootloader is installed. The script runs relative to the
directory which contains the image structure.
- editbootinstall=”file_path”:
Specifies the path to a script which is called right
after the bootloader is installed. The script runs relative to the
directory which contains the image structure.
- filesystem=”btrfs|ext2|ext3|ext4|squashfs|xfs”:
The root filesystem
- firmware=”efi|uefi”:
Specifies the boot firmware of the appliance, supported
options are: bios
, ec2
, efi
, uefi
, ofw
and opal
.
This attribute is used to differentiate the image according to the
firmware which boots up the system. It mostly impacts the disk
layout and the partition table type. By default bios
is used on x86,
ofw
on PowerPC and efi
on ARM.
- force_mbr=”true|false”:
Boolean parameter to force the usage of a MBR partition
table even if the system would default to GPT. This is occasionally
required on ARM systems that use a EFI partition layout but which must
not be stored in a GPT. Note that forcing a MBR partition table incurs
limitations with respect to the number of available partitions and their
sizes.
- fsmountoptions=”option_string”:
Specifies the filesystem mount options which are passed
via the -o
flag to mount
and are included in
/etc/fstab
.
- fscreateoptions=”option_string”:
Specifies the filesystem options used to create the
filesystem. In KIWI NG the filesystem utility to create a filesystem is
called without any custom options. The default options are filesystem
specific and are provided along with the package that provides the
filesystem utility. For the Linux ext[234]
filesystem, the default
options can be found in the /etc/mke2fs.conf
file. Other
filesystems provides this differently and documents information
about options and their defaults in the respective manual page, e.g
man mke2fs
. With the fscreateoptions
attribute it’s possible
to directly influence how the filesystem will be created. The options
provided as a string are passed to the command that creates the
filesystem without any further validation by KIWI NG. For example, to turn
off the journal on creation of an ext4 filesystem the following option
would be required:
<preferences>
<type fscreateoptions="-O ^has_journal"/>
</preferences>
- kernelcmdline=”string”:
Additional kernel parameters passed to the kernel by the
bootloader.
- root_clone=”number”
For oem disk images, this attribute allows to create number
clone(s) of the root partition, with number
>= 1. A clone partition
is content wise an exact byte for byte copy of the origin root partition.
However, to avoid conflicts at boot time the UUID of any
cloned partition will be made unique. In the sequence of partitions,
the clone(s) will always be created first followed by the
partition considered the origin. The origin partition is the
one that will be referenced and used by the system.
Also see Section 11.12, “Partition Clones”
- boot_clone=”number”
Same as root_clone
but applied to the boot partition if present
- luks=”passphrase|file:///path/to/keyfile”:
Supplying a value will trigger the encryption of the partition
serving the root filesystem using the LUKS extension. The supplied
value represents either the passphrase string or the location of
a key file if specified as file://...
resource. When using
a key file it is in the responsibility of the user how
this key file is actually being used. By default any
distribution will just open an interactive dialog asking
for the credentials at boot time !
- luks_version=”luks|luks1|luks2”:
Specify which LUKS
version should be used. If not set and by
default luks
is used. The interpretation of the default depends
on the distribution and could result in either ‘luks1’ or ‘luks2’.
The specification of the LUKS
version allows using a different
set of luksformat
options. To investigate the differences between
the two please consult the cryptsetup
manual page.
- target_blocksize=”number”:
Specifies the image blocksize in bytes which has to
match the logical blocksize of the target storage device. By default 512
Bytes is used, which works on many disks. You can obtain the blocksize
from the SSZ
column in the output of the following command:
blockdev --report $DEVICE
- target_removable=”true|false”:
Indicate if the target disk for oem images is deployed
to a removable device e.g a USB stick or not. This only
affects the EFI setup if requested and in the end avoids
the creation of a custom boot menu entry in the firmware
of the target machine. By default the target disk is
expected to be non-removable
- selinux_policy.attribute=”targeted|mls|minimum”:
The selinux_policy
attribute sets the SELinux policy to use.
targeted
policy is the default policy. Only change this option
if you want to use the mls
or minimum
policy.
- spare_part=”number”:
Request a spare partition right before the root partition
of the requested size. The attribute takes a size value
and allows a unit in MB or GB, e.g 200M. If no unit is given
the value is considered to be mbytes. A spare partition
can only be configured for the disk image type oem
- spare_part_mountpoint=”dir_path”:
Specify mount point for spare partition in the system.
Can only be configured for the disk image type oem
- spare_part_fs=”btrfs|ext2|ext3|ext4|xfs”:
Specify filesystem for spare partition in the system.
Can only be configured for the disk image type oem
- spare_part_fs_attributes=”attribute_list”:
Specify filesystem attributes for the spare partition.
Attributes can be specified as comma separated list.
Currently the attributes no-copy-on-write
and synchronous-updates
are available. Can only be configured for the disk image
type oem
- spare_part_is_last=”true|false”:
Specify if the spare partition should be the last one in
the partition table. Can only be configured for the oem
type with oem-resize switched off. By default the root
partition is the last one and the spare partition lives
before it. With this attribute that setup can be toggled.
However, if the root partition is no longer the last one
the oem repart/resize code can no longer work because
the spare part would block it. Because of that moving
the spare part at the end of the disk is only applied
if oem-resize is switched off. There is a runtime
check in the KIWI NG code to check this condition
- devicepersistency=”by-uuid|by-label”:
Specifies which method to use for persistent device names.
This will affect all files written by kiwi that includes
device references for example etc/fstab
or the root=
parameter in the kernel commandline. By default by-uuid
is used
- squashfscompression=”uncompressed|gzip|lzo|lz4|xz|zstd”:
Specifies the compression type for mksquashfs
- standalone_integrity=”true|false”:
For the oem
type only, specifies to create a standalone
dm_integrity
layer on top of the root filesystem
- integrity_legacy_hmac=”true|false”:
For the oem
type only and in combination with the standalone_integrity
attribute, Allow to use old flawed HMAC calculation (does not protect superblock).
Warning
Do not use this attribute unless compatibility with
a specific old kernel is required!
- integrity_keyfile=”filepath”:
For the oem
type only and in combination with the standalone_integrity
attribute, protects access to the integrity map using the given keyfile.
- integrity_metadata_key_description=”string”:
For the oem
type only and in combination with
the embed_integrity_metadata
attribute, specifies a custom
description of an integrity key as it is expected to be present
in the kernel keyring. The information is placed in the integrity
metadata block. If not specified kiwi creates a key argument
string instead which is based on the given integrity_keyfile
filename. The format of this key argument is:
:BASENAME_OF_integrity_keyfile_WITHOUT_FILE_EXTENSION
- embed_integrity_metadata=”true|false”:
For the oem
type only, and in combination with the
standalone_integrity
attribute, specifies to write a binary
block at the end of the partition serving the root filesystem,
containing information to create the dm_integrity
device map
in the following format:
|header|0xFF|dm_integrity_meta|0xFF|0x0|
- header:
Is a string of the following information separated by spaces
version: currently set to 1
fstype: name of filesystem
attribute
access: either ro
or rw
depending on the filesystem capabilities
integrity
: fixed identifier value
- dm_integrity_meta:
Is a string of the following information separated by spaces
provided_data_sectors: number of data sectors
sector_size: sector size in byte, defaults to 512
parameter_count:
number of parameters needed to construct the integrity device map.
After the parameter_count
a list of space separated parameters
follows and the parameter_count
specifies the quantity of these
parameters
parameters:
The first element of the parameter list contains information about
the used hash algorithm which is not part of the superblock and
provided according to the parameters passed along when KIWI NG
calls integritysetup
. As of now this defaults to:
All subsequent parameters are taken from the flags
field of the
dm-integrity superblock. see the dm-integrity documentation on the
web for possible flag values.
- verity_blocks=”number|all”:
For the oem
type only, specifies to create a dm verity hash
from the number of given blocks (or all) placed at the end of the
root filesystem For later verification of the device,
the credentials information produced by veritysetup
from the
cryptsetup tools are needed. This data as of now is only printed
as debugging information to the build log file. A concept to
persistently store the verification metadata as part of the
partition(s) will be a next step.
- embed_verity_metadata=”true|false”:
For the oem
type only, and in combination with the verity_blocks
attribute, specifies to write a binary block at the end of the
partition serving the root filesystem, containing information
for dm_verity
verification in the following format:
|header|0xFF|dm_verity_credentials|0xFF|0x0|
- header:
Is a string of the following information separated by spaces
version: currently set to 1
fstype: name of filesystem
attribute
access: either ro
or rw
depending on the filesystem capabilities
verity
: fixed identifier value
- dm_verity_credentials:
Is a string of the following information separated by spaces
hash_type: hash type name as returned by veritysetup
data_blksize: data blocksize as returned by veritysetup
hash_blksize: hash blocksize as returned by veritysetup
data_blocks: number of data blocks as returned by veritysetup
hash_start_block:
hash start block as required by the kernel to construct the device map
algorithm: hash algorithm as returned by veritysetup
root_hash: root hash as returned by veritysetup
salt: salt hash as returned by veritysetup
- overlayroot=”true|false”:
For the oem
type only, specifies to use an overlayfs
based root
filesystem consisting out of a squashfs compressed read-only root
filesystem combined with an optional write-partition or tmpfs.
The optional kernel boot parameter rd.root.overlay.temporary
can
be used to point the write area into a tmpfs
instead of
a persistent write-partition. In this mode all written data is
temporary until reboot of the system. The kernel boot parameter
rd.root.overlay.size
can be used to configure the size for the
tmpfs
that is used for the overlayfs
mount process if
rd.root.overlay.temporary
is requested. That size configures the
amount of space available for writing new data during the runtime
of the system. The default value is set to 50%
which means one
half of the available RAM space can be used for writing new data.
By default the persistent write-partition is used. The size of that
partition can be influenced via the optional <size>
element in
the <type>
section or via the optional <oem-resize>
element in
the <oemconfig>
section of the XML description. Setting a fixed
<size>
value will set the size of the image disk to that
value and results in an image file of that size. The available
space for the write partition is that size reduced by the
size the squashfs read-only system needs. If the <oem-resize>
element is set to true
an eventually given <size>
element
will not have any effect because the write partition will be
resized on first boot to the available disk space.
To disable the use of any overlay the kernel boot parameter
rd.root.overlay.readonly
can be used. It takes precedence
over all other overlay kernel parameters because it leads to the
deactivation of any overlayfs based action and just boots up with
the squashfs root filesystem. In fact this mode is the same
as not installing the kiwi-overlay
dracut module.
- overlayroot_write_partition=”true|false”:
For the oem
type only, allows to specify if the extra read-write
partition in an overlayroot
setup should be created or not.
By default the partition is created and the kiwi-overlay dracut
module also expect it to be present. However, the overlayroot
feature can also be used without dracut (initrd_system="none"
)
and under certain circumstances it is handy to configure if the
partition table should contain the read-write partition or not.
- overlayroot_readonly_partsize=”mbsize”:
Specifies the size in MB of the partition which stores the
squashfs compressed read-only root filesystem in an
overlayroot setup. If not specified kiwi calculates
the needed size by a preliminary creation of the
squashfs compressed file. However this is only accurate
if no changes to the root filesystem data happens
after this calculation, which cannot be guaranteed as
there is at least one optional script hook which is
allowed and applied after the calculation. In addition the
pre-calculation requires some time in the build process.
If the value can be provided beforehand this also speeds
up the build process significantly
- bootfilesystem=”btrfs|ext2|ext3|ext4|xfs|fat32|fat16”:
If an extra boot partition is required this attribute
specify which filesystem should be used for it. The
type of the selected bootloader might overwrite this
setting if there is no alternative possible though.
- flags=”overlay|dmsquash”:
For the iso image type specifies the live iso technology and
dracut module to use. If set to overlay the kiwi-live dracut
module will be used to support a live iso system based on
squashfs+overlayfs. If set to dmsquash the dracut standard
dmsquash-live module will be used to support a live iso
system based on the capabilities of the upstream dracut
module.
- format=”gce|ova|qcow2|vagrant|vmdk|vdi|vhd|vhdx|vhd-fixed”:
For disk image type oem, specifies the format of
the virtual disk such that it can run on the desired target
virtualization platform.
- formatoptions=”string”:
Specifies additional format options passed on to qemu-img
formatoptions is a comma separated list of format specific
options in a name=value format like qemu-img expects it.
kiwi will take the information and pass it as parameter to
the -o option in the qemu-img call
- fsmountoptions=”string”:
Specifies the filesystem mount options which also ends up in fstab
The string given here is passed as value to the -o option of mount
- fscreateoptions=”string”:
Specifies options to use at creation time of the filesystem
- force_mbr=”true|false”:
Force use of MBR (msdos table) partition table even if the
use of the GPT would be the natural choice. On e.g some
arm systems an EFI partition layout is required but must
not be stored in a GPT. For those rare cases this attribute
allows to force the use of the msdos table including all
its restrictions in max partition size and amount of
partitions
- gpt_hybrid_mbr=”true|false”:
For GPT disk types only: Create a hybrid GPT/MBR partition table
- hybridpersistent=”true|false”:
For the live ISO type, triggers the creation of a partition for
a COW file to keep data persistent over a reboot
- hybridpersistent_filesystem=”ext4|xfs”:
For the live ISO type, set the filesystem to use for persistent
writing if a hybrid image is used as disk on e.g a USB Stick.
By default the ext4 filesystem is used.
- initrd_system=”kiwi|dracut|none”:
Specify which initrd builder to use, default is set to dracut
.
If set to none
the image is build without an initrd. Depending
on the image type this can lead to a non bootable system as its
now a kernel responsibility if the given root device can be
mounted or not.
- metadata_path=”dir_path”:
Specifies a path to additional metadata required for the selected
image type or its tools used to create that image type.
Note
Currently this is only effective for the appx container image type.
- installboot=”failsafe-install|harddisk|install”:
Specifies the bootloader default boot entry for the initial
boot of a KIWI NG install image.
Note
This value is only evaluated for grub
- install_continue_on_timeout=”true|false”:
Specifies the boot timeout handling for the KIWI NG
install image. If set to “true” the configured timeout
or its default value applies. If set to “false” no
timeout applies in the boot menu of the install image.
- installprovidefailsafe=”true|false”:
Specifies if the bootloader menu should provide an
failsafe entry with special kernel parameters or not
- installiso=”true|false”
Specifies if an install iso image should be created.
This attribute is only available for the oem
type.
The generated ISO image is an hybrid ISO which can be
used as disk on e.g a USB stick or as ISO.
- installpxe=”true|false”:
Specifies if a tarball that contains all data for a pxe network
installation should be created. This attribute is only available
for the oem
type.
- mediacheck=”true|false”:
For ISO images, specifies if the bootloader menu should provide an
mediacheck entry to verify ISO integrity or not. Disabled by default
and only available for the x86 arch family.
- mdraid=”mirroring|striping”:
Setup software raid in degraded mode with one disk
Thus only mirroring and striping is possible
- primary=”true|false”:
Specifies this type to be the primary type. If no type option
is given on the commandline, KIWI NG will build this type
- ramonly=”true|false”:
For all images that are configured to use the overlay filesystem
this setting forces any COW(Copy-On-Write) action to happen in RAM.
- rootfs_label=”string”:
Label name to set for the root filesystem. By default ROOT
is used
- volid=”string”:
For the ISO type only, specifies the volume ID (volume name or label)
to be written into the master block. There is space for 32 characters.
- vhdfixedtag=”GUID_string”:
For the VHD disk format, specifies the GUID
- derived_from=”string”:
For container images, specifies the image URI of the container image.
The image created by KIWI NG will use the specified container as the
base root to work on.
- delta_root=”true|false”:
For container images and in combination with the derived_from
attribute. If delta_root
is set to true
, {kiwi-ng} creates
a container image which only contains the differences compared
to the given derived_from
container. Such a container is on
its own no longer functional and requires a tool which is able
to provision a container instance from the derived_from
container combined with the delta_root
application container.
Such a tool exists with the
oci-pilot
project and allows to manage applications as containers
that feels like native applications on the host system.
- ensure_empty_tmpdirs=”true|false”:
For OCI container images, specifies whether to ensure /run and /tmp
directories are empty in the container image created by Kiwi.
Default is true.
- publisher=”string”:
For ISO images, specifies the publisher name of the ISO.