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. 手把手教你在Ubuntu上分别安装Nginx、PHP和Mysql

    手把手教你在Ubuntu上分别安装Nginx.PHP和Mysql

  2. 小草手把手教你LabVIEW串口仪器控制—安装使用仪器现有驱动

    声明:很多仪器是没有驱动的.所以,具体问题具体分析.另外声明:所谓的驱动,也就是封装好的底层的串口通信程序,也是程序而已,只不过别人帮你做成了子 VI,让自己容易用.所以:不要弄混淆了概念.国外的很多 ...

  3. 手把手教你在VMware虚拟机中安装Ubuntu14.04系统

    在VMware中创建完虚拟机之后,一般需要给虚拟机安装系统,比较受青睐的系统有Ubuntu和Centos,关于Centos系统的安装之前已经写过了,感兴趣的小伙伴可以戳这篇文章:靠谱的centos7. ...

  4. 手把手教你实现Confluence6.7.1安装与破解

    Confluence是一个专业的企业知识管理与协同软件,也可以用于构建企业wiki. 一.准备工作 下载confluence6.7.1 wget https://downloads.atlassian ...

  5. 手把手教你进行R语言的安装及安装过程中相关问题解决方案

    这篇文章旨在为R语言的新手铺砖引路,行文相对基础,希望对在R语言安装上有问题的小伙伴提供帮助和指引.一.什么是 R 语言R 编程语言被广泛应用在统计科学和商业领域. 在各种编程语言排名中 R 语言的排 ...

  6. 手把手教你在Linux系统下安装MySQL

    在CentOS中默认安装有MariaDB,这个是MySQL的分支,但为了需要,还是要在系统中安装MySQL,而且安装完成之后可以直接覆盖掉MariaDB. 1. 下载并安装MySQL官方的 Yum R ...

  7. 【保姆级教程】手把手教你进行Go语言环境安装及相关VSCode配置

    [Go语言入门系列]前面的文章: [Go语言入门系列](七)如何使用Go的方法? [Go语言入门系列](八)Go语言是不是面向对象语言? [Go语言入门系列](九)写这些就是为了搞懂怎么用接口 本篇文 ...

  8. 手把手教你定制标准Spring Boot starter,真的很清晰

    写在前面 我们每次构建一个 Spring 应用程序时,我们都不希望从头开始实现具有「横切关注点」的内容:相反,我们希望一次性实现这些功能,并根据需要将它们包含到任何我们要构建的应用程序中 横切关注点 ...

  9. 手把手教你在Linux系统下安装MongoDB

    1. 下载最新的stable版MongoDB [root@spirit-of-fire ~]# wget http://downloads.mongodb.org/linux/mongodb-linu ...

随机推荐

  1. Jstack定位CPU使用最多的线程及代码

    jstack可以定位到线程堆栈,根据堆栈信息我们可以定位到具体代码,所以它在JVM性能调优中使用得非常多.下面我们来一个实例找出某个Java进程中最耗费CPU的Java线程并定位堆栈信息,用到的命令有 ...

  2. 可视化-echarts流向图制作

    案例: http://www.internetke.com/jsEffects/2018040406/ 前段时间用echarts做了流程图,在此记录下制作步骤. 一.Echarts是什么 Echart ...

  3. echart.js在vue中使用

    以前可能写过,懒得去翻了,再写一次 1,安装echarts   导入到页面 import echarts from 'echarts'; 2.在生命周期里面做初始化 data(){ return{ t ...

  4. 整理的最全 python常见面试题(基本必考)

    整理的最全 python常见面试题(基本必考) python 2018-05-17 作者 大蛇王 1.大数据的文件读取 ① 利用生成器generator ②迭代器进行迭代遍历:for line in ...

  5. 正则RegExp的懒惰性和贪婪性; 分组捕获;

    1.正则的懒惰性??? 每次在它的方法exec中捕获的时候,只捕获第一次匹配的内容,而不往下捕获,我们把这种情况称为正则的懒惰性 且每一次捕获的位置都是从索引0开始 正则的实例对象上有一个lastin ...

  6. RN与webview通讯

     一.RN给webview发送信息 this.webview.postMessage(message) 二.监听从React Native发过来的消息: window.document.addEven ...

  7. 现代编译原理--第二章(语法分析之LL(K))

    (转载请表明出处 http://www.cnblogs.com/BlackWalnut/p/4472122.html ) LL(K)语法分析技术是建立在预测分析的技术之上的.我们先来了解预测分析技术. ...

  8. linux学习 (Linux就该这么学)

    明天周五了,7点准时上课,加油努力学习,12月份要考试了,心里没有底,加油吧!感觉要学的真多,! redhat7,,安装图形界面  yum install -y

  9. jupyter Notebook环境搭建

    1.什么是jupyter notebook jupyter notebook是一种 Web 应用,能让用户将说明文本.数学方程.代码和可视化内容全部组合到一个易于共享的文档中.它可以直接在代码旁写出叙 ...

  10. Python序列结构--列表(一)

    列表 列表**包含若干元素的有序连续内存空间**,当列表增加或删除元素时,**列表对象自动进行内存的扩展或收缩**,从而**保证相邻元素之间没有缝隙**.但插入和删除非尾部元素时涉及列表元素大量的移动 ...