root阶段
创建或修改初始根文件系统内容。 这是添加替代分销支持的地方,还是建立在现有图像上的自定义。
只有一个元素可以一次使用它,除非特别注意不要盲目覆盖,而是适应其他元素提取的上下文。
-cache-ubuntu-tarball
检查cache文件夹(一个用于存放临时文件的文件夹)是否已经挂载,如果没有挂载,创建cache文件夹和挂载点,并且将其挂载到镜像build的目录下
-cache-ubuntu-tarball
下载镜像
-build-with-http-cache
这个脚本属于dpkg,它的作用就是如果配置了代理,就将Acquire::http::Proxy “$http_proxy”;写入配置文件中
-block-apt-translations
配置apt不获取 translations files
-base-dib-run-parts
这个脚本的作用是将dib-run-parts放到镜像的bin目录下
-block-daemons
这个脚本的作用是防止很多进程和服务自动启动
-shared_apt_cache
这个脚本的作用就是创建了一个apt_cache_dir目录用于cacheapt的包,然后把这个目录挂载到了镜像下的目录
-trim-dpkg
这个脚本配为dpkg配置了force-unsafe-io和无语言,主要是dpkg的配置. extra-data阶段
extra-data阶段的工作是将一些数据拷贝到镜像中备用
-copy-apt-keys
这个脚本属于dpkg element 它的作用是拷贝apt-keys到 tmp/apt_keys目录下
-create-pkg-map-dir
这个脚本属于pkg-map element 它的作用是把每个元素中的pkg-map文件拷贝到 /user/share/pkg-map/$元素目录下
-manifest-dir
这个脚本属于manifests element 它的作用是创建了一个用于存放manifest文件的文件夹
-store-build-settings*
这个脚本属于base element 它作用是把环境变量写到了钩子文件夹下的文件中
-enable-install-types
这个脚本属于install-types element 它的作用是让安装的软件可以有不同的类型,例如git,pip等
在脚本中,建立了正确的安装类型的软链接
如果没有指定安装的类型,就用默认的方式安装
-squash-package-install
在elements/package-installs/bin下的package-installs-squash中说这个脚本的作用是把所有的安装包的文件汇总到一个文件中 pre-install阶段
-disable-apt-recommends
这个脚本对apt进行了配置
-remove-apt-xapian-index
这个脚本卸载了 apt-xapian-index 按照脚本中的说法,原因是这个包有问题,在更新的时候会导致出错
-remove-grub
这个脚本暂时卸载了grub 因为在chroot的时候,没有块设备的存在,所以grub的安装钩子会报错. 所以暂时移除grub,来避免冲突
-dib-python
这个脚本建立了dib-python的软连接到系统中的python
-install-bin
将diskimage-builder的bin目录下的内容拷贝到了镜像内
-set-ubuntu-mirror
这个脚本配置了ubuntu的apt源
-add-apt-keys
这个脚本将之前配置的apt的key用apt-key add xxx命令配置
-package-installs
这个脚本从/tmp/in_target.d/pre-install.d和package-installs.json获取了安装的信息,来判断现在这个阶段是否要进行安装.
-baseline-tools
这个脚本安装了一些python的基本包
-dib-init-system
这个脚本将dib-init-system这个脚本拷贝到了镜像系统的/usr/bin目录下 dib-init-system脚本用于判断系统的init的类型:
-apt-get-update
这个脚本中apt-get进行更新
-package-uninstalls
这个脚本和之前的package-install是同一个套路,只不过反过来了. install 阶段
install阶段应该是最主要的一个解决,在这里会对镜像进行具体的软件的安装,按照需求安装一些包.
-baseline-environment
这里的install-packages -m 的-m是mapper.这里通过mapper的方式来对系统和包进行了解耦.
install-packages -m 通过iscsi_package和现在对应的操作系统,就能找到具体要安装的包的名字
-up-to-date
调用的方法是相同的,这里也是一层解耦的封装
-package-installs -package-uninstalls
这个元素会在extra-data install post-install和pre-install根据配置文件对包进行安装和删除.
-set-cloud-init-sources
DIB_CLOUD_INIT_DATASOURCES的值是Ec2,这里把这个参数写到了cloud-init的配置文件中
-cloud-init
配置了manage_etc_host这个选项
-install-init-scripts
把希望开机启动的脚本拷贝到了对应的位置让他们发挥作用
-store-build-settings
保存了创建dib的参数
-disable-rfc3041
禁止ipv6
-autoremove
apt-get -y autoremove post-install阶段
post-install阶段做一下安装的收尾工作,同样,它也是在chroot下运行的
-package-installs和95-package-uninstalls在之前已经说明过作用了
-enable-init-scripts
如果初始化是openrc的方式,需要执行一下rc-update
-dkms
dkms 是指 Dynamic Kernel Module Support. Fedora和Ubuntu支持DKMS run_d_in_target finalise
-bootloader
这个脚本的作用是安装bootloader
目前的bootloader主要有两种,extlinux和grub2 这个脚本的作用是一个通用的bootloader安装的程序,
在dib支持的所用linux发行版都可以用这个脚本来安装bootloader
-remove-bogus-udev-links
这是为了解决opensuse的一个bug
-clean-up-cache
清除缓存
-write-dpkg-manifest
把安装的包写到了manifest文件中
https://www.youtube.com/watch?v=Nq6idDU2Mn4
export DISTRO_NAME=centos
export DIB_RELEASE=6.5
export ELEMENTS_PATH=/root/yjfwk/.octavia_dev/lib/python2./site-packages/diskimage_builder/elements export DISTRO_NAME=centos7
export DIB_RELEASE=GenericCloud-
export DIB_CLOUD_INIT_DATASOURCES="OpenStack,ConfigDrive,Ec2"
export DIB_CLOUD_IMAGES=CentOS--x86_64-GenericCloud-.qcow2 disk-image-create vm debian -p qemu-guest-agent >>debian1.txt >&
disk-image-create ubuntu vm - rain5 -t raw >> rain5.txt >&
wget http://cloud.centos.org/centos/7/images/CentOS-7-x86_64-OracleCloud.raw.tar.gz
file test.raw
fdisk -l test.raw
kpartx -a test.raw
losetup -a
dd if=/dev/mapper/loop0p1 of=test.xfs.raw bs=1M mkdir /tmp/mnt
mount test.raw /tmp/mnt
chroot /tmp/mnt /bin/bash
echo nameserver 114.114.114.114 > /etc/resolv.conf
rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
yum install https://yum.puppetlabs.com/puppetlabs-release-el-7.noarch.rpm
yum install puppet
yum install ntpdate lsof
vi /etc/selinux/config
disabled
openstack windows image creation newbie
http://cloud.centos.org/centos/7/images/

