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. C#接口定义

    C#接口定义 C#不支持多重继承,但是客观世界出现多重继承的情况又比较多.为了避免传统的多重继承给程序带来的复杂性等问题,C# 提出了接口的概念.通过接口可以实现多重继承的功能.  继承该接口的类或结 ...

  2. matlab远程调试

    转自:http://blog.163.com/hair_communication/blog/static/20198911920124145414945/ 只是作者好像也是转来的,原来出处好像是百度 ...

  3. Siamese Network

    摘抄自caffe github的issue697 Siamese nets are supervised models for metric learning [1]. [1] S. Chopra, ...

  4. 总结ing

    1,iOS的GCD中如何关闭或者杀死一个还没执行完的后台线程? 举例来说,我通过导航进入到了一个视图,这个视图加载的时候会新建一个线程在后台运行,假设这个线程需要从网络中读取许多数据,需要一定的时间, ...

  5. Oracle多表连接方法

    笛卡尔连接[结果集为各表记录的乘积] SELECTt * FROM table_1, table_2, table_n SELECTt * FROM table_1 CROSS JOIN table_ ...

  6. C++使用GDI+实现图片格式转换

    主要是我在设置壁纸时遇到的个小问题,因为设置壁纸只能是bmp格式的图片,不可能我喜欢的壁纸就都是bmp格式的,就想怎么转换一下图片的格式,于是就在百度搜怎么弄,搜到了可行方法,却没有实现代码,有些看起 ...

  7. ssm整合-图片上传功能(转)

    本文介绍 ssm (Spring+SpringMVC+Mybatis)实现上传功能. 以一个添加用户的案例介绍(主要是将上传文件). 一.需求介绍 我们要实现添加用户的时候上传图片(其实任何文件都可以 ...

  8. 高封装的property方法

    class Person(): def __init__(self): self.__age = 0 def set_age(self, age): if age < 0 or age > ...

  9. NuGet管理和还原程序包

    在很多开源的程序下载下来不能使用,一般都是平台X86 和X64没有修改,还一个就是程序缺少资源包文件.用Nuget还原即可: 一般建议先修改好平台,然后用NuGet还原程序包.

  10. css3 媒体查询的学习。

    1.什么是媒体查询 媒体查询可以让我们根据设备显示器的特性(如视口宽度.屏幕比例.设备方向:横向或纵向)为其设定CSS样式,媒体查询由媒体类型和一个或多个检测媒体特性的条件表达式组成.媒体查询中可用于 ...