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

  <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 元素。每个文件都需要版本号。可以使用可选的 kiwirevision 属性指定 KIWI 的 SVN 版本。

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

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

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

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

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

有关该配置文件的更多细节在上述 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 的更多信息,请参见以下文档:

https://doc.opensuse.org/projects/kiwi/doc/的更多相关文章

  1. WAP调用微信支付https://pay.weixin.qq.com/wiki/doc/api/wap.php?chapter=15_1

    公司做的一个购物网站 之前微信版的网站要搬在webView上   可是微信支付是个问题 , 在外部浏览器怎么都发不起微信请求 , 原因是因为页面调用的微信浏览器自带JSAPI 在外部浏览器无法调用,但 ...

  2. Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc dtS312 s2018 s3f doc compc\Atitit PathUtil 工具新特性新版本 v8 s312.docx s2018 s3f doc compc\Atitit 操作日

    Atitit s2018 s3 doc list alldvc.docx .docx s2018 s3f doc compc s2018 s3f doc homepc sum doc dvcCompc ...

  3. Atitit s2018 s4 doc list dvchomepc dvccompc.docx .docx \s2018 s4 doc compc dtS44 \s2018 s4 doc dvcCompc dtS420 \s2018 s4f doc homepc \s2018 s4 doc compc dtS44\(5 封私信 _ 44 条消息)WebSocket 有没有可能取代 AJAX

    Atitit s2018 s4 doc list dvchomepc dvccompc.docx .docx \s2018 s4 doc compc dtS44 \s2018 s4 doc dvcCo ...

  4. 创建一个doc对象时候 如果读取了一个已存在的xml对象时候 该xml对象的结构已存在doc中 当改变该doc结构时候 不需要创建新的doc对象

    创建一个doc对象时候 如果读取了一个已存在的xml对象时候 该xml对象的结构已存在doc中 当改变该doc结构时候不 需要创建新的doc对象 直接添加即可 他会同步过去

  5. pytesseract 使用框架

    import pytesseract import cv2 img = cv2.imread("captcha.jpg",0) try: img.shape except Attr ...

  6. centos7 安装 tesseract4.1

    官网大法好,其他方法需要装好多依赖,还没安装成功...     yum-config-manager --add-repo https://download.opensuse.org/reposito ...

  7. windows下tesseract-ocr的安装及使用

    For CentOS 7 run the following as root: yum-config-manager --add-repo https://download.opensuse.org/ ...

  8. ubuntu18.04配置与美化

    一:初步系统配置 1 不可或缺的更新 如果在上一步中勾选了安装 Ubuntu 时下载更新,那么大部分的系统更新已经下载完毕. 不过为了确保,先移步到 设置→详细信息 ,点击右下角的 检查更新 ,如果存 ...

  9. Ubuntu 18.04 安装、配置和美化

    本文章修改自inkss的博文 为什么要修改原文? 本来我是想自己写这么一篇的,但是没想到在百度一搜,居然一篇好文.我之前没看到,真是可惜. 这篇文章主要是帮助我记录一些东西,如题. 原文虽然不错,但是 ...

随机推荐

  1. VCC、 VDD、VEE、VSS 电压理解

    VCC. VDD.VEE.VSS 版本一: 简单说来,可以这样理解: 一.解释 VCC:C=circuit 表示电路的意思, 即接入电路的电压: VDD:D=device 表示器件的意思, 即器件内部 ...

  2. 高斯混合模型和EM算法

    使用期望最大化算法(Expectation-Maximization)来进行密度估计(density estimation). 与k-means一样,给定的训练样本是,我们将隐含类别标签用表示.与k- ...

  3. Android进阶(二十)AndroidAPP开发问题汇总(四)

    · Android进阶(二十)AndroidAPP开发问题汇总(四) android:layout_width和android:width的区别 基中的android:layout_width和and ...

  4. ActiveMQ系列之四:用ActiveMQ构建应用

    Broker:相当于一个ActiveMQ服务器实例 命令行启动参数示例如下: 1:activemq start :使用默认的activemq.xml来启动 2:activemq start xbean ...

  5. redis持久化AOF与RDB

    RDB 持久化可以在指定的时间间隔内生成数据集的时间点快照(point-in-time snapshot). AOF 持久化记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原 ...

  6. linux内核原子变量与原子位操作API

    原子变量: arch/arm/include/asm/atomic.h 定义并初始化 atomic_t v = ATOMIC_INIT(0); 写 void atomic_set(atomic_t * ...

  7. php引用传值详解

    php的引用(就是在变量或者函数 .对象等前面加上&符号) 在PHP 中引用的意思是:不同的名字访问同一个变量内容. 与C语言中的指针是有差别的.C语言中的指针里面存储的是变量的内容在内存中存 ...

  8. 开发Oracle 函数

    函数用于返回特定的数据.如果在应用程序中,经常需要执行SQL语句来返回特定数据,那么可以基于这些操作建立特定的函数.建立函数的语法如下: CREATE [OR REPLACE] FUNCTION fu ...

  9. OpenLayers3的轨迹回放

    OpenLayers3实现轨迹回放需要动画操作,官网上的例子用的是postcompose,但是还可以使用javascript中setInterval和setTime. 我的例子是按官网上来的http: ...

  10. log4j日志的配置

    在项目开发中,记录错误日志方便调试.便于发现系统运行过程中的错误.便于后期分析, 在java中,记录日志有很多种方式,比如说log4j log4j需要导入的包: commons-loggin.jar ...