当前位置: 首页 > news >正文

制作linux发行程序,Linux发行版制作过程中的各个步骤

Linux发行版制作过程中的各个步骤

ZDNet软件频道 时间:2008-05-13 作者: | 中国IT实验室

我要评论()

制作Linux发布的目的是为了在系统中能够快速,正确地建立Linux系统环境。制作Linux发布的主要工作是决定各种软件的去留,因为有了RPM包对其提供优良的管理能力。

1.项目整体分析

制作Linux发布的目的是为了在系统中能够快速,正确地建立Linux系统环境。制作Linux发布的主要工作是决定各种软件的去留,因为有了RPM (RedHat Package Manager)包对其提供优良的管理能力,所以以目前比较成熟的RedHat 7.1(Linux Kernel Version 2.4.2-12)Linux发布程序作为蓝本,以RPM包作为基本的制定单元,以需求为原则对其进行取舍,得到适合实际需要的Linux系统。

由此,项目自然而然的以分析RedHat Linux的光盘安装系统为起点,在掌握了其结构和行为的基础上,在包一级(结构部分)和代码一级(行为部分)进行修改,同时建立相应的测试环境,以便对修改进行及时的规范。

2.项目分步骤实施细节

2.1对Linux光盘安装系统的分析

结构部分

在安装光盘中,主要的目录结构和文件大致如下:

images/ 此目录下包含了制作启动盘的映像文件(文件后缀img),其中boot.img是当安装介质为CD-ROM时负责引导系统的映像文件,bootnet.img是当安装介质为FTP、NFS等时负责引导系统的映像文件。

driver.img是由一些特殊设备驱动程序模块组成的映像文件,在当前内核不支持这些设备的情况下,提供了对它们进行访问的一种方法。其中,boot.img映像文件中主要包含以下文件:

0818b9ca8b590ca3270a3433284dd417.png

其中,initrd.img为Linux ext2文件系统,构成如下:

0818b9ca8b590ca3270a3433284dd417.png

可执行文件/sbin/loader的任务是判断安装介质的有效性,并从中执行安装程序。其实正是boot.img,在系统启动时被执行,经解析之后在内存建立起了Linux内核,并根据配置文件sysLinux.cfg装载虚拟文件系统,形成了完整的Linux System,为后续的工作提供了必要的操作系统环境。

Boot.img映像的文件系统类型为msdos,而其中的initrd.img映像的文件系统类型必为Linux系统自己的ext2,所以对于它们的解析操作是不同的。

RedHat/ 此目录是RedHat Linux发布的核心目录,主要的目录结构都在这里,其中RPMS/ 包含了RedHat Linux发布的主要部分,即以RPM包的形式将Linux系统中的二进制可执行文件,配置文件,文档等等组织在一起,形成能完成一定功能的比较独立的软件包(文件后缀rpm)。这个目录就是把这些软件包都集合在一起,形成了RedHat Linux发布。

base/包含了在安装过程中要用到的描述组织结构和安装行为的所有文件,其中comps,hdlist和hdlist2是描述RPM包组织结构的文件。

comps此文件把各个RPM包按一定的原则组织成若干组,即components,这样在安装过程中就不必对每一个包做出取舍,而以组为单位。comps文件为简单文本格式,它的结构如下所示:

4 表示RPM包的版本号,当前为4

1 base { }

base是此component名,中是此component中所包含的RPM包的名称列表,1表示在安装中默认为选中,即默认安装。

0 –hide IDS sensor

{

snort

libpcap

}

表示IDS sensor组中包含有snort和lipcap这两个RPM包。0表示这个组在安装中默认为不选中即默认不安装,并且由—hide指出不在用户界面上显示此组。

hdlist和hdlist2 这两个文件维护从RPM包名到真实包文件名的映射过程,例如从snort这个RPM包名到真实包文件名snort-1.8.1- 1.1.2.i386.rpm的映射。这两个文件是用特殊的程序生成的,无法用简单的方法察看其中的内容和结构。

0818b9ca8b590ca3270a3433284dd417.png

如上图所示映像文件中的主要部分是

安装程序anaconda,它的主执行体是/usr/bin下的anaconda,由其调用的大量例程分布在/usr/lib/anaconda下,而

安装过程中要用到的资源文件分布在/usr/share/anaconda下。

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 使用screen管理会话
  • linux存储是什么意思,Linux 内存管理中的 RSS 和 VSZ 是什么意思?
  • Microsoft Licenses Flash Lite for Windows Mobile Users
  • HPUX下启动scheduler遇到的问题及解决
  • linux上samba配置全过程,Samba服务器配置和使用全过程
  • linux怎么查看32位,查看Linux是32位还是63位的方法
  • Unix下配置Scheduler的过程和出现的NQSError问题
  • .NET企业级应用架构设计系列之技术选型
  • linux profile缓存清空,让/etc/profile文件修改后立即生效
  • 3G时代还需要WAP吗?
  • 最基本的Socket编程 C#版 [转]
  • c语言比较两个字符串大小写,忽略大小写的字符串比较 C语言
  • Visual C#.Net 网络程序开发-Socket篇
  • c语言写个电子计算机程序,电子计算机 《C语言编程题跟解答》.doc
  • c语言水打印仙花数程序,c语言经典程序
  • 【译】React性能工程(下) -- 深入研究React性能调试
  • 0基础学习移动端适配
  • CSS3 聊天气泡框以及 inherit、currentColor 关键字
  • Date型的使用
  • golang 发送GET和POST示例
  • iOS 系统授权开发
  • Java-详解HashMap
  • PHP CLI应用的调试原理
  • RxJS: 简单入门
  • Spring Cloud(3) - 服务治理: Spring Cloud Eureka
  • TCP拥塞控制
  • 高性能JavaScript阅读简记(三)
  • 猴子数据域名防封接口降低小说被封的风险
  • 手写一个CommonJS打包工具(一)
  • 云大使推广中的常见热门问题
  • ​​​​​​​开发面试“八股文”:助力还是阻力?
  • ​比特币大跌的 2 个原因
  • # 服务治理中间件详解:Spring Cloud与Dubbo
  • #Z2294. 打印树的直径
  • (delphi11最新学习资料) Object Pascal 学习笔记---第8章第5节(封闭类和Final方法)
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (Redis使用系列) Springboot 使用redis实现接口Api限流 十
  • (板子)A* astar算法,AcWing第k短路+八数码 带注释
  • (附源码)springboot太原学院贫困生申请管理系统 毕业设计 101517
  • (附源码)ssm高校实验室 毕业设计 800008
  • (附源码)ssm智慧社区管理系统 毕业设计 101635
  • (论文阅读23/100)Hierarchical Convolutional Features for Visual Tracking
  • (三)终结任务
  • .NET Core 中的路径问题
  • .net core开源商城系统源码,支持可视化布局小程序
  • .NET MVC第五章、模型绑定获取表单数据
  • .NET Standard 的管理策略
  • .NET6实现破解Modbus poll点表配置文件
  • .NET开源、简单、实用的数据库文档生成工具
  • /3GB和/USERVA开关
  • /proc/interrupts 和 /proc/stat 查看中断的情况
  • @Transactional 参数详解
  • []error LNK2001: unresolved external symbol _m
  • [AWS]CodeCommit的创建与使用
  • [C#C++]类CLASS