Zum Inhalt springenZur Seitennavigation springen: vorherige Seite [Zugriffstaste p]/nächste Seite [Zugriffstaste n]
Bezieht sich auf SUSE Linux Enterprise Server 11 SP4

17 KIWI

KIWI ist ein System zur Erstellung von Betriebssystem-Images. Ein Image ist ein Verzeichnis mit einer Datei, die das Betriebssystem, seine Anwendungen und Konfigurationen, die Dateisystemstruktur des Betriebssystems, mögliche zusätzliche Metadaten und (abhängig vom Image-Typ) auch Plattengeometrie und Partitionstabellendaten enthält. Mit KIWI können Sie LiveCDs und LiveDVDs, USB-Sticks, virtuelle Festplatten, um vollständig virtuelle Systeme wie VMware einzuspielen, XEN-Images zur Paravirtualisierung in einem Hypervisor und eine PXE-Umgebung für den Start über das Netzwerk erstellen.

17.1 Voraussetzungen für KIWI

Zum Erstellen von Images mithilfe von KIWI müssen die folgenden Voraussetzungen erfüllt sein:

  1. Stellen Sie ausreichend Speicherplatz für den Vorgang zur Verfügung.

  2. KIWI ist in mehrere Pakete gegliedert, die für verschiedene Image-Typen vorgesehen sind. In jedem Fall benötigen Sie das Basispaket kiwi. Abhängig vom Ziel-Image brauchen Sie die folgenden Pakete:

    Image-Typ

    Paketname

    Installationsmedien

    kiwi-desc-oemboot

    Virtualisierung

    kiwi-desc-xenboot

    USB-Sticks

    kiwi-desc-usbboot

    Network Client

    kiwi-desc-netboot

  3. Installieren Sie das Paket kiwi-doc. Sie können anhand einiger Beispielkonfigurationen eine Vorstellung von der Struktur und dem Inhalt gewinnen.

  4. Machen Sie sich mit der KIWI-Konfigurationsdatei und ihrer Struktur vertraut. Sie basiert auf einem RELAX NG-Schema und ist im kiwi-Paket unter /usr/share/doc/packages/kiwi/kiwi.html dokumentiert. Sie brauchen dieses Dokument, wenn Sie die Konfigurationsdatei von Grund auf neu erstellen oder wenn Sie Elemente oder Attribute einfügen.

17.2 Erläuterungen zum Erstellungsvorgang von KIWI

Der Erstellungsvorgang von KIWI besteht aus drei Schritten:

  1. Physische Erweiterung (Vorbereitung).  Diese Stufe bereitet den Inhalt Ihres neuen Dateisystems vor. Während dieses Schrittes wird das root-Verzeichnis angelegt, Sie bestimmen, welche Pakete auf Ihrem Image installiert und welche Benutzerkonfigurationsdateien eingeschlossen werden.

  2. Logische Erweiterung (Erstellung).  Diese Stufe setzt einen erfolgreichen Vorbereitungsschritt voraus. Der Schritt der logischen Erweiterung erstellt das Betriebssystem-Image auf der Basis des ersten Schrittes.

  3. Bereitstellung.  Das resultierende Image kann mit verschiedenen Methoden bereitgestellt werden, etwa auf Festplatte installiert oder durch ein Virtualisierungssystem ausgeführt (VMware, Qemu, VirtualBox).

17.3 Image-Beschreibung

KIWI benötigt eine Image-Beschreibung, um einen Image-Typ zu erstellen. Die Image-Beschreibung ist ein Verzeichnis, das mindestens eine Datei config.xml oder alternativ mit der Erweiterung *.kiwi enthält.

17.3.1 Inhalt der Image-Beschreibung

Die folgende Tabelle enthält zusätzliche optionale Informationen. Die meisten Informationen sind jedoch für die spätere Funktionalität des Betriebssystems obligatorisch:

Tabelle 17.1: Zusätzliche Dateien und Verzeichnisse zur Image-Beschreibung

Datei/Verzeichnis

Beschreibung

config/

Optionales Unterverzeichnis. Enthält Bash-Skripten, die nach der Installation aller Image-Pakete ausgeführt werden.

config.sh

Optionales Konfigurationsskript während der Erstellung der physischen Erweiterung

config.xml

Konfigurationsdatei für jede Image-Beschreibung, erläutert in Abschnitt 17.3.2

