Build Service/System Imaging
From openSUSE
This page describe the requirements for System Imaging tools within the openSUSE build service and the openSUSE distribution. Some of these requirements are already delivered by existing tools. This page is about to consolidate these and to integrate them into the Build Service and distribution where needed.
Contents |
The big goal
One unitary concept implemented in one project under the roof of openSUSE. Flexible enough to be usable in a wide field of applications.
Current possible purposes
- Images for OpenSuSE buildhosts
- Images for OpenSuSE LiveCD's
- Images for thin clients (Wyse, Neoware, HP, etc)
- Images for stacked solutions (SLEPOS)
- Images for Xen bases systems
Requirements
General Requirements
- Comfortable image description
- Possibility to use buildservice projects as package source
- Possibility to add fixed configurations
- Flexible source repository handling (package manager stack). As a first step a distribution independent stage is needed to setup the image and package requirements. An in my opinion optional second step can handle the distribution dependent package setup
- Possibility to add more than one repository
- No source restrictions (local,network,CD,mounted,loop mounted)
- GUI driven image creation
- Track down possibility for changes during image live time (in-place repository)
- Support for various filesystems including compressed read-only filesystems (cramfs,squasfs,...) and ISO's
- Support for boot infrastructure via
- network
- from CD
- from USB stick
Requirements for SUSE based Images
- Possibility to add configurations for autoyast
- Support for using patterns
Requirements for the openSUSE Build Service
First of all the openSUSE Build Service is aimed to be used for creating the openSUSE distribution in future. This leads to the requirement to produce:
- iso images
iso images are the CD or DVD images which can be used to install a openSUSE distribution on a hard disk. These are the same the images which get released as a new openSUSE (former SUSE Linux) distribution.
- Live CD images
CD and DVD images shall be created to boot and run a system directly from a CD/DVD image.
- XEN Images
XEN images shall be used to run as a XEN guest on an existing XEN-enabled Linux distribution.
- vmWare Images
Images to be run within the vmWare (player), similar to XEN
Usecases
official release build: We want to build or official images with the build service (for example the openSUSE 10.3 iso images or the Live CD images). The creation of these images shall be transparent and reproducable by everybody. So we need to host the image configuration on the Build Service.
modified release build: A build service user wants to create a modified version of our openSUSE distributions. This could be a version with different package selections or with replaced packages. It should be easy to use the existing image descriptions and host only the modifications within a build service project. (A policy needs to specify what is allowed and how to name the distribution).
building images based on existing solution stacks: It should be possible to use existing solution stacks (eg. a LAMP pattern) to create a specific appliance solution. We may should use pattern files from YaST to define these (problem: we need also to specify the build service projects).
Integration
We will not host images by default on the build service due to resource limitations. But all meta data shall be hosted on the build service, accessable by everybody to be used for modifications and to rebuild images.
image build: A click on a distribution description in the build service web interface should offer to build the image using the tools installed on the local workstation.
appliance building: Descriptions to build specific appliances should be able to reuse existing patterns as base descriptions.
A new distribution may be the result of an existing distribution (openSUSE 10.3 for example), but may contain changed pattern selections or changed packages. Only these should be hosted on the build service, but no data should get duplicated.
Existing Tools
KIWI
- Supports all of the mentioned general and SUSE specific requirements except the GUI for creating images more user friendly. Probably most important features are:
- Support for USB stick systems
- Support for CD/DVD systems (LiveCD / LiveDVD)
- Support for split systems (compressed images)
- Support for deployment from Network, CD and USB-Stick
- Support for different package managers because of an abstraction layer. Default is smart but zypper can be used as well (work in progress)
- Support for OpenSUSE projects as installation source
- Support for OpenSUSE patterns
- Image description as xml file
- Support for AutoYaST profiles to configure the image using YaST at boot time
- For details have a look at KIWI and KIWI System-Design
LiveCD script
- our official build script for LiveCDs
YaST Add-On Creator
- is able to create YaST addon product images
YaST Product Creator
- is able to create new installable distributions based on existing one
AutoYaST
- is able to automatically install a system depending on the target hardware
- can handle patterns
Development
KIWI
Development for kiwi takes place in the following repository:
Mailing Lists
- https://lists.berlios.de/mailman/listinfo/kiwi-devel
- https://lists.berlios.de/mailman/listinfo/kiwi-users
--[User:Marcus Schäfer] 15:13, 8 February 2007 (UTC)

