KIWI 是用于创建操作系统映像的系统。映像是带有一个文件的目录,该文件包含操作系统、其应用程序与配置、操作系统的文件系统结构、可能的附加元数据,以及(取决于映像类型)磁盘几何属性和分区表数据。通过 KIWI,可以创建 LiveCD 和 LiveDVD、USB 记忆棒、用于全虚拟系统的虚拟磁盘(如 VMware)、超级管理程序中半虚拟化的 XEN 映像,以及用于从网络引导的 PXE 环境。

17.1. KIWI 的先决条件

要使用 KIWI 构建映像,您需要以下先决条件:

  1. 用于进行操作的足够可用磁盘空间。

  2. KIWI 分为若干包,用于不同映像类型。在任何情况下,均需要包 kiwi。根据目标映像的不同,需要以下包:

    安装媒体

    kiwi-desc-oemboot

    虚拟化

    kiwi-desc-xenboot

    USB 记忆棒

    kiwi-desc-usbboot

    Network Client

    kiwi-desc-netboot

  3. 安装 kiwi-doc 包。您可以找到一些示例配置以了解结构及其内容。

  4. 了解 KIWI 配置文件及其结构。它基于 RELAX-NG 纲要并记录在 kiwi 包的 /usr/share/doc/packages/kiwi/kiwi.html 下。如果要从头创建配置文件或要插入元素或属性,则需要此文档。

17.2. 了解 KIWI 的构建进程

KIWI 的构建进程分为三个步骤:

  1. 物理扩展(准备).  此阶段用于准备新文件系统的内容。在该步骤中,会创建 root 目录,确定在映像中安装哪些包以及包含哪些用户配置文件。

  2. 逻辑扩展(创建).  该步骤需要准备步骤成功。逻辑扩展步骤基于第一步创建操作系统映像。

  3. 部署.  产生的映像类型可以使用不同的方法部署,如在硬盘上安装或通过虚拟系统(VMware、Qemu、VirtualBox)播放。

17.3. 映像描述

KIWI 构建映像类型需要映像描述。映像描述是一个目录,包含至少一个文件 config.xml,或者扩展名为 *.kiwi

17.3.1. 映像描述的内容

下表包含其他可选信息。但是,多数信息对于操作系统的较新功能来说是必需的:

表 17.1. 映像描述的其他文件和目录

config/

可选子目录。包含在安装所有映像包之后执行的 Bash 脚本。

config.sh

创建物理扩展时的可选配置脚本

config.xml

每个映像描述的配置文件,在第 17.3.2 节中说明

config-cdroot.tgz

存档,仅用于 ISO 映像

config-cdroot.sh

操作从 config-cdroot.tgz 解压缩的数据

config-yast-autoyast.xml

由 AutoYaST 创建的配置文件

config-yast-firstboot.xml

用于控制 YaST 首次启动服务的配置文件

images.sh

创建准备步骤时的可选配置脚本

root/

包含安装所有映像包之后更改的其他目录、特殊文件和脚本

17.3.2. config.xml 文件

