KIWI的安装及使用
1 前言
1.1 文档目标
本文档主要记录了镜像制作工具KIWI的安装和使用方法。
KIWI官方提供了一篇很详细的文档:https://doc.opensuse.org/projects/kiwi/doc/,但是全英文且冗长,可以做工具书使用,但是不适合新手用户阅读,因此本文简单记录KIWI的上手方式,为新手用户提供一个较平滑的学习曲线。
1.2 文档读者
本文档的主要读者是KIWI的使用者。
2 KIWI简介
KIWI是SUSE提供的镜像制作工具,可以制作各种类型的镜像,包括容器镜像(lxc|docker、lxc|docker),压缩包镜像(tbz),安装包镜像(iso),虚拟机镜像(vmx)等等。
3 KIWI的安装
KIWI的安装在联网情况下相对比较简单,只需要配置好zypper源然后执行zypper install即可。
3.1 配置zypper源
由于在kiwi安装过程中可能出现循环包依赖从而导致始终无法安装成功的情况,因此建议将zypper自带的源全部删除,然后替换成国内源。
配置过程如下:
# 删除zypper自带的源 zypper rr Suse-SLES-Application # 替换新的源 zypper ar http://mirrors.aliyun.com/opensuse/distribution/openSUSE-stable/repo/oss/ aliyun-oss zypper ar http://mirrors.aliyun.com/opensuse/distribution/openSUSE-stable/repo/non-oss/ aliyun-non-oss |
3.2 安装kiwi
配置好zypper后,kiwi的安装就相对比较简单了,执行如下命令即可。
zypper in kiwi kiwi-doc kiwi-templates kiwi-desc-vmxboot kiwi-desc-usbboot kiwi-desc-isoboot kiwi-desc-xenboot kiwi-desc-oemboot squashfs |
4 KIWI使用
Kiwi的使用通常分为两步,kiwi-prepare和kiwi-create,其中kiwi-prepare步骤创建了一个目录,并以该目录为根路径(使用chroot工具)安装了一个操作系统,kiwi-create步骤则将该目录再次打包为一个镜像。
Kiwi在进行prepare和create两个步骤时都依赖于一个核心配置文件——config.xml文件,kiwi自身在/usr/share/kiwi/image下面提供了许多config.xml模板,使用时可以选择适合自己的模板适当进行修改即可。下面将本人使用的config.xml文件列出来,并对其关键部分进行讲解。
<?xml version="1.0" encoding="utf-8"?>
<image schemaversion="6.2" name="initrd-isoboot-suse-SLES12"> <description type="boot">① <author>Marcus Schaefer</author> <contact>ms@novell.com</contact> <specification>boot/initrd image used for LiveDVD media</specification> </description> <preferences> <type image="vmx" filesystem="ext3" boot="vmxboot/suse-SLES12" format="vhd" bootprofile="default" bootkernel="std" bootloader="grub2"/>② <version>2.1.2</version> <packagemanager>zypper</packagemanager> <rpm-check-signatures>false</rpm-check-signatures> <locale>en_US</locale> <keytable>us.map.gz</keytable> <timezone>UTC</timezone> <hwclock>utc</hwclock> </preferences> <profiles>③ <profile name="default" description="Booting default setup"/> </profiles> <users group="root"> ④ <user home="/root" name="root" password="Huawei@123" pwdformat="plain" realname="root"/> </users> <repository type="yast2" alias="SLE-12-Server" status="replaceable">⑤ <source path="iso:///root/iso/SLE-12-Server-DVD-x86_64-GM-DVD1.iso"/> </repository> <packages type="bootstrap">⑥ <package name="filesystem"/> </packages> <packages type="image"> <package name="grub2"/> <package name="kernel"/> <package name="screen"/> <package name="vim-enhanced"/> <package name="traceroute"/> <package name="lsof"/> <package name="strace"/> <package name="telnet"/> </packages> <packages type="delete"> <package name="cracklib-dict-full"/> <package name="cyrus-sasl"/> </packages> </image> |
下面对文件中的关键部分进行讲解。
① Description记录了要生成镜像的描述信息,其中最重要的一个属性是type属性,该属性有两个可选值:system和boot,其中system表示要生成的是一个可安装的镜像,如iso等,而boot则表示要生成的是一个已安装的镜像,如vhd等。
② preferences记录了要生成镜像的主要信息,其中最重要的是type参数中的image子参数,该参数决定了生成镜像的具体类型,可选值包括“lxc|docker”、“ext2|ext3|ext4|btrfs|squashfs”、“tbz”、“cpio”、“iso”、“oem”、“pxe”、“split”、“vmx”等等。
③ profiles可以认为是一个标签的声明,可以声明出多个标签,该标签在profiles中被声明后可以使用在packages和drivers参数中,然后在kiwi --prepare和kiwi –create中通过--add-profile参数来指定标签,从而使得仅带有该标签的packages和drivers参数有效。
④ users标签应该是最好理解的标签了,它定义了系统中的初始用户。需要注意的是其中的密码默认是加密存储的,需要通过kiwi –createpassword来生成。如果需要进行不加密存储,则需要添加pwdformat="plain"参数。
⑤ repository参数指定了制作镜像时安装软件所使用的源。需要注意的是,这里的源不仅是用于安装系统中的软件,同时也用于安装系统自身。
⑥ package参数用于定义包相关的属性,通过type不同进行区分:type=bootstrap表示这些package需要在系统的安装阶段进行预安装,type=image表示这些package需要在系统制作镜像时进行安装,type=delete表示这些package需要在系统制作镜像时预先删除。
config.xml文件编写好之后,通过kiwi --prepare和kiwi --create即可创建出需要的镜像,这个过程比较简单,在此就不多赘述了。
- 点赞
- 收藏
- 关注作者
评论(0)