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/

最新文章

  1. 七天学会ASP.NET MVC (三)——ASP.Net MVC 数据处理
  2. .NET的面向对象
  3. Gradle简介和安装
  4. Android按键事件处理流程 -- KeyEvent
  5. bzoj1042: [HAOI2008]硬币购物
  6. OC基础(6)
  7. Redis 键(key)
  8. nginx+ tomcat集群+动静资源分离
  9. HDU 2986 Ballot evaluation(精度问题)
  10. CSS背景特殊属性值
  11. org.apache.jasper.JasperException: - Page directive must not have multiple occurrences of pageencoding
  12. 翻译:Identifier Name标识符命名规则
  13. Linux显示cat帮助信息并退出
  14. SQLCODE和SQLERRM .
  15. WebStorm出现中文乱码解决代码
  16. Sybase IQ 的基础
  17. Golang 并发简介
  18. Asp.Net Core 禁用预编译
  19. mysql常用反斜杠命令
  20. 04.基于IDEA+Spring+Maven搭建测试项目--application-context.xml配置

热门文章

  1. 【[USACO17DEC]Standing Out from the Herd】
  2. 2018年第九届蓝桥杯【C++省赛B组】第二题 明码
  3. Matlab将矩阵保存为图像
  4. 【洛谷P1314】[NOIP2011]聪明的质监员
  5. GPU和CPU耗时统计方法
  6. C# 命名空间与语句
  7. HTML第一章:初始HTML
  8. 删除已有的 HTML 元素
  9. 内置函数SQLCODE和SQLERRM的使用
  10. swiper轮播始终居中active图片