kiwi-el8/doc/source/plugins/self_contained.rst
Marcus Schäfer 9940caffde
Added documentation for kiwi stackbuild plugin
Restructure the documentation to put all plugin documentation
under its own category. Add a chapter about the stackbuild
plugin, it's concepts and use cases. This Fixes #1907
2021-10-08 18:07:20 +02:00

82 lines
3.1 KiB
ReStructuredText

.. _self_contained:
Building in a Self-Contained Environment
========================================
.. note:: **Abstract**
Users building images with {kiwi} face problems if they want
to build an image matching one of the following criteria:
* build should happen as non root user.
* build should happen on a host system distribution for which
no {kiwi} packages exists.
* build happens on an incompatible host system distribution
compared to the target image distribution. For example
building an apt/dpkg based system on an rpm based system.
* run more than one build process at the same time on the
same host.
* run a build process for a different target architecture
compared to the host architecture (Cross Arch Image Build)
This document describes how to perform the build process in
a self contained environment using fast booting virtual
machines to address the issues listed above.
The changes on the machine to become a build host will
be reduced to the requirements of the {kiwi} `boxed plugin`
Requirements
------------
Add the {kiwi} repo from the Open Build Service. For details see
:ref:`installation-from-obs`. The following {kiwi} plugin needs to be
installed on the build system:
.. code:: bash
$ sudo zypper in python3-kiwi_boxed_plugin
Building with the boxbuild command
----------------------------------
The installation of the {kiwi} boxed plugin has registered a new kiwi
command named `boxbuild`. The command implementation uses KVM as
virtualization technology and runs the {kiwi} `build` command inside of
a KVM controlled virtual machine. For running the build process in a
virtual machine it's required to provide VM images that are suitable
to perform this job. We call the VM images `boxes` and they contain
kiwi itself as well as all other components needed to build appliances.
Those boxes are hosted in the Open Build Service and are publicly
available at the `Subprojects` tab in the: `Virtualization:Appliances:SelfContained <https://build.opensuse.org/project/show/Virtualization:Appliances:SelfContained>`__
project.
As a user you don't need to work with the boxes because this is all done
by the plugin and provided as a service by the {kiwi} team. The `boxbuild`
command knows where to fetch the box and also cares for an update of the
box when it has changed.
Building an image with the `boxbuild` command is similar to building with
the `build` command. The plugin validates the given command call with the
capabilities of the `build` command. Thus one part of the `boxbuild` command
is exactly the same as with the `build` command. The separation between
`boxbuild` and `build` options is done using the `--` separator like
shown in the following example:
.. code:: bash
$ kiwi-ng --type iso system boxbuild --box leap -- \
--description kiwi/build-tests/{exc_description_disk} \
--set-repo {exc_repo_leap} \
--target-dir /tmp/myimage
.. note::
The provided `--description` and `--target-dir` options are
setup as shared folders between the host and the guest. No other
data will be shared with the host.