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. java web工程的错误页面的简单配置

    jsp页面,本身服务器也会将该页面翻译成一个servlet页面,所以请求该页面就会有可能出现错误的情况,就会出现下面类似的页面 这样给客户看到并不友好. 1.jsp页面<%@ page %> ...

  2. SGU 269. Rooks(DP)

    题意: 给n(<=250)条水平网格,然后在上面放k棋子,每行每列都只能放一个.求方法总数. Solution: 简单的DP, 只要对给出的水平长度排个序就很容易处理了. 需要用到高精度. 偷懒 ...

  3. 【实习记】2014-08-18使用curl排错http头的content-length

        总结一,用curl排错Content-Length设置错误,误导了客户端. 访问/cgi-bin/txproj_list时,firebug显示总是不多不少15秒,调试其他问题时郁闷. fire ...

  4. CentOS 6下安装nodejs 0.9.0

    确保安装了python,大部分安装失败都是由于python版本过低导致.安装之前,升级python版本,升级步骤 http://www.tomtalk.net/wiki/Python. [root@S ...

  5. java 使用substring 截取特殊字符串的后一位或者数字

    关于截取特殊的字符串的后一位或者数字 需求:截取特殊字符为  .   后一位 String[] str = uri.split("/"); String str1 = str[st ...

  6. XPATH 注入的介绍与代码防御

    0x01 介绍 软件未正确对 XML 中使用的特殊元素进行无害化处理,导致攻击者能够在终端系统处理 XML 的语法.内容或命令之前对其进行修改.在 XML 中,特殊元素可能包括保留字或字符,例如“&l ...

  7. 我的接口框架---框架函数文件common.php

    <?php defined('JDHU') OR die('no allow access'); /** * 加载配置文件 */ function &get_config($replac ...

  8. Dalvik虚拟机进程和线程的创建过程分析

    从前面Dalvik虚拟机的运行过程分析一文可以知道,Dalvik虚拟机除了可以执行Java代码之外,还可以执行Native代码,也就是C/C++函数. 这些C/C++函数在执行的过程中,又可以通过本地 ...

  9. matlab操作之--读取指定文件夹下的“指定格式”文件

    %% 正负样本所在folder fext='*.png';%要读取的文件格式 positiveFolder='F:\课题\Crater detection\machingLearning\Positi ...

  10. LightOj_1274 Beating the Dataset

    题目链接 题意: 给一个文档, 这个文档由yes .no 组成, 共有s个byte, 共有n个yes.no. 假设yes的个数为yes_num, no的个数为no_num. 将这n个数进行排列, 对于 ...