1.条件准备:

     按照需求,最小化安装Centos原生系统
          在安装后的系统中找到/root/install.log与/root/anaconda-ks.cfg文件

          前者用来找rpm包,后来用来做定制安装的ks.cfg
 
2.寻找安装包:
     从原生的centos镜像中扣出install.log中安装的所有rpm包,放到/mycentos/Packages目录下:
          获得包名:cat install.log | grep Installing | sed 's/Installing //g'|sed 's/^[0-9]\+://g' > packages.list
          从原生镜像的Packages目录下复制:cat packages.list |while read name ;do cp -a /orgin/Packages/$name.rpm /mycentos/Packages ;done
 
     从原生镜像中拷贝{images,isolinux,repodata,EFI,.discinfo}文件到/mycentos/目录下
 
3.指定安装ks.cfg
     将anaconda-ks.cfg重命名为ks.cfg放到/mycentos/isolinux目录下,修改isolinux/isolinux.cfg文件
          1).将第一行default指定的标签修改为linux,并将label linux的append修改为"append ks=file:/ks.cfg initrd=initrd.img"
          2).timeout指定为1
          3).将ks.cfg放到initrd.img的根目录下,然后在打包成initrd.img,具体方法见步骤5
          4).ks.cfg安装的时候默认的repo路径为cdrom:sr0,会找不到,进行如下修改:
 
%pre

mkdir /os
mount /dev/sr0 /os

repo --name="CentOS"  --baseurl=file:///os --cost=100
 
 
4.准备repodata,并生成iso
     将repodata中的comps.xml结尾的文件,重命名为/mycentos/comps.xml,并删除repodata中其他文件
          并在/mycentos目录下执行"declare -x discinfo=`head -1 .discinfo`"
               然后在用"createrepo -u "media://$discinfo" -g comps.xml ."生成repodata
               最后用"mkisofs -o /dst/mycentos.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T ."生成iso文件到/dst/mycentos.iso
     
5.修改图标:
          
去掉装机图片:修改/tank-os/isolinux/boot.msg文件,删除“slplash.lss”。 
删除/tank-os/isolinux/splash.lss这个图片。 
去掉安装过程中的CentOS字样: 
在安装光盘里面有两个.buildstamp文件,一个位于stage2.img中,一个位于initrd.img中, 
安装光盘运行时读取的是initrd.img中的那个.buildstamp文件,所以只要把initrd.img文件改了就可以了。 
2.6内核中的initrd.img采用cpio压缩,不再是2.4内核使用的ext2格式,无法使用mount -o loop 挂载。需 
要使用gunzip解压缩,然后再使用利用cpio给img解包

gzip格式

file initrd.img

显示为gunzip格式
# cp /mycentos/isolinux/initrd.img /tmp/initrd.img.gz 
# cd /tmp 
# gunzip initrd.img.gz 
# mkdir initrd 
# mv initrd.img initrd 
# cd initrd 
# cpio -ivmd < initrd.img 
然后修改.buildstamp文件,将CentOS改为tank-os即可.当然,里面的网址也可以改。 

生成新的initrd.img文件: 
#cd /tmp/initrd 
# find . | cpio -c -o > ../initrd.img 
# gzip ../initrd.img 
#cd .. 
# mv initrd.img.gz initrd.img 
# cp initrd.img /mycentos/isolinux/ 
lzma格式

file initrd.img

显示为data
#mkdir /tmp/init
# cp /mycentos/isolinux/initrd.img /tmp/init/initrd.lzma
# cd /tmp/init
#lzma -d initrd.lzma
#cpio -ivmd < initrd
然后修改.buildstamp文件,将CentOS改为tank-os即可.当然,里面的网址也可以改
 
#删除initrd大文件
#rm initrd
#find . | cpio -c -o > ../initrd.img
#lzma -z ../initrd.img
#mv ../initrd.img.lzma /mycentos/isolinux/initrd.img
 
 

然后将 initrd.img复制到/tank-os/isolinux/,覆盖旧的。

 
6.添加第三方自动安装程序
     idea:以%POST的方式在系统安装完成后自动安装
          1).准备repo,如opstack定制源
          2).将opstack源目录拷贝到/mycentos目录下
          3).在ks.cfg中添加对应脚本
               