diskimage-builder element的更多相关文章

  1. 跟踪mqttv3源码(二)

    对于spring-mqtt.xml中的标签: <int-mqtt:message-driven-channel-adapter> <int-mqtt:outbound-channel ...

  2. 曹工说Spring Boot源码(7)-- Spring解析xml文件,到底从中得到了什么(上)

    写在前面的话 相关背景及资源: 曹工说Spring Boot源码(1)-- Bean Definition到底是什么,附spring思维导图分享 曹工说Spring Boot源码(2)-- Bean ...

  3. Builder(生成器)-对象创建型模式

    一.意图 将一个复杂对象的构建与它的表示分离,使得同样的构造过程可以创建不同的表示. 二.动机 一个复杂的对象的构造过程中,原料相同,可能会要求生产不同的产品,并且生产的产品种类还能够方便的增加.Bu ...

  4. Mybatis框架解析之Builder解析

    首先我们从builder这个类入手,首先我们注意到BaseBuilder,其实它的本质上市一个抽象类,它从本质上抽象出了Builder的一切,我猜想这里一定使用了建造者模式,但是这个抽象类里面居然没有 ...

  5. 基于element ui的级联选择器组件实现的分类后台接口

    今天在做资产管理系统的时候遇到一个分类的级联选择器,前端是用的element的组件,需要后台提供接口支持.     这个组件需要传入的数据结构大概是这样的,详细的可参考官方案例: [{ value: ...

  6. Salesforce Lightning Builder Flows (Salesforce Lightning 构建Flows)

    本文构建Salesforce Lightning Flows 只是一个简单的实现步骤,原文地址如下: https://trailhead.salesforce.com/en/content/learn ...

  7. org.apache.ibatis.builder.IncompleteElementException: Could not find result map java.util.HashMap

    这样的配置有问题吗? <select id="getFreightCollectManagementList" resultMap="java.util.HashM ...

  8. mybatis项目启动报错 The content of element type "resultMap" must match "(constructor?,id*,result*,association*,collection*,discriminator?)".

    启动项目报错 2018-02-26 17:09:51,535 ERROR [org.springframework.web.context.ContextLoader] - Context initi ...

  9. Intellij-插件安装-安装CodeGenerator插件并且添加Builder模板

    Intellij IDEA 2018.1.2版本 CodeGenerator插件地址:https://github.com/lotabout/CodeGenerator/releases 步骤一:安装 ...

  10. c++Builder Delphi XML 解析例子

    XMLDocument; Xml.XMLIntf.hpp Xml.XMLDoc.hpp #include "Xml.Win.msxmldom.hpp" XMLDocument控件 ...

随机推荐

  1. Mysql limit 优化,百万至千万级快速分页,--复合索引的引用并应用于轻量级框架

    MySql 性能到底能有多高?用了php半年多,真正如此深入的去思考这个问题还是从前天开始.有过痛苦有过绝望,到现在充满信心!MySql 这个数据库绝对是适合dba级的高手去玩的,一般做一点1万篇新闻 ...

  2. Breaking Biscuits(模板题-求凸边形的宽)

    Breaking Biscuits 时间限制: 1 Sec  内存限制: 128 MB  Special Judge提交: 70  解决: 26[提交] [状态] [讨论版] [命题人:admin] ...

  3. MAC下查看环境变量的值的方法

    方法很简单,用到的命令是:echo. env : 查看所有的环境变量 方法:启动终端->输入 echo + 环境变量名, 回车,即可看到边聊的值. 例如:echo $JAVA_HOME

  4. js 实现序列号效果实现

    前端的朋友可能遇到过这样的需求,要求在页面输入一串序列号,或激活码(就像在PC正版软件中的序列号),可是HTML中并没有为我们提供类似的组件,我们来自己实现一个: 大体的思路是在表单里有一个隐藏的in ...

  5. 记录表TABLE中 INDEX BY BINARY_INTEGER 的作用

    type my_number_arr is table of number index by binary_integer; 其作用是,加了”index by binary_integer ”后,my ...

  6. Python 统计不同url svn代码变更数

    #!/bin/bash/python # -*-coding:utf-8-*- #svn统计不同url代码行数变更脚本,过滤空行,不过滤注释. import subprocess,os,sys,tim ...

  7. 通过Samba实现Linux与Windows间的文件共享

    Samba Samba,是用来让Linux系列的操作系统与Windows操作系统的SMB/CIFS(Server Message Block/Common Internet File System)网 ...

  8. 使用Git将本地项目上传到码云

    01.码云上创建一个项目 testgit (名字随意) 02.进入本地想要上传的目录,然后使用git bash 03.cd到想要上传的目录 04.$ git init 初始化一个git 本地仓库(项目 ...

  9. Oracle创建表空间,添加用户及授权

    工具/原料 PLSQL 方法/步骤 1.在PLSQL里,用system/css(orcl系统用户)登陆,登陆的时候普通用户登陆选择normal就可以了   2.Oracle用户新增 执行语句 crea ...

  10. tcl之控制流-break/continue