LinuxCommandLibrary

kiwi-ng

Create customized operating system images

TLDR

Build an appliance

$ kiwi-ng system build --description=[path/to/directory] --target-dir=[path/to/directory]
copy

Show build result of built appliance
$ kiwi-ng result list --target-dir=[path/to/directory]
copy

Display help
$ kiwi-ng help
copy

Display version
$ kiwi-ng -v
copy

SYNOPSIS

kiwi-ng [global-options] <command> [command-options] <DESCRIPTION.xml>

PARAMETERS

--debug
    Enable debug output and increase verbosity

--quiet
    Suppress non-essential output

--logfile <FILE>
    Write log messages to specified file

--profile <PROFILE>
    Build only specified profile(s) from XML

--target-dir <DIR>
    Set target directory for image output

--type <TYPE>
    Override image type (e.g., oem, iso, vmx)

--root <DIR>
    Path to prep init root directory

--overlay <DIR>
    Path to overlay tree directory

--strip
    Strip bootloader files from image

--help, -h
    Show help for command or global options

DESCRIPTION

KIWI-NG is a complete imaging solution that allows users to create customized Linux OS images, live systems, and appliances from XML-based descriptions. It supports various output formats including ISO, USB, virtual machines (QCOW2, VMDK), cloud images (AMI, raw), and installable OEM systems.

Key features include flexible package management integration (zypper, dnf, apt), bootloader configuration (GRUB, syslinux), and support for overlays, LVM, and Btrfs snapshots. Users define images via <image> XML schemas specifying type, preferences, users, repositories, and packages. KIWI-NG handles chroot-based preparation, image creation, and deployment.

Primarily used in openSUSE, SUSE Linux Enterprise, and embedded systems, it excels in CI/CD pipelines for reproducible builds. It replaces the legacy KIWI tool with improved modularity, plugin support, and better error handling.

CAVEATS

Requires XML description file; root privileges often needed for build operations. Not all formats supported on every architecture. Large images may require significant disk space and time.

COMMON COMMANDS

system init: Initialize image root tree.
system build: Prepare image without creating final format.
system create: Create final image from prepared root.
list: List image types or profiles.

XML SCHEMA

Core file is <image schemaversion="..."> with <type>, <preferences>, <repository>, <packages> sections.

HISTORY

Developed as successor to KIWI by openSUSE team around 2019. Initial release in openSUSE Leap 15.2. Focuses on modularity, Python3 rewrite, and container-friendly builds. Actively maintained for SLE and openSUSE.

SEE ALSO

kiwi(8), chroot(8), mkisofs(8), qemu-img(1)

Copied to clipboard