The openSUSE KIWI Image System provides a complete operating system image solution for Linux supported hardware platforms as well as for virtualisation systems like Xen, Qemu or VMware
With KIWI you can
- Create a tuned server appliance, containing your application and just enough operating system components
- Spin a live CD or DVD with just the packages and software you need
- Create a ready-to-run VMware virtual appliance
- Create a live USB key and carry your Linux system with you wherever you go
- Build a hard disk image for preloading onto hardware
- Build a new openSUSE project like openSUSE Medical
- and much more ...
The easy recipes provided below allow you to copy & paste the commands to a terminal in an effort to help you to get started quickly with KIWI
General Preparation for all recipes
Before we start cooking, we need to make sure that we have all required ingredients ready and set up correctly.
Learnings: Here you will get a brief introduction to KIWI, the required packages, commands and other useful getting started information.
Get Juiced - our first recipe
Ups - what? Which Juice?'
Juice is the pronunciation for JeOS, which stands for “Just Enough Operating System.” Wikipedia
The term JeOS refers to a customized operating system that precisely fits the needs of a particular application. This means it includes only those pieces of an operating system required to support a particular application, resulting in a small system.
Learnings: Based on one of the KIWI supplied templates build a JeOS (Just enough OS) system to get familiar with the KIWI process.
Tux Live - our second recipe
A functional openSUSE live system.
A live system image is a bootable operating system on portable media (CD, DVD, or USB for example). The live system treats the CD/DVD/USB as the hard disk of the system. This provides us the opportunity to carry our system with us and use it on any computer we can get our fingers on.
Learnings: Build an image you can boot and run from a CD. Take a first step to modify a base KIWI configuration to change the content of the image.
Going virtual - our third recipe
A Virtual Machine Image
The previous examples focused on the creation of iso images you could test and run with qemu or as a LiveCD/DVD. Kiwi supports also the creation of virtual images in various formats.
Learnings: Step into the world of virtualization with this VMware based example. Learn more about the XML elements and how they work.
Pimp your USB stick - our fourth recipe
A System on a USB Stick.
This example shows how you can use Kiwi to create a image that can be installed on a USB stick. The resulting live USB stick allows you to boot the OS and use the system as if the OS were installed on the system hard drive.
Learnings: Learn howto build an image that can run a Linux system from a USB stick. Include some "firstboot magic" to help configure the system on initial boot.
A Minimal GNOME Appliance - our fifth recipe
A GNOME System.
While our previous recipes focused on the various types of images we can create with Kiwi, this recipe focuses more on the content of the appliance and some configuration questions.
Learnings: Learn how to run GNOME as your graphical UI. Customize the base example to enable auto login, automatically start Firefox and customize GNOME right out of the gate.
Creating a Web-Kiosk image - our sixth recipe
A Kiosk System.
In this example we combine various topics discussed previously to create an image that is a bit more functional.
Learnings: Using the Minimum GNOME example as a base to make appropriate modifications in order to create an image that may be used as a web-kiosk.
Create a private Cloud with OpenNebula
Minimize cloud expansion time
Improving the set up time for your private cloud can be accomplished with image creation. Using a self configuring cloud node image can reduce the deployment of a new cloud node to a few minutes. This example describes how to create the infrastructure images and guest images for a private cloud based on the OpenNebula cloud infrastructure software.
Learnings: Using a firstboot work flow and network communication to implement self configuring images.
Create your own Cloud
with help of 3 images
Setting up your own cloud can be pretty simple. This example describes how to create the infrastructure images and guest images for your own cloud. The infrastructure is based on Eucalyptus.
Learnings: Using 3rd party software within our images
The splash screens
Building images with Kiwi is all about setting up an environment that meets your needs, i.e. customization. Thus, customization of the appearance during boot maybe just the ticket to make your image your own.
Learnings: The recipe describes the process of setting up customized splash screens for the boot process.
Data separation or handling partitioning
For OEM images partitioning is an often requested feature, especially since AutoYaST can do such a wonderful job with partitioning during install, well actually prior to installation.
This example provides some reasoning behind why Kiwi does not provide partitioning elements in config.xml (spare LVM support) and shows how to provide the generally desired data separation for application data and the OS part of an image as a post dump step.
KIWI and AutoYaST
a winning combination
YaST is the installation and configuration tool for the SUSE distributions. It is popular for its easy use and attractive graphical interface and the capability to customize your system quickly during and after the installation. YaST can be used to configure your entire system and with help of AutoYaST you can do this without any interaction.
Combine the power of KIWI and AutoYaST to easily customize your system.
Learnings: How to use YaST and AutoYaST as an configuration tool in an appliance
Web based Appliance Administration with WebYaST
WebYaST is the tool set that allows you to remotely administer an appliance (or regularly installed system) through a browser. WebYaST does not yet encompass all the functionality found in YaST, but you will probably find that the functionality provided is more than sufficient to administer your appliances. Find out how to build an image with Kiwi that includes WebYaST and the service running by default.
Learnings: How to include WebYaST in an appliance built by Kiwi.
the KIWI RELAX NG Schema
Adding a New Element into the KIWI RELAX NG Schema
Unlike our previous examples which focused on the use of Kiwi to create an image, this example is more developer focused as it shows how to make modifications to the schema governing the config.xml file.
Learnings: Find out how you can develop and customize the KIWI RELAX NG Schema which is used for validating the XML configuration file
Q: When booting from the network via PXE the following message is displayed
Found TFTP server in kernel cmdline
Checking TFTP server name: 192.168.0.10
TFTP server: 192.168.0.10 not found
Using TFTP server from dhcp-info
In this case the address given by the "kiwitftp" kernel parameter cannot be resolved and the address of the DHCP server is used for TFTP server as well.
This default behavior could potentially be incorrect. However, there is no risk with this behavior. The client already receives data from the DHCP server and therefore it should be permissible to receive additional data from the same server.
If the tftp server is not running on the DHCP server the image download will fail. It is recommended to provide the tftp server address in the pxelinux configuration file, even if it is the same address as the DHCP server.
If you would like requesting enhancements, reporting bugs or submitting patches, then please visit http://bugzilla.novell.com and enter the following data
- Classification: All
- Product: openSUSE.org
- Component: System Imaging
- Summary : "kiwi: <summarize your report here>"
and your description.
Please also look at http://en.opensuse.org/openSUSE:Submitting_bug_reports for details about submitting bugs.
Here a convenient URL to file
a new KIWI bug (with the settings above)