- Kiwi-ng是一个主要用于创建和定制Linux发行版镜像的工具。
- 它不限于任何特定的 Linux 发行版,而是可以与各种发行版一起使用。
- Kiwi-ng 使用称为 Kiwi 配置文件的描述性 XML 文件来定义系统配置、包选择和要应用的任何自定义。
- 它提供了一种将系统配置、软件包和自定义组合到可启动映像文件中的方法。
- Kiwi-ng 提供了灵活且自动化的构建流程来创建自定义 Linux 映像。 它支持不同的构建环境,例如 chroot、虚拟机和云实例。
- 系统管理员和开发人员经常使用 Kiwi-ng 来创建用于特定目的的定制操作系统映像,例如虚拟设备、嵌入式系统或云实例。
主要功能
Kiwi NG (Next Generation) 是一个用于创建操作系统镜像的工具,Kiwi NG的主要功能包括:
- Flexible Configuration: Kiwi使用XML文件进行配置,可以灵活地定义要包含的软件包,配置文件,引导设置等。
- Two-Step Image Creation: Kiwi首先创建一个未打包的镜像树(包含所有文件和目录的文件系统),然后基于这个镜像树创建最终的镜像。这使得在创建最终镜像之前可以进行定制和调试。
- Support for Multiple Profiles: 在同一配置文件中,可以定义多个配置文件,每个配置文件可以有不同的设置和软件包。
- Integration with OBS: Kiwi可以与Open Build Service(OBS)集成,使得可以自动化构建和发布镜像。
- Support for Multiple Architectures: Kiwi可以创建用于多种硬件架构的镜像,包括x86,x86_64,ARM,和 PowerPC等。
- Support for Multiple Linux Distributions: Kiwi可以创建用于多种Linux发行版的镜像,包括openSUSE,SUSE Linux Enterprise,和其他基于RPM的发行版。
支持多种类型的镜像文件
它支持多种类型的镜像文件,包括但不限于:
- Live ISOs: 这些是可以从CD或USB驱动器引导的完整操作系统镜像。它们通常用于试用或安装操作系统。
- Virtual Machine Images: Kiwi可以创建用于各种虚拟化技术(如KVM,Xen,和 VMware)的镜像。
- Docker and OCI Images: Kiwi可以创建Docker和OCI(开放容器标准)兼容的容器镜像。
- Disk Images: Kiwi可以创建硬盘镜像,这些镜像可以写入物理硬盘驱动器或USB驱动器,并用作启动设备。
- PXE Boot Images: Kiwi可以创建用于网络引导的镜像。
Image创建过程
KIWI NG通过两步过程创建镜像:
-
第一步,准备操作,使用config.xml配置文件中提供的信息生成所谓的未打包的镜像树(目录)(参见镜像描述)
-
第二步,创建操作,基于未打包的镜像树和config.xml配置文件中提供的信息,创建指定格式的打包镜像或镜像。
一个简单例子(分两步走)
假设我们有一个用于SLES15 SP4 ISO镜像的基本配置。配置目录位于 /home/user/kiwi-config。
准备镜像
:第一步是准备镜像。这将为镜像创建一个根文件系统,安装指定的包,并应用任何指定的配置。运行以下命令:
kiwi-ng --type=iso system prepare --description=kiwi-descriptions/suse/x86_64/suse-leap-15.4 --root=/home/user/kiwi-root
这个命令告诉Kiwi使用位于 /home/user/kiwi-config 的配置来准备ISO镜像。准备好的根文件系统将在 /home/user/kiwi-root 中创建。
创建镜像
:准备好镜像后,你可以使用Kiwi来创建镜像。这一步将准备好的根文件系统和包打包成ISO镜像。运行以下命令:
sudo kiwi-ng --type=iso system create --root=/home/user/kiwi-root --target-dir=/home/user/kiwi-output
这个命令告诉Kiwi从位于 /home/user/kiwi-root 的准备好的根文件系统创建ISO镜像。生成的ISO镜像将被放置在 /home/user/kiwi-output 中。
更简单的例子 (一步完成)
一步构建镜像。build命令结合了kiwi的准备和创建步骤,以便通过只调用一条命令就能构建一个镜像。构建命令在/build/image-root下创建镜像的根目录,并且如果没有指定不同的话,会写入日志文件/build/image-root.log。结果镜像文件将在指定的target-dir中创建。
kiwi-ng --type=iso system build --description=kiwi-descriptions/suse/x86_64/suse-leap-15.4 --target-dir==/home/user/kiwi-output