rm -f /etc/yum.repos.d/*

echo -ne '

[epel]

name=Extra Packages for Enterprise Linux 6 - $basearch

baseurl=file:///os/opstack

failovermethod=priority

enabled=1

gpgcheck=0

gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-6

[epel-openstack-essex]

name=OpenStack Essex Repository for EPEL 6

baseurl=file:///os/opstack

enabled=1

skip_if_unavailable=1

gpgcheck=0

priority=98

' >>/etc/yum.repos.d/ts_cloud.repo

mkdir /os

mount /dev/cdrom /os

yum clean all

yum install -y libxml2-devel pkgconfig erlang openstack-utils openstack-keystone python-keystoneclient openstack-glance libnl-devel openstack-nova bridge-utils memcached mod_wsgi openstack-dashboard openstack-nova-novncproxy novnc mysql mysql-server MySQL-python rabbitmq-server tree
 
 
7.参考资料cpio -ivmd < initrd
     1).http://www.91linux.com/html/article/guanli/centos/20100525/19407.html
     2).http://my.oschina.net/sylee/blog/167759

定制Centos系统(基于6.x)的更多相关文章

  1. 初涉定制linux系统之——rpm相关安装包的准备

    在上一篇博客http://www.cnblogs.com/dengtr/p/5543820.html#3634582 中介绍了如何定制Centos系统镜像,但其中有个问题,就是服务所依赖的安装包不在原 ...

  2. 初涉定制linux系统之——自动化安装Centos系统镜像制作

    最近碰到个需求:要在内网环境安装centos6.5系统并搭建服务,但由于自动部署脚本里安装依赖包使用的是yum安装,而服务器无法连接外网,实施人员也不会本地yum源搭建O__O "….. 本 ...

  3. 在Centos系统中基于PowerDNS和Poweradmin自建域名解析服务器替代DnsPod

    本文讲述了我在Centos 7系统(其他版本的Centos未尝试)中基于PowerDNS和poweradmin自建域名解析服务器替代DnsPod的过程.通过本文所述方法,可以建立权威域名解析服务器的m ...

  4. 基于CentOS系统下的Oracle的安装

    背景 最近的数据库的实验课,要求利用虚拟机安装CentOS系统,并在此系统上安装Oracle_11g软件实现监听,在windows系统上安装SQL Developer软件作为客户端 ,从而可以在SQL ...

  5. 基于CentOS系统部署EPICS环境

    1.虚拟机安装CentOS系统2.打开终端,以root账户登录3.进入/usr/local目录下,新建文件夹epics,并进入该文件夹4.在/usr/local/epics目录下,执行wget htt ...

  6. Centos系统各种日志存详解

    Centos系统各种日志存储路径和详细介绍 Linux常见的日志文件详述如下 1./var/log/boot.log(自检过程) 2./var/log/cron (crontab守护进程crond所派 ...

  7. kickstart半自动安装centos系统与pxe自动安装centos系统

    一.kickstart半自动安装centos系统 关闭防火墙,关闭selinux,使用system-config-kickstart生成kickstart配置文件,启动xmanger-Passive ...

  8. CentOS系统MySQL双机热备配置

    1  概述 在集成项目中需要应对不同环境下的安装配置,主流操作系统大致可以分为三种:Linux.Windows以及UNIX.其中Linux备受青睐的主要原因有两个: 首先,Linux作为自由软件有两个 ...

  9. Net分布式系统之二:CentOS系统搭建Nginx负载均衡

    一.关于CentOS系统介绍 CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat ...

随机推荐

  1. 自己学习过程中关于以后有可能用到的技术的备份,微信广告滑屏组件 iSlider

    转载: iSlider 是个非常平滑的滑块,支持移动端 WebApp,HTML5App 和混合型的 App. iSlider是移动端的滑动组件的最佳解决方案.他和普通的web 端的滑动插件有很大不同, ...

  2. jquery ajax 后台响应成功,返回正确json但不执行success方法,执行error的问题

    昨天被这问题卡了好几个小时.查看http状态码:是200.而且返回了预想的json字符串.但执行的是error方法,不执行success方法.在网上查了一下,才发现是后台页面返回的json字符串格式不 ...

  3. 纯手工打造dropdownlist控件

    先上图吧,看看效果. JS代码: ; (function ($) { var DropdownList = function (oDataSouce, oControlsContainer, oLis ...

  4. 如何用.NET创建Windows服务

    我们将研究如何创建一个作为Windows服务的应用程序.内容包含什么是Windows服务,如何创建.安装和调试它们.会用到System.ServiceProcess.ServiceBase命名空间的类 ...

  5. linux 查看端口号命令

    Linux下如果我们需要知道2809号端口的情况的话,我们可以这样,如下命令: $netstat -pan|grep 24800 tcp        0      0 0.0.0.0:24800   ...

  6. Use_Case

    What is Use-Case 2.0?Use Case: A use case is all the ways of using a system to achieve a particular ...

  7. mac+eclipse+svn+maven经验总结(转)

    1.Eclipse for Mac:http://mirrors.ustc.edu.cn/eclipse/technology/epp/downloads/release/indigo/SR2/ecl ...

  8. 【算法】改进的冒泡排序 O(n^2) 稳定的 C语言

    改进的冒泡排序 一.算法描述 基于原冒泡排序 每次选取第一个元素作为主元往后进行比较,若遇到比它小的则放到它左边(即进行交换),若遇到比它大的则选取大的作为主元进行后续比较,每趟选取了无序列中最大元素 ...

  9. 最常用的动态sql语句梳理——分享给使用Mybatis的小伙伴们!

    公司项目中一直使用Mybatis作为持久层框架,自然,动态sql写得也比较多了,最常见的莫过于在查询语句中使用if标签来动态地改变过滤条件了.Mybatis的强大特性之一便是它的动态sql,免除了拼接 ...

  10. 通过CTAPI和Citect SCADA软件进行数据通讯

    官方文档 Citect SCADA 7.20 Technical Reference 参考文献 基于Citect远程控制的变流量堆料控制系统 [王玉增,顾英妮,王维 济南大学,机械工程学院 ,Cite ...