关于映像描述的所有信息储存在中心配置 XML 文件 config.xml 中。每次执行 KIWI 时,会对照 RELAX NG 纲要验证 config.xml(有关此纲要语言的更多信息,请参见 http://www.relaxng.org)。因此建议使用支持 RELAX NG 的适当 XML 编辑器或使用 HTML 文件 /usr/share/doc/packages/kiwi/schema/kiwi.xsd.html 中关于该纲要的文档。

该配置文件包括几个部分:

  • 关于作者的一些描述、联系信息和简短注释。

  • 逻辑扩展阶段所需的自选设置选项。

  • 关于用户的信息,其名称、用户主目录及其密码。

  • 到安装源的链接。

  • 用于定义的映像类型的包的列表。

  • 以及可以在 RELAX NG 纲要文档的 HTML 文件中查看的其他次要信息。

以下示例显示了该文件的一个框架:

例 17.1. KIWI 配置文件

<image schemeversion="2.0" name="..."> 

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

  <description type="system"> 

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

    <author>...</author>
<contact>...</contact>
<specification>...</specification>
</description>
<preferences>

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

    <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">

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

    <user name="root" pwd="" home="/root"/>
</users>
<repository type="rpm-md">

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

    <source path="/home/rpmdir"/>
</repository>
<packages type="image" patternPackageType="onlyRequired">

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

    <package name="yast2-live-installer"/>
<package name="pam"/>
<!-- List of packages reduced -->
</packages>

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

每个 KIWI 配置文件的 root 元素。每个文件都需要版本号。可以使用可选的 kiwirevision 属性指定 KIWI 的 SVN 版本。

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

包含必需的描述,其中包括关于此映像描述的创建者的信息、其联系地址和简短说明。

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

创建必需的自选设置,其中包括关于此映像版本的信息、使用的包管理器、支持的映像类型和其他设置。

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

可选的 users 元素包含添加到此映像的所有用户的列表。user 元素包含名称、用户主目录的路径、密码和外壳。

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

包含由包管理器使用的必需安装源的列表。

https://doc.opensuse.org/projects/kiwi/doc/-LMLPHP

包含映像中的必需包列表。

有关该配置文件的更多细节在上述 HTML 页面中显示。

17.4. 使用 KIWI 创建设备

本节描述如何使用 KIWI 创建设备。设备是为特定任务特别设计的操作系统。例如,您可以创建专注于办公程序的设备。

17.4.1. 创建本地安装源

kiwi-doc 包中的示例需要有效的安装源才能创建映像。通常,这些示例可连接到一个网络资源。网络带宽越高,映像创建越快。如果网络速度不快或不希望使用网络,可创建一个本地安装源。按如下所示继续:

  1. 准备好安装 DVD。

  2. 打开外壳并转换为 root 用户。

  3. 为本地安装目录创建目录。这些示例通常使用路径 /image/CDs/full-VERSION-ARCH。使用相应的值替换占位符 VERSION 和 ARCH

  4. 装入媒体。使用相应的设备(通常是 dvdcdrom 等)替换 DRIVE

    mount -o loop /dev/DRIVE /mnt
  5. 将媒体的所有内容复制到安装目录中:

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

要使用本地安装源,只需要在 repository 元素中启用它:

<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. 创建映像

映像是一个虚拟磁盘映像,包含和在实际磁盘上一样的所有分区、引导加载程序信息和包。要创建 ISO 映像,请如下操作:

  1. 安装包 kiwi 和 kiwi-doc 并解决任何依赖性。

  2. 打开外壳并转换为 root 用户。

  3. 将目录 /usr/share/doc/packages/kiwi/examples/suse-11.0/suse-oem-preload 复制到当前目录。

  4. 打开文件 config.xml 并找到元素 repository。如果要使用本地安装源,请参加第 17.4.1 节以了解更多信息。

  5. 使用以下命令执行 KIWI 以准备第一个阶段(“物理扩展”):

    kiwi --prepare suse-oem-preload --root oem
  6. 构建 ISO 映像:

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

17.4.3. 通过 NFS 创建预装载映像

要创建具有 NFS 功能的映像,请如下操作:

  1. 打开外壳并转换为 root 用户。

  2. 将目录 /usr/share/doc/packages/kiwi/examples/suse-11.1/suse-oem-preload 复制到当前目录。

  3. 打开文件 suse-oem-preload/config.xml 并找到属性为 type="image" 的 packages 元素。

  4. 在 <packages type="image"> 和 </packages> 之间插入以下行并保存该文件:

    <package name="nfs-client"/>
  5. 步骤 5中所述重构建该映像。

17.5. 更多信息

有关 KIWI 的更多信息,请参见以下文档:

05-08 15:08