SDB:KIWI Cookbook 虚拟镜像
所有 KIWI 编辑
虚拟化 - 我们的第三个配方
之前的示例侧重于创建可以使用 qemu 或作为 LiveCD/DVD 运行和测试的 iso 镜像。
Kiwi 支持创建 Xen 和 VMware 虚拟镜像。Virtualbox 另一个流行的虚拟化环境支持 VMware 虚拟磁盘格式,因此您可以使用 Virtualbox 或 VMware player 来执行在此示例中创建的 VMware 镜像。
我们再次使用 openSUSE 11.1 示例作为起点。
VMware 配方
准备时间
- 25 分钟
烹饪时间
- 13 分钟
配料
- 一个正在运行的 openSUSE 11.1 系统
- 一个 openSUSE 11.1 仓库(在线、DVD 或 iso 镜像)
- 已安装最新版本的 KIWI 工具集(至少版本 3.25)
- 大约 8 GB 的可用磁盘空间
常规设置
- 第一步
作为一般最佳实践,建议为不同类型的镜像在不同的目录中工作。
创建工作目录
复制用作起点的示例
- 第二步
更改 config.xml 文件以满足您的需求,例如更改描述、添加软件包等。
用于 VMware 的 config.xml
查看 config.xml 文件 (/tmp/myvmguest/config.xml),您会注意到 preferences 元素中的 type 标签发生了重大变化。与之前对 type 标签的使用相比,使用了新的属性,并且为 VMware 镜像生成而更改了值。让我们更详细地了解 type 标签。
type 标签
我们之前示例的 config.xml 文件,LiveCD 示例,包含如下类型的元素定义
<type primary="true" boot="isoboot/suse-11.1" flags="unified">iso</type>
值 "iso" 指定此类型声明用于创建 iso 类型的镜像,即 LiveCD。Kiwi 支持从同一镜像描述创建多种镜像类型,即支持多个“type”声明。因此,我们需要一种方法来指示应该通过默认方式生成哪种类型(命令行上没有 --type 参数)。这是通过 primary 属性实现的。设置 primary="true" 将镜像类型设置为默认值。
请参阅安装 kiwi-doc 包或在线版本中找到的 KIWI Image System Cookbook (/usr/share/doc/packages/kiwi/kiwi.pdf) ,了解有关“boot”和“flags”属性的详细信息 此处。
VMware 镜像的 type 元素定义如下所示
<type primary="true" filesystem="ext3" boot="vmxboot/suse-11.1" format="vmdk">vmx</type>
值 "vmx" 指定此类型声明用于创建可由 VMware 工具链使用的镜像。与 LiveCD 示例一样,将 "primary" 属性设置为 "true" 以使此镜像成为默认镜像。该镜像将使用 VMware 磁盘格式 vmdk 和 ext3 文件系统。
如果我们要使用相同的镜像描述来创建多个镜像,我们可以将多个“type”元素添加到 config.xml 文件中,如上所述。以下示例显示了如何在 config.xml 文件中指定此内容。
<preferences> <type primary="true" filesystem="ext3" boot="vmxboot/suse-11.1" format="vmdk" >vmx</type> <type boot="isoboot/suse-11.1" flags="unified" >iso</type> </preferences>
在此示例中,VMware 镜像被视为默认镜像。因此,需要将 --type iso 命令行参数添加到 kiwi 的调用中,以触发 LiveCD 镜像的创建。请注意,指定命令行上未在 XML 中配置的类型将触发错误。
vmwareconfig 部分
在 Kiwi 创建的 VMware 镜像的 config.xml 文件中,我们需要指定 VM 本身的属性。VM 属性使用 vmwareconfig 元素指定。
VMware 需要一种所谓的客户机配置。此配置指定虚拟硬件配置文件,即硬盘驱动器、内存等。可以在 Kiwi config.xml 文件的 vmwareconfig 元素中指定 VMware 硬件配置文件。kiwi 工具链将处理该部分并生成 VMware 的适当编码,以下是一个简短示例。
<vmwareconfig memory="512"> <vmwaredisk controller="ide" id="0"/> </vmwareconfig>
基于此信息,Kiwi 将创建一个具有 512 MB 内存和 IDE 磁盘控制器接口的 VMware 客户机镜像,磁盘 ID 为 0。
使用 Kiwi 构建 VMware 镜像允许您有条件地包含软件包,即仅在构建 VMware 镜像时才包含的软件包。其他镜像类型也支持此功能。有关详细信息,请参阅安装 kiwi-doc 包的 KIWI Image System Cookbook (/usr/share/doc/packages/kiwi/kiwi.pdf) 或在线版本 此处。使用 "packages" 元素上的 "type" 属性可以包含条件软件包,如下所示。
<packages type="vmware"> </packages>
- 构建 VMware 镜像
完成更改后,我们现在可以使用 Kiwi 构建我们的 VMware 虚拟机。以下命令还使用自动挂载的 DVD 作为安装源。如前所述,目标目录预计为空,否则 kiwi 工具链将出错。
- 镜像准备
- # kiwi --prepare /tmp/myvmguest --root /tmp/myvm-root --set-repo /media/SU1110.001
- 镜像创建
- # kiwi --create /tmp/myvm-root -d /tmp/myvm-image
完成 Kiwi 镜像创建过程后,您可以使用 /tmp/myvm-image 中的 .vmx 和 .vmdk 文件在 VMware player 或 Virtualbox 中运行 VM。
此外,Kiwi 还会创建一个带有 .raw 扩展名的文件(位于同一目录中)。该文件具有与物理硬盘相同的结构,并且可以与 Qemu 一起使用,在使用 VMware player 或 Virtualbox 时不需要它。
您可以使用以下命令使用 qemu 命令使用 .raw 文件
如果我们将 Xen 选定为此示例的首选虚拟环境,Kiwi 将生成 Xen 特定的虚拟磁盘镜像文件,以及 .raw 文件。
