1.获取安装界面代码

     挂载image/install.img:mount image/install.img /mnt/5 -o loop
     复制挂载后的代码至self_intall:cp -r /mnt/5 self_install
 
2.自定义glade图形界面
     具体的开发见python下的GTK开发笔记
 
     所有的ui都在"self_install/5/usr/share/anaconda/ui/"中,可以先参考实例,然后在自己使用glade作图,注意在table前加入align,做好glade后,如命名tscfg.glade,放入"self_install/5/usr/share/anaconda/ui/"目录中;同时进入目录,以vim打开tscfg.glade与其它任一glade,添加一些前置属性
 
3.添加图形控制代码,根目录为"self_install/5/"
     1).添加启动项及对应的UI后台控制
          在"usr/lib/anaconda"目录下
               dispatch.py中installSteps元组中,添加'("tscfg",),'元素
               在gui.py的stepToClass元组中,添加'"tscfg" : ("tscfg_gui", "TscfgWindow"),'元素
                    这里的含义是tscfg ui的后台使用iw目录下的tscfg_gui.py的TscfgWindow类:定义输入框值的获取方式,及getNext()即点击next时的动作,将interactive动作的值传入给后台
          在usr/lib/anaconda/iw/中定义tscfg_gui.py进行前台UItscfg.glade的后台控制
 
     2).添加ks.cfg识别的command tscfg
          在"usr/lib/python2.6/site-packages/pykickstart/commands"目录下
               添加ts.cfg文件,以network.py为样本(涉及到多个键值对的传递),在class FC3_TscfgData的__init__方法定义需要封装的变量,及以'_'开头的属性方法:与NetworkData对应;
                         以timezone.py为样本定义class FC3_Tscfg,并定义_getParser与parse方法
                                   指定ks.cfg文件的解析方法
               在__init__.py文件中引入"import tscfg"
          在"usr/lib/python2.6/site-packages/pykickstart/handlers"目录下
               修改control.py在commandMap的所有子字典中添加'"tscfg":tscfg.FC3_Tscfg,'键值对:这里添加后,在ks.cfg中添加ks.cfg才能识别
                    在dataMap的所有子字典中添加'"TscfgData":tscfg.FC3_TscfgData,'键值对,所有键值对的值都需要这种形式来保存
 
          在usr/lib/anaconda/kickstart.py中添加数据封装方法:
                         在dataMap字典中添加'"TscfgData":TscfgData,',commandMap字典中添加'"tscfg":Tscfg,'
                         并定义class TscfgData(commands.tscfg.FC3_TscfgData):及execute方法
                         定义class Tscfg(commands.tscfg.FC3_Tscfg):及execute方法
                                   将ks.cfg中的默认参数复制给对应的anaconda.id.tscfg对象,Data用来保存键值对的参数
 
     3).写入最终系统的方法
          在"usr/lib/anaconda"目录下
               在instdata.py中:
                         class InstallData的reset()方法中添加'self.tscfg = tscfg.Tscfg()'(可以以timezone为参考例子进行相应内容的添加),指明self.tscfg为tscfg.py的Tscfg()实例,并且import tscfg
                              writeKS()方法中添加self.tscfg.writeKS(f)
                              write()方法中添加self.tscfg.write(self.anaconda.rootPath)
                                   分别调用tscfg.py中Tscfg类的writeKS()与write()方法:将配置写入安装后的anaconda_ks.cfg与配置文件中
                                        安装完后,有backend.py的writeConfiguration方法,进一步调用tscfg的write(),此时没有参数传递,需要将write()方法的除self外参数去掉,来写入Data形式的配置文件
               
                         
     4).安装步骤的调整:
          在dispatch.py的installSteps全局变量中,将tscfg放到第一个,在系统安装时先进行配置
 
     5).设置此步不可跳过:
          在usr/lib/anaconda/kickstart.py的setSteps()/setStep()方法中添加dispatch.skipStep('tscfg', skip=0)
 
4.整合打包
     使用"mksquashfs self_install/ install.img"重新生成install.img,然后替换掉image目录下的install.img,并在isolinux/ks.cfg中添加启动项tscfg,在打包为镜像
 
5.图片及其他信息的修改
     安装图片在"self_install/5/usr/share/anaconda/pixmaps"目录下
     在isolinux目录下也有一个,其修改见"定制Centos系统"笔记
     系统启动按Esc后,出现的Start Centos在"/etc/centos-release"中修改

