DIB流程-3 extra-data阶段

发布时间: 更新时间: 总字数:921 阅读时间:2m 作者: IP上海 分享 网址

diskimage-builder 是openstack社区用于制作镜像的工具.为了深入了解dib制作镜像的全过程,对一个简单的例子进行贯通的分析。

猪是怎么跑

这里先由一个简单的例子,来看看"猪是怎么跑的",顺便"吃点猪肉":

$ disk-image-create vm ubuntu-minimal

extra-data阶段

1185:1417line extra-data阶段的工作是将一些数据拷贝到镜像中备用

首先一览该阶段的脚本

-rwxrwxr-x  1 xion xion 1125 10月  1 11:22 01-copy-apt-keys
-rwxrwxr-x  1 xion xion  381 10月  1 11:22 10-create-pkg-map-dir
-rwxrwxr-x  1 xion xion  754 10月  1 11:22 20-manifest-dir
-rwxrwxr-x  1 xion xion  312 10月  1 11:22 50-store-build-settings
-rwxrwxr-x  1 xion xion 2387 10月  1 11:22 99-enable-install-types
-rwxrwxr-x  1 xion xion  423 10月  1 11:22 99-squash-package-install
xion@xion-Aspire-7750G:/tmp/dib_build.oRGH38zL/hooks/extra-data.d$

这些脚本的作用和写法都比较简单,所以这里只说每个脚本的作用是什么

01-copy-apt-keys

这个脚本属于dpkg element 它的作用是拷贝apt-keys到 tmp/apt_keys目录下

10-create-pkg-map-dir

这个脚本属于pkg-map element 它的作用是把每个元素中的pkg-map文件拷贝到 /user/share/pkg-map/$元素目录下

20-manifest-dir

这个脚本属于manifests element 它的作用是创建了一个用于存放manifest文件的文件夹

50-store-build-settings*

这个脚本属于base element 它作用是把环境变量写到了钩子文件夹下的文件中

99-enable-install-types

这个脚本属于install-types element 它的作用是让安装的软件可以有不同的类型,例如git,pip等 在脚本中,建立了正确的安装类型的软链接 如果没有指定安装的类型,就用默认的方式安装

99-squash-package-install

这个脚本属于package-install element

脚本的内容如下,十分简单,但是package-install-squash这个命令值得细看一下

1 #!/bin/bash
2 if [ ${DIB_DEBUG_TRACE:-0} -gt 0 ]; then
3     set -x
4 fi
5 set -eu
6 set -o pipefail
7
8 # Search for python first in case we are in a venv with python3 which
9 # should take precedence
10 python_path=$(command -v python || command -v python2 || command -v python3)
11
12 sudo -E $python_path $(dirname $0)/../bin/package-installs-squash --elements="$IMAGE_ELEMENT" --p    ath=$ELEMENTS_PATH $TMP_MOUNT_PATH/tmp/package-installs.json
~

elements/package-installs/bin下的package-installs-squash中说这个脚本的作用是把所有的安装包的文件汇总到一个文件中.

查看一下目前镜像中的文件/tmp/package-install.json

1 {
2  "install.d": {
3   "install": [
4    [
5     "ccache_package",
6     "base"
7    ],
8    [
9     "linux-image-generic",
10     "ubuntu"
11    ],
12    [
13     "dkms",
14     "dkms"
15    ]
16   ]
17  }
18 }
~

它的格式是

阶段:{
  操作:
  [
  包名,
  元素名
  ]
}

之后有的包是按照这个文件中的描述进行安装的.


extra-data 阶段的内容大概就是这些,下一篇介绍pre-install阶段.

参考

  1. 转载自
Home Archives Categories Tags Statistics
本文总阅读量 次 本站总访问量 次 本站总访客数