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#右键窗体弹出菜单

    在工具箱(快捷键ctrl+w+x)——菜单和工具栏中找到 在属性中用这个绑定 然后写后台代码

  2. Linux内存管理 - buddy系统

    本文目的在于分析Linux内存管理机制中的伙伴系统.内核版本为2.6.31.1. 伙伴系统的概念 在系统运行过程中,经常需要分配一组连续的页,而频繁的申请和释放内存页会导致内存中散布着许多不连续的页, ...

  3. vscode-tfs插件报错:TF30063

    解决方案:删除tfs凭证,然后用vs重新登陆tfs服务器,此时会在电脑上创建要一个新的tfs凭证,然后再用vscode-tfs操作tfs就没有问题了.

  4. Python学习之路——基础1

    python作为一门解释型的编程语言,和c/c++等其他语言都或多或少有相通的地方,所以有语言基础的话,学起来还是方便一些.所以我的笔记对于相对简单的概念可能会选择放过,但对自己记录的东西我会力求完备 ...

  5. 1.vue脚手架搭建项目

    前言: 在使用Vue-cli脚手架搭建项目之前,需要安装node.js和npm以及vue-cli. 开始搭建项目: 1.打开cmd win+R 2.转到要搭建的项目路径: g: cd Webapp/v ...

  6. 修改SecureCRT默认会话字符集

    修改SecureCRT默认会话字符集 1.找到SecureCRT配置文件 Default.ini 2.修改Default修改为UTF-8 将S:"Output Transformer Nam ...

  7. 实际案例告诉你为什么Oracle不建议使用varchar2来存时间数据

    问题现象2015年9月客户系统中一条高逻辑读的SQL语句,在业务高峰期执行频率较高,导致系统逻辑读居高不下,同时带高了系统CPU,SQL语句主体部分如下 SELECT /* ^^*/ COUNT(DI ...

  8. Git工作流指南:功能分支工作流(转)

    一旦你玩转了集中式工作流,在开发过程中可以很简单地加上功能分支,用来鼓励开发者之间协作和简化交流. 功能分支工作流背后的核心思路是所有的功能开发应该在一个专门的分支,而不是在master分支上.这个隔 ...

  9. 用IDEA搭建基于maven的springboot项目

     第一步:新建一个Project 第二步:选择Spring Initializr和SDK 然后next  第三步:修改Group和Artifact 第四步:按自己的需求选,这里我选的是Web,然后ne ...

  10. vue学习之路 - 0.背景

    1 单页面应用程序 Single Page Application (SPA) 从字面意义来看就是一个网站就一个页面,如: coding 网易云音乐 极致的用户体验,就像nativeapp一样 优点: ...