本文阐述如何以一个现有的 RedHat Linux系统安装盘为蓝本,定制符合需要的 Linux 系统安装盘。
1 引言
通常由于某种实际应用,需要一个包含所有最近更新的RPM包的操作系统发布盘,以备在安装时一次完成所有的更新操作,或者是想定制一个有自己特色的操作系统发布盘,如将自己开发的应用程序通过创建RPM包,加入到操作系统中,在系统安装时一次完成,形成包含自己产品的操作系统发布盘。这些都需要重新生成安装盘,而且生成安装盘也是十分必要的,因为操作系统发布商在每一次正式发布后,总会对一些漏洞进行更新处理,有些还是与安全相关的,在重新生成安装盘时就可以将这些bug修复添加进你自己定制的安装盘中,对一些设备新开发的驱动程序提供支持也需要重新生成安装盘。 在一些嵌入式具体应用中,由于其对操作系统的要求较具体,不需要当前操作系统安装盘中自带的那么多的功能,如Fedora Core 2当前有4张安装盘,它包含了许多其它的应用,如office、娱乐和游戏等等,而一些具体的应用根本不需要这么多的功能,因此,它们常常需要基于一个版本的操作系统,然后对之进行相应的裁减,使之能满足具体应用的实际需要,而不需要其它的多余的功能。因此,通过操作系统安装盘的定制,可以根据自己或实际的需要,选择有用的软件包,组成安装盘,从而通过定制操作系统的安装,满足具体应用的需要。 我们在定制操作系统安装盘之前,必须有一个蓝本作为安装盘的基础,比如是Red Hat 9.0安装盘或Fedora Core 2安装盘,也可以是Red Hat 9.0或Fedora Core 2安装盘的iso文件,这些我们可以从Red Hat的网站或其它一些网站上下载。现假设我们已经有了Fedora Core 2的安装盘,下面我们先大略看一下Fedora Core 2的安装盘里面的内容。 在安装盘中有一个目录为Fedora,它包含了发布盘的核心内容,如下: drwxr-xr-x 2 root root 2048 May 13 2004 base drwxr-xr-x 2 root root 77824 May 13 2004 RPMS
RPMS目录包含Fedora Core 2发布盘的主要部分,它是一些RPM文件。RPM包通常包含二进制可执行文件、有关的配置文件和文档,我们可以参考RPM帮助以获得更多信息。 base 目录中包含一些在安装过程中所需要的文件,如comps.xml文件,它定义哪个组件包含哪些RPM包以及RPM包之间的依赖关系,需要注意的是,在comps.xml文件中表示哪个组件有哪些RPM包采用的是RPM包名,而不是包的文件名。比如perl-5.8.3-18.i386.rpm这个文件名,在comps.xml中所表示的RPM包名为perl。对于comps.xml文件,我们会在后面作进一步解释。另一个重要的文件是hdlist文件,它包含了RPM目录中的所有RPM包大部分的头文件,这意味着在RPM包中相互依赖关系可以通过读取hdlist文件而决定,而不需要读所有的RPM包。hdlist文件的另一个作用是将包名映射到文件名,如将perl包名映射到perl-5.8.3-18.i386.rpm,这意味着如果你想更新RPM包或添加你自己的包到RPM目录中,你就需要更新hdlist这个文件,这会在后面进行描述。
2 RPM操作
RPM(Redhat Package Management)是由RedHat开发的,在Linux系统下的系统包管理工具。它的目标是:使包的安装和卸载过程更容易,它能够证实一个包是否已经正确安装了,可以简化包的建立过程,可以从源代码建立整个包,它能用于不同的体系结构。RPM系统已经成为现在Linux系统下包管理工具事实上的标准,并且它也移植到很多商业的unix系统之下。 RPM包由包标签对它标识,包标签包含软件名,软件版本,包的发行版本几部分。在包的内部还包含包的建立时间,包的内容描述,安装包的所有文件的大小,数字签名以证实包的完整性等信息。RMP包还包含包内的文件信息,其中包括:每个文件的文件名,每个文件的权限,文件的属组和拥有者,每个文件的md5校验和,文件的内容等。 RPM包管理系统提供了下列功能:安装新的包,卸载旧的包,将一个旧包升级为新的包,获得已经安装包的信息等。 Red Hat发布盘主要是由一些RPM包组成。RPM包的名字包含一个后缀:arch.rpm,arch 指的是体系结构,对于Intel平台的有i386、i586、i686等,你所安装的包必须要与机器上的共享库的版本相匹配。如果你发现某个RPM包没有安装,你可以自己安装。任何时候,你都可以(必须是root用户)安装RPM包。RPM命令使用轻参考相关资料。