KIWI的安装及使用

举报
再累也要打游戏 发表于 2018/02/23 18:55:11 2018/02/23
【摘要】 本文档主要记录了镜像制作工具KIWI的安装和使用方法。 KIWI官方提供了一篇很详细的文档:https://doc.opensuse.org/projects/kiwi/doc/,但是全英文且冗长,可以做工具书使用,但是不适合新手用户阅读,因此本文简单记录KIWI的上手方式,为新手用户提供一个较平滑的学习曲线。

1   前言

1.1         文档目标

本文档主要记录了镜像制作工具KIWI的安装和使用方法。

KIWI官方提供了一篇很详细的文档:https://doc.opensuse.org/projects/kiwi/doc/,但是全英文且冗长,可以做工具书使用,但是不适合新手用户阅读,因此本文简单记录KIWI的上手方式,为新手用户提供一个较平滑的学习曲线。

1.2         文档读者

本文档的主要读者是KIWI的使用者。

2   KIWI简介

KIWISUSE提供的镜像制作工具,可以制作各种类型的镜像,包括容器镜像(lxc|dockerlxc|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-preparekiwi-create,其中kiwi-prepare步骤创建了一个目录,并以该目录为根路径(使用chroot工具)安装了一个操作系统,kiwi-create步骤则将该目录再次打包为一个镜像。

Kiwi在进行preparecreate两个步骤时都依赖于一个核心配置文件——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属性,该属性有两个可选值:systemboot,其中system表示要生成的是一个可安装的镜像,如iso等,而boot则表示要生成的是一个已安装的镜像,如vhd等。

 preferences记录了要生成镜像的主要信息,其中最重要的是type参数中的image子参数,该参数决定了生成镜像的具体类型,可选值包括“lxc|docker”、“ext2|ext3|ext4|btrfs|squashfs”、“tbz”、“cpio”、“iso”、“oem”、“pxe”、“split”、“vmx”等等。

 profiles可以认为是一个标签的声明,可以声明出多个标签,该标签在profiles中被声明后可以使用在packagesdrivers参数中,然后在kiwi --preparekiwi –create中通过--add-profile参数来指定标签,从而使得仅带有该标签的packagesdrivers参数有效。

 users标签应该是最好理解的标签了,它定义了系统中的初始用户。需要注意的是其中的密码默认是加密存储的,需要通过kiwi –createpassword来生成。如果需要进行不加密存储,则需要添加pwdformat="plain"参数。

 repository参数指定了制作镜像时安装软件所使用的源。需要注意的是,这里的源不仅是用于安装系统中的软件,同时也用于安装系统自身。

 package参数用于定义包相关的属性,通过type不同进行区分:type=bootstrap表示这些package需要在系统的安装阶段进行预安装,type=image表示这些package需要在系统制作镜像时进行安装,type=delete表示这些package需要在系统制作镜像时预先删除。

config.xml文件编写好之后,通过kiwi --preparekiwi --create即可创建出需要的镜像,这个过程比较简单,在此就不多赘述了。


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。