• 定制Centos系统(基于6.x)


    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
  • 相关阅读:
    Nginx Mac笔记
    当一个女人门外有一个流氓时,她该做什么
    图片圆角并居中显示解决方案
    caffe源码学习之Proto数据格式【1】
    google gflag使用方法举例
    降维之pca算法
    聚类之dbscan算法
    ubuntu 使用sudo apt-get update 出现 被配置多次导致无法升级错误解决方法
    关于python使用threadpool中的函数单个参数和多个参数用法举例
    python科学计算之numpy
  • 原文地址:https://www.cnblogs.com/uttu/p/6265326.html
Copyright © 2020-2023  润新知