linux安装分析anaconda
Linux 的安装过程可以分为两个阶段,第一个阶段就是加载内核,创建供后续安装过程使用的系统环境,第二阶段就是加载系统安装程序,执行具体的安装过程。对于第一阶段,有不少资料作了比较详细的介绍,而对于第二阶段,也就是具体的安装过程,却鲜有资料介绍,本文作者结合自己在实践中的心得体
级别: 初级 王柏生 (baisheng@), 中科院软件所软件工程师
2005 年 1 月 01 日
本文作者结合自己在实践中的心得体会,针对redhat9.0的安装程序anaconda作了粗略的分析。 引言
Linux 的安装过程可以分为两个阶段,第一个阶段就是加载内核,创建供后续安装过程使用的系统环境,
第二阶段就是加载系统安装程序,执行具体的安装过程。对于第一阶段,有不少资料作了比较详细的介绍,而对于第二阶段,也就是具体的安装过程,却鲜有资料介绍,本文作者结合自己在实践中的心得体会,针对redhat9.0的安装程序anaconda作了粗略的分析。
为了抓住主线,文中所列代码片断基本都经过格式调整,并裁减掉了不影响理解的细节,读者可参照源代码。另外,anaconda是用python语言写的,所以读者最好具备一些python语言的基础和面向对象的基本知识,如果有过图形界面程序的设计的经验,则无论是对图形安装模式还是字符安装模式安装过程(本文只讨论图形安装模式)的理解都会有很大帮助。
1 概述
系统启动,加载启动映像,在内存中建立了linux系统环境后,解析安装程序映像文件,将安装程序载入内存,执行主执行程序anaconda,该程序是具体安装程序的一个口,负责启动具体的安转过程,完成linux系统的安装。
我们首先看一下安装映像文件。进入redhat9.0第一张系统盘的redhat/base目录,其中stage2.img就是当安装介质为CD-ROM时的安装映像文件。我们采用如下命令解析该映像文件(注意:命令中的挂载点/mnt/stage2要根据读者的实际情况修改):
mount -o loop /mnt/cdrom/Redhat/base/stage2.img /mnt/stage2
解析后,我们可以看到,安装程序的主执行体anaconda在/mnt/stag2/usr/bin目录下,其它安装脚本模块均在/mnt/stage2/usr/lib/anaconda目录下,今后的行文中,除非是anaconda主执行体,其余均指/mnt/stage2/usr/lib/anaconda目录下的模块,并将该目录简称为anaconda主目录。 我们先看一下anaconda主目录的结构:
installclasses子目录中的各个模块定义了在安装过程中用户可选择的安装类型。redhat9.0下
包含了四个文件workstation.py,server.py,custom.py和personal_desktop.py。其中,workstation.py描述了工作站安装类型,server.py描述了服务器安装类型,custom.py描述了用户自定义安装类型,personal_desktop.py描述了个人桌面安装类型。每个安装类型描述
文件根据相应安装类型的特点,分别对安装步骤、分区策略以及安装包的取舍给出了不同的方案。 Iw子目录下包含所有安装图形界面类所在的模块,每个图形界面对应一个类,负责相应安装步骤
图形界面的具体外观显示及与用户的交互,(可能)调用anaconda主目录下的相关安装行为模块完成具体的安装操作。
textw子目录和iw子目录含义是一致的,只是包含的是字符安装模式的前端字符用户界面类所在
的模块,每个字符用户界面对应一个类,负责与用户的交互,字符界面的采用了python的snack库。
如果说用户界面类是处理安装程序外观的话,则anaconda主目录下的各python模块则执行每
个安装界面背后具体的安装行为,包括那些无用户界面安装步骤的安装操作。
Linux 的安装过程可以分为两个阶段,第一个阶段就是加载内核,创建供后续安装过程使用的系统环境,第二阶段就是加载系统安装程序,执行具体的安装过程。对于第一阶段,有不少资料作了比较详细的介绍,而对于第二阶段,也就是具体的安装过程,却鲜有资料介绍,本文作者结合自己在实践中的心得体
Python的许多内置模块在目录/mnt/stage2/usr/lib/pythonXX下,其中XX指版本号。另外可参考redhat的anaconda源码包,所有的相关工具都在源码包里,读者在理解了安装过程的原理后,可修改源码,重新编译,然后搭建测试环境进行测试。
2 总体分析
图形安装界面采用python + Gtk开发,各个模块(类)之间的逻辑关系可用下图表示:
图1 图形安装模式下模块(类)逻辑关系图
安装程序逻辑上可划分为三个层次,我们先看最主要的一层:调度中心。可以说,Dispatcher类和
InstallControlWindow类控制了整个安装程序的运转,理解这两个核心类的功能及其与用户界面类和安装行为类的逻辑关系,就基本上理解了整个安装程序。
Dispatcher类在anaconda主目录下的dispatch.py模块中,负责整个安装流程的控制,在安装过程中,某些安装步骤有的需要前置安装操作,有的又需要后置安装操作,而某些安装操作则是没有用户界面的,我们统称这些安装操作为无用户界面的安装操作,那么,这些没有用户界面的安装操作由谁来调度运行呢?答案就是Dispatcher。
InstallControlWindow 类在 anaconda 主目录下的 gui.py 模块中,控制安装过程中前端图形界面的显示,总体调度各个安装图形界面类,InstallControlWindow 建立图形界面的主窗体,每个具体的图形安装界面可视为其子窗体。InstallControlWindow 调用 Dispatcher 控制整个安装流程。
安装过程中,每个具体的图形安装界面均对应一个具体的类,由其对应的具体的类完成具体的安装任务,我们将这些图形界面类归为前端显示层,位于iw目录下的模块中。
anaconda将某些用户界面类中的具体安装操作分离出来,放到了另外一些模块中,这些模块放在了anaconda的主目录下。由Dispatcher直接调用的没有用户界面的安装步骤对应的函数也放在了anaconda的主目录下,我们将这些模块归为安装行为层。
Linux 的安装过程可以分为两个阶段,第一个阶段就是加载内核,创建供后续安装过程使用的系统环境,第二阶段就是加载系统安装程序,执行具体的安装过程。对于第一阶段,有不少资料作了比较详细的介绍,而对于第二阶段,也就是具体的安装过程,却鲜有资料介绍,本文作者结合自己在实践中的心得体
图中虚线表达的含义是"可能调用"。如在安装过程中,负责前端显示的package_gui.py模块可能要调用负责安装行为的packages.py模块或其它负责安装行为模块中的类或函数。
2.1 主要控制类分析
2.1.1 Dispatcher
该类在anaconda主目录下的dispatch.py模块中。无论是图形模式安装还是字符模式安装,都由该类来控制安装流程,所以,分析该类时,我们将图形用户界面和字符用户界面统称为用户界面,涉及到字符安装模式的叙述,读者暂时可略过,读到字符安装模式分析时,再回头来看。dispatch.py模块中有一个序列(sequence)数据结构:installSteps。installSteps中记录了有序排列的整个安装过程中所有可能的安装步骤,在生成具体的Dispatcher实例时,会根据安装类型制定对此进行相应裁减。
installSteps中的条目(item)有如下两种格式,第一种格式:( name, tuple)
这种格式表示有用户界面的安装步骤。其中,name代表安装步骤的名称,tuple(元组,python的一种内置数据类型)存放创建相应安装步骤的用户界面的参数。
第二种格式:( name, Function, tuple)
这种格式表示没有用户界面的安 …… 此处隐藏:3245字,全部文档内容请下载后查看。喜欢就下载吧 ……
相关推荐:
- [教育文库]夜场KTV服务员的岗位职责及工作流程[1]
- [教育文库]企划、网络、市场绩效考核方案
- [教育文库]学党史、知党情、强党性--“党的基本理
- [教育文库]2016年高考物理大一轮总复习(江苏专版
- [教育文库]干部廉洁自律自查自纠的报告
- [教育文库]2010年北京大学心理学系拟录取硕士研究
- [教育文库]资金时间价值练习题及答案
- [教育文库]保护环境的心得体会
- [教育文库]英语角内容:英语趣味小知识
- [教育文库]档案收集与管理工作通知
- [教育文库]劳动规章制度范本范本
- [教育文库]高考物理一轮复习课后限时作业1运动的
- [教育文库]机械工艺夹具毕业设计195推动架设计说
- [教育文库]通用技术教学比赛说课稿2
- [教育文库]2018年四年级英语下册 Module 7 Unit 2
- [教育文库]第2章 宽带IP网络的体系结构
- [教育文库]九年级化学第五单元课题3《根据化学方
- [教育文库]小学英语六年级情态动词用法归纳
- [教育文库]甲级单位编制窑井盖项目可行性报告(立
- [教育文库]2016-2021年中国城市规划行业全景调研
- 高考英语听力十大场景词汇总结
- 全省领导班子思想政治建设座谈会会议精
- 人教版新课标高一英语提优竞赛试题 下
- 江西省2014年生物中考试题
- 长沙镇食品药品安全事故应急预案
- 《金刚石、石墨和C60》片段教学设计
- 福州教育学院(王旭东)
- 基于EDA音乐播放器的设计
- 9、古诗两首《夜书所见》《九月九日忆
- 小学语文课外阅读有效策略探讨
- 贵州文化产业发展成支柱产业的问卷调查
- 膀胱类癌的诊治体会(附3例报告)
- 发动机积碳产生的原因
- Configuring Code Composer Studio for
- 学生良好的心理素质如何培养点滴谈
- 46 电沉积法制备锂离子电池用硅-锂薄膜
- 美舍雅阁公司管理中各部门职责
- 去壳剥皮的小妙招
- 六自由度运动平台的仿真研究
- Pride and Prejudice(傲慢与偏见)




