KIWI 是用于创建操作系统映像的系统。映像是带有一个文件的目录,该文件包含操作系统、其应用程序与配置、操作系统的文件系统结构、可能的附加元数据,以及(取决于映像类型)磁盘几何属性和分区表数据。通过 KIWI,可以创建 LiveCD 和 LiveDVD、USB 记忆棒、用于全虚拟系统的虚拟磁盘(如 VMware)、超级管理程序中半虚拟化的 XEN 映像,以及用于从网络引导的 PXE 环境。
17.1. KIWI 的先决条件¶
要使用 KIWI 构建映像,您需要以下先决条件:
用于进行操作的足够可用磁盘空间。
KIWI 分为若干包,用于不同映像类型。在任何情况下,均需要包
kiwi
。根据目标映像的不同,需要以下包:安装媒体
kiwi-desc-oemboot
虚拟化
kiwi-desc-xenboot
USB 记忆棒
kiwi-desc-usbboot
Network Client
kiwi-desc-netboot
安装
kiwi-doc
包。您可以找到一些示例配置以了解结构及其内容。了解 KIWI 配置文件及其结构。它基于 RELAX-NG 纲要并记录在
kiwi
包的/usr/share/doc/packages/kiwi/kiwi.html
下。如果要从头创建配置文件或要插入元素或属性,则需要此文档。
17.2. 了解 KIWI 的构建进程¶
KIWI 的构建进程分为三个步骤:
物理扩展(准备). 此阶段用于准备新文件系统的内容。在该步骤中,会创建 root 目录,确定在映像中安装哪些包以及包含哪些用户配置文件。
逻辑扩展(创建). 该步骤需要准备步骤成功。逻辑扩展步骤基于第一步创建操作系统映像。
部署. 产生的映像类型可以使用不同的方法部署,如在硬盘上安装或通过虚拟系统(VMware、Qemu、VirtualBox)播放。
17.3. 映像描述¶
KIWI 构建映像类型需要映像描述。映像描述是一个目录,包含至少一个文件 config.xml
,或者扩展名为 *.kiwi
。
17.3.1. 映像描述的内容¶
下表包含其他可选信息。但是,多数信息对于操作系统的较新功能来说是必需的:
表 17.1. 映像描述的其他文件和目录¶
| 可选子目录。包含在安装所有映像包之后执行的 Bash 脚本。 |
| 创建物理扩展时的可选配置脚本 |
| 每个映像描述的配置文件,在第 17.3.2 节中说明 |
| 存档,仅用于 ISO 映像 |
| 操作从 |
| 由 AutoYaST 创建的配置文件 |
| 用于控制 YaST 首次启动服务的配置文件 |
| 创建准备步骤时的可选配置脚本 |
| 包含安装所有映像包之后更改的其他目录、特殊文件和脚本 |
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="...">
<description type="system">
<author>...</author>
<contact>...</contact>
<specification>...</specification>
</description>
<preferences>
<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">
<user name="root" pwd="" home="/root"/>
</users>
<repository type="rpm-md">
<source path="/home/rpmdir"/>
</repository>
<packages type="image" patternPackageType="onlyRequired">
<package name="yast2-live-installer"/>
<package name="pam"/>
<!-- List of packages reduced -->
</packages>
每个 KIWI 配置文件的 root 元素。每个文件都需要版本号。可以使用可选的 | |
包含必需的描述,其中包括关于此映像描述的创建者的信息、其联系地址和简短说明。 | |
创建必需的自选设置,其中包括关于此映像版本的信息、使用的包管理器、支持的映像类型和其他设置。 | |
可选的 | |
包含由包管理器使用的必需安装源的列表。 | |
包含映像中的必需包列表。 |
有关该配置文件的更多细节在上述 HTML 页面中显示。
17.4. 使用 KIWI 创建设备¶
本节描述如何使用 KIWI 创建设备。设备是为特定任务特别设计的操作系统。例如,您可以创建专注于办公程序的设备。
17.4.1. 创建本地安装源¶
kiwi-doc
包中的示例需要有效的安装源才能创建映像。通常,这些示例可连接到一个网络资源。网络带宽越高,映像创建越快。如果网络速度不快或不希望使用网络,可创建一个本地安装源。按如下所示继续:
准备好安装 DVD。
打开外壳并转换为
root
用户。为本地安装目录创建目录。这些示例通常使用路径
/image/CDs/full-
。使用相应的值替换占位符 VERSION 和 ARCH。VERSION
-ARCH
装入媒体。使用相应的设备(通常是
dvd
、cdrom
等)替换 DRIVE:mount -o loop /dev/DRIVE /mnt
将媒体的所有内容复制到安装目录中:
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 映像,请如下操作:
安装包
kiwi
和kiwi-doc
并解决任何依赖性。打开外壳并转换为
root
用户。将目录
/usr/share/doc/packages/kiwi/examples/suse-11.0/suse-oem-preload
复制到当前目录。打开文件
config.xml
并找到元素repository
。如果要使用本地安装源,请参加第 17.4.1 节以了解更多信息。使用以下命令执行 KIWI 以准备第一个阶段(“物理扩展”):
kiwi --prepare suse-oem-preload --root oem
构建 ISO 映像:
kiwi --create oem --type iso --destdir /tmp/myoem
17.4.3. 通过 NFS 创建预装载映像¶
要创建具有 NFS 功能的映像,请如下操作:
打开外壳并转换为
root
用户。将目录
/usr/share/doc/packages/kiwi/examples/suse-11.1/suse-oem-preload
复制到当前目录。打开文件
suse-oem-preload/config.xml
并找到属性为type="image"
的packages
元素。在
<packages type="image">
和</packages>
之间插入以下行并保存该文件:<package name="nfs-client"/>
如步骤 5中所述重构建该映像。
17.5. 更多信息¶
有关 KIWI 的更多信息,请参见以下文档:
http://developer.berlios.de/projects/kiwi - KIWI 的主页
file:///usr/share/doc/packages/kiwi/kiwi.pdf - 关于 KIWI 映像系统的大量描述