基于Centos6.x定制化安装步骤的更多相关文章

  1. CentOS6.7定制化制作ISO

    CentOS6.7定制化制作ISO 以CentOS 6.7-minimal为例. 欢迎大家转载,并保留原文出处.内容若有错误或补充,请联系:szyzln@126.com 本文主要讲解如何在已有官方Ce ...

  2. 基于百度EasyDL定制化图像识别平台的海洋鱼类识别方法

    [目的]鱼类识别对渔业资源的开发利用有着重要的意义.针对海底环境恶劣.拍摄环境亮度低.场景模糊的实际情况导致海底观测视频品质差,视频中的鱼类识别难的问题以及现有鱼类识别方法存在的鱼类标注数据集过少导致 ...

  3. Centos7.5的定制化安装

    一.前言 关于定制化centos7.5的镜像真的是历经波折,前前后后.来来回回尝试了不少于20次,上网找了各种关于定制7系统的方法,都没有成功... 但最终功夫不负有心人终于解决了,O(∩_∩)O哈哈 ...

  4. CentOS6 x86_64最小化安装优化脚本

    #!/bin/bash #centos6. x86_64系统最小化安装优化脚本 #系统基础优化,建议以root运行 if [ $USER != "root" ];then echo ...

  5. Centos6.4最小化安装后使用xfce桌面环境

    由于我个人使用的Centos是在虚拟机中最小化安装的,gnome实在是不喜欢,所以自己装了个xfce,安装后启动不起来,才发现x window等依赖环境没装,为了少走弯路,在此写下安装过程. 1.yu ...

  6. centos6.5 最小化安装无法上网

    在VMware里装了个centos 6.5.  最小化安装后无法上网.在 google里找到答案 第一步:执行命令启动网卡 (最小化安装不是自动启动的) [root@localhost]# ifcon ...

  7. centos6.5最小化安装之后装图形化界面

    查看自己系统环境 # cat /etc/issue 先要安装KDE桌面环境,执行命令: # yum groupinstall "X Window System" "KDE ...

  8. CentOS-6.5-x86_64 最小化安装,已安装包的总数,这些包?

    一.我们怎么知道有多少的包被安装? [root@localhost ~]# rpm -qa | wc -l 217 二.怎样得知安装了那些软件包? [root@localhost ~]# rpm -q ...

  9. centos6.5下redis安装步骤总结

    1.首先下载一个版本 我用的是3.2.9 解压:tar -zxvf /redis-stable.tar.gz 在/usr/local/新建redis文件夹 然后把解压好的文件夹移动到/usr/loca ...

随机推荐

  1. ubuntu1404安装配置java环境(jdk8)

    这个安装比较简单,网上也有数不清的教学,我这里记录以下,方便以后万一失忆了回来看看能想起来.个人博客http://www.cnblogs.com/wdfwolf3/ 1.下载安装 言归正传,我们需要到 ...

  2. 中文翻译:pjsip教程(三)之ICE stream transport的使用

    1:pjsip教程(一)之PJNATH简介 2:pjsip教程(二)之ICE穿越打洞:Interactive Connectivity Establishment简介 3:pjsip教程(三)之ICE ...

  3. SGU Volume 1

    SGU 解题报告(持续更新中...Ctrl+A可看题目类型): SGU101.Domino(多米诺骨牌)------------★★★type:图 SGU102.Coprimes(互质的数) SGU1 ...

  4. php解决下单、抽奖并发导致的库存负数的问题

    我们知道数据库处理sql是一条条处理的,假设购买商品的流程是这样的: sql1:查询商品库存 if(库存数量 > 0) {     //生成订单...     sql2:库存-1 } 当没有并发 ...

  5. css字体大小设置em与rem的区别

    em 单位em是相对于父元素的,如果父元素没有设置字体大小,那就会追溯到body. 比如  如果我在box_text的父元素box加了一个字体大小   那么body的8px就会被box_text的父元 ...

  6. uoj164. 【清华集训2015】V 统计

    坑爹题面:http://uoj.ac/problem/164 正常题面: 对于一个序列支持下列5个操作: 1.区间加x 2.区间减x并与0取max 3.区间覆盖 4.单点查询 5.单点历史最大值查询 ...

  7. 使用PHP生成二维码的两种方法(带logo图像)

    一.利用Google API生成二维码 Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...

  8. 金山网络2014春季Android实习生招聘-成都站-笔试第一题

    实现单例模式,并实现方法int getResult(float a),将a*8后返回. package jinshanwangluo.exam; /** * @author guoxm * @date ...

  9. jQuery.Deferred对象

    一.前言 jQuery1.5之前,如果需要多次Ajax操作,我们一般会使用下面的两种方式: 1).串行调用Ajax $.ajax({ success: function() { $.ajax({ su ...

  10. jquery实现表格可变列宽插件开发

    工作中用到了表格的可变列宽,网上看了下,自己也实现了一个,整理贴记录. 测试环境chrome,ie8,firefox jquery版本1.8.2 原理:监听table第一行的mousemove事件,当 ...