config-cdroot.tgz

Archiv, nur für ISO-Images verwendet

config-cdroot.sh

Manipuliert extrahierte Daten aus config-cdroot.tgz.

config-yast-autoyast.xml

Von AutoYaST erstellte Konfigurationsdatei

config-yast-firstboot.xml

Konfigurationsdatei zur Steuerung des YaST-Firstboot-Service

images.sh

Optionales Konfigurationsskript bei der Erstellung des Vorbereitungsschritts

Root/

Enthält andere Verzeichnisse, besondere Dateien und Skripten, die nach der Installation aller Image-Pakete geändert werden.

17.3.2 Die Datei config.xml

Sämtliche Informationen über eine Image-Beschreibung werden in einer zentralen XML-Konfigurationsdatei mit dem Namen config.xml gespeichert. Bei jeder Ausführung von KIWI wird config.xml anhand eines RELAX NG-Schemas überprüft. (Weitere Informationen zu dieser Schemasprache siehe http://www.relaxng.org.) Daher wird empfohlen, einen angemessenen XML-Editor mit RELAX NG-Unterstützung zu verwenden oder die Dokumentation über das Schema in der HTML-Datei /usr/share/doc/packages/kiwi/schema/kiwi.xsd.html zu verwenden.

Die Konfigurationsdatei besteht aus mehreren Teilen:

  • Beschreibung zum Verfasser, Kontaktdaten und eine kurze Erläuterung,

  • erforderliche Voreinstellungsoption für die Stufe der logischen Erweiterung,

  • Informationen über die Benutzer, deren Namen, deren Home-Verzeichnisse und deren Passwörter,

  • Links zu Repositorys,

  • eine Liste aller Pakete, die für den definierten Image-Typ verwendet werden,

  • sowie andere, weniger wichtige Informationen, die Sie in der obigen HTML-Datei der RELAX NG-Schemadokumentation nachschlagen können.

Das folgende Beispiel zeigt ein Gerüst der Datei:

Beispiel 17.1: KIWI-Konfigurationsdatei
<image schemeversion="2.0" name="..."> 1
  <description type="system"> 2
    <author>...</author>
    <contact>...</contact>
    <specification>...</specification>
  </description>
  <preferences> 3
    <type primary="true" boot="..." flags="...">iso</type>
    <type boot="..." filesystem="ext3" format="vmdk">vmx</type>
    <type boot="..." filesystem="ext3">xen</type>
    <type boot="..." filesystem="squashfs" flags="unified">oem</type>
    <version>2.7.0</version>
    <size unit="M">780</size>
    <packagemanager>zypper</packagemanager>
    <rpm-check-signatures>False</rpm-check-signatures>
    <rpm-force>False</rpm-force>
    <locale>en_US.UTF-8</locale>
    <oem-swap>no</oem-swap>
    <oem-boot-title>USB</oem-boot-title>
  </preferences>
  <users group="users"> 4
    <user name="root" pwd="" home="/root"/>
  </users>
  <repository type="rpm-md"> 5
    <source path="/home/rpmdir"/>
  </repository>
  <packages type="image" patternPackageType="onlyRequired"> 6
    <package name="yast2-live-installer"/>
    <package name="pam"/>
    <!-- List of packages reduced -->
  </packages>

1

Das Stammelement jeder KIWI-Konfigurationsdatei. Jede Datei benötigt die Versionsnummer. Mit einem optionalen kiwirevision-Attribut können Sie eine SVN-Revision von KIWI angeben.

2

Enthält eine obligatorische Beschreibung mit Informationen über den Ersteller dieser Image-Beschreibungen, seiner Kontaktadresse und einer kurzen Erläuterung.

3

Enthält obligatorische Voreinstellungen mit Informationen über die Version dieses Image, den verwendeten Paketmanager, die unterstützten Image-Typen und andere Einstellungen.

4

Das optionale users-Element enthält eine Liste aller Benutzer, die dem Image hinzugefügt wurden. Das user-Element enthält den Namen, den Pfad zu seinem Home-Verzeichnis, Passwort und die Shell.

5

Enthält eine obligatorische Liste der Repositorys, die der Paketmanager verwendet.

6

Enthält eine obligatorische Liste der Pakete, die im Image eingeschlossen sind.

Weitere Details über die Konfigurationsdatei werden in der obigen HTML-Datei gezeigt.

17.4 Erstellen von Appliances mit KIWI

Dieser Abschnitt beschreibt, wie Sie mithilfe von KIWI Appliances erstellen. Eine Appliance ist ein speziell gestaltetes Betriebssystem für eine bestimmte Aufgabe. Sie können beispielsweise eine Appliance mit Fokus auf Büroprogramme erstellen.

17.4.1 Erstellen einer lokalen Installationsquelle

Alle Beispiele in den kiwi-doc-Paketen benötigen eine gültige Installationsquelle, um ein Image zu erstellen. Gewöhnlich erhalten die Beispiele eine Verbindung zu einer Netzwerkquelle. Je höher die Netzwerkbandbreite ist, um so schneller erfolgt die Image-Erstellung. Wenn Sie über kein schnelles Netzwerk verfügen oder es nicht verwenden möchten, erstellen Sie eine lokale Installationsquelle. Führen Sie dazu die folgenden Schritte aus:

  1. Holen Sie Ihre Installations-DVD.

  2. Öffnen Sie eine Shell und melden Sie sich als root an.

  3. Legen Sie ein Verzeichnis für Ihr lokales Installationsverzeichnis an. Die Beispiele verwenden gewöhnlich den Pfad /image/CDs/full-VERSION-ARCH. Ersetzen Sie die Platzhalter VERSION und ARCH durch ihren jeweiligen Wert.

  4. Hängen Sie das Medium ein. Ersetzen Sie den Platzhalter DRIVE durch das entsprechende Gerät (gewöhnlich dvd, cdrom usw.):

    mount -o loop /dev/DRIVE /mnt
  5. Kopieren Sie sämtlichen Inhalt des Mediums in das Installationsverzeichnis.

    cp -a /mnt/* /images/CDs/full-VERSION-ARCH

Zur Verwendung der lokalen Installationsquelle müssen Sie diese einfach im Element repository aktivieren:

<repository type="...">
  <!-- Remove the comment markers in the next line -->
  <!-- <source path="/image/CDs/full-VERSION-ARCH" -->
  <source path="opensuse://openSUSE:11.0/standard"/> 
</repository>

17.4.2 Erstellen eines Image

Ein Image ist ein virtuelles Disk-Image, das alle Partitionen, Bootloader-Informationen und Pakete wie auf einer realen Festplatte enthält. So erstellen Sie ein ISO-Image:

  1. Installieren Sie die Pakete kiwi und kiwi-doc und lösen Sie etwaige Abhängigkeiten auf.

  2. Öffnen Sie eine Shell und melden Sie sich als root an.

  3. Kopieren Sie das Verzeichnis /usr/share/doc/packages/kiwi/examples/suse-11.0/suse-oem-preload in Ihr aktuelles Verzeichnis.

  4. Öffnen Sie die Datei config.xml und suchen Sie das Element repository. Wenn Sie eine lokale Installation verwenden möchten, erhalten Sie unter Abschnitt 17.4.1 weitere Informationen.

  5. Führen Sie KIWI zur Vorbereitung der ersten Stufe (physische Erweiterung) mit dem folgenden Kommando aus:

    kiwi --prepare suse-oem-preload --root oem
  6. Erstellen Sie das ISO-Image:

    kiwi --create oem --type iso --destdir /tmp/myoem

17.4.3 Erstellen eines Preload-Image mit NFS

So erstellen Sie ein Image mit NFS-Funktionen:

  1. Öffnen Sie eine Shell und melden Sie sich als root an.

  2. Kopieren Sie das Verzeichnis /usr/share/doc/packages/kiwi/examples/suse-11.1/suse-oem-preload in Ihr aktuelles Verzeichnis.

  3. Öffnen Sie die Datei suse-oem-preload/config.xml und suchen Sie das Element packages mit dem Attribut type=„image“.

  4. Fügen Sie die folgende Zeile zwischen <packages type=„image“> und </packages> ein und speichern Sie die Datei:

    <package name="nfs-client"/>
  5. Erstellen Sie das Image neu, wie unter Schritt 5 beschrieben.

17.5 Weiterführende Informationen

Weitere Informationen finden Sie in den nachfolgenden Dokumenten im KIWI-Portal unter http://en.opensuse.org/Portal:KIWI.