gushiren

  博客园  :: 首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理
root阶段
创建或修改初始根文件系统内容。 这是添加替代分销支持的地方,还是建立在现有图像上的自定义。
只有一个元素可以一次使用它,除非特别注意不要盲目覆盖,而是适应其他元素提取的上下文。
10-cache-ubuntu-tarball       
检查cache文件夹(一个用于存放临时文件的文件夹)是否已经挂载,如果没有挂载,创建cache文件夹和挂载点,并且将其挂载到镜像build的目录下
10-cache-ubuntu-tarball
下载镜像
50-build-with-http-cache
这个脚本属于dpkg,它的作用就是如果配置了代理,就将Acquire::http::Proxy “$http_proxy”;写入配置文件中
60-block-apt-translations
配置apt不获取 translations files
90-base-dib-run-parts
这个脚本的作用是将dib-run-parts放到镜像的bin目录下
99-block-daemons
这个脚本的作用是防止很多进程和服务自动启动
99-shared_apt_cache
这个脚本的作用就是创建了一个apt_cache_dir目录用于cacheapt的包,然后把这个目录挂载到了镜像下的目录
99-trim-dpkg
这个脚本配为dpkg配置了force-unsafe-io和无语言,主要是dpkg的配置.
 
extra-data阶段
extra-data阶段的工作是将一些数据拷贝到镜像中备用
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
在elements/package-installs/bin下的package-installs-squash中说这个脚本的作用是把所有的安装包的文件汇总到一个文件中
 
pre-install阶段
00-disable-apt-recommends
这个脚本对apt进行了配置
00-remove-apt-xapian-index
这个脚本卸载了 apt-xapian-index 按照脚本中的说法,原因是这个包有问题,在更新的时候会导致出错
00-remove-grub
这个脚本暂时卸载了grub 因为在chroot的时候,没有块设备的存在,所以grub的安装钩子会报错. 所以暂时移除grub,来避免冲突
01-dib-python
这个脚本建立了dib-python的软连接到系统中的python
01-install-bin
将diskimage-builder的bin目录下的内容拷贝到了镜像内
01-set-ubuntu-mirror
这个脚本配置了ubuntu的apt源
02-add-apt-keys
这个脚本将之前配置的apt的key用apt-key add xxx命令配置
02-package-installs
这个脚本从/tmp/in_target.d/pre-install.d和package-installs.json获取了安装的信息,来判断现在这个阶段是否要进行安装.
03-baseline-tools
这个脚本安装了一些python的基本包
04-dib-init-system
这个脚本将dib-init-system这个脚本拷贝到了镜像系统的/usr/bin目录下 dib-init-system脚本用于判断系统的init的类型:
99-apt-get-update
这个脚本中apt-get进行更新
99-package-uninstalls
这个脚本和之前的package-install是同一个套路,只不过反过来了.
 
install 阶段
install阶段应该是最主要的一个解决,在这里会对镜像进行具体的软件的安装,按照需求安装一些包.
00-baseline-environment
这里的install-packages -m 的-m是mapper.这里通过mapper的方式来对系统和包进行了解耦.
install-packages -m 通过iscsi_package和现在对应的操作系统,就能找到具体要安装的包的名字
00-up-to-date
调用的方法是相同的,这里也是一层解耦的封装
01-package-installs 99-package-uninstalls
这个元素会在extra-data install post-install和pre-install根据配置文件对包进行安装和删除.
05-set-cloud-init-sources
DIB_CLOUD_INIT_DATASOURCES的值是Ec2,这里把这个参数写到了cloud-init的配置文件中
10-cloud-init
配置了manage_etc_host这个选项
20-install-init-scripts
把希望开机启动的脚本拷贝到了对应的位置让他们发挥作用
50-store-build-settings
保存了创建dib的参数
80-disable-rfc3041
禁止ipv6
99-autoremove
apt-get -y autoremove
 
post-install阶段
post-install阶段做一下安装的收尾工作,同样,它也是在chroot下运行的
00-package-installs和95-package-uninstalls在之前已经说明过作用了
10-enable-init-scripts
如果初始化是openrc的方式,需要执行一下rc-update
97-dkms
dkms 是指 Dynamic Kernel Module Support. Fedora和Ubuntu支持DKMS
 
run_d_in_target finalise
50-bootloader
这个脚本的作用是安装bootloader
目前的bootloader主要有两种,extlinux和grub2 这个脚本的作用是一个通用的bootloader安装的程序,
在dib支持的所用linux发行版都可以用这个脚本来安装bootloader
50-remove-bogus-udev-links
这是为了解决opensuse的一个bug
99-clean-up-cache
清除缓存
99-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.7/site-packages/diskimage_builder/elements
 
export DISTRO_NAME=centos7
export DIB_RELEASE=GenericCloud-1503
export DIB_CLOUD_INIT_DATASOURCES="OpenStack,ConfigDrive,Ec2"
export DIB_CLOUD_IMAGES=CentOS-7-x86_64-GenericCloud-1503.qcow2
 
 
disk-image-create vm debian -p qemu-guest-agent >>debian1.txt 2>&1
disk-image-create ubuntu vm -0 rain5 -t raw >> rain5.txt 2>&1
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/
View Code

 

posted on 2018-08-30 16:32  gushiren  阅读(808)  评论(0编辑  收藏  举报