免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1144 | 回复: 0
打印 上一主题 下一主题

操作系统安装盘的定制过程 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-07-09 11:20 |只看该作者 |倒序浏览
操作系统安装盘的定制过程
                       
你需要将原来操作系统发布盘上的内容拷贝到本机硬盘中,根据有几张发布盘而生成几个目录,比如Fedora Core
2有四张盘,你则需要在系统上生成四个目录,如disc1、disc2、disc3、disc4,分别将这四张盘上内容拷贝到这四个目录中,然后对相应的
RPM包进行更新。
                       
首先找到你想更新的RPM包,将新的RPM替换旧包。当然你也可以根据你的需要新增或删除RPM包,需要注意
的是,你需要在comps.xml文件中将新增加或删除的RPM包名加入某个组件中,并且注意其与其它RPM包的依赖关系,也就是说你所放置的包的位置要
恰当,否则它会依赖于在它之前而没有加入系统的某个RPM包。
                       
4.1        编辑comps.xml文件
                       

生成安装盘之前,需要注意对comps.xml文件进行修改。这个文件用来告知安装程序anaconda,用户选择了某个组是应该有哪些包需要安装,定义
了在安装过程中,包是如何被捆绑在一起的。在Red Hat 8.0以前版本的发布盘中,对应的文件为comps,它只是一个简单的文本文件,在Red
Hat 8.0之后的版本中,用comps.xml代替了原来的comps文件。comps.xml是一个XML文件,易于对内容进行分析和说明。
                       
comps.xml文件开始是说明xml的版本和DTD断言,然后进入以标记开始的文件的主体内容。如:
                       
                       
                       
comps.xml主要由三部分组成,首先是组列表,它描述
了在安装过程中需要的不同的组(或组件),包括组名、组的描述和包含的RPM包;其次是组的层次结构,它将组分成不同的类,并定义了组的一个顺序,从而可
以决定哪些组需要先安装;最后为一系列RPM包以及它们之间的依赖关系。
                       
下面分别介绍comps.xml文件的这三部分:
                       
(1) 组列表
                       
在系统安装时,需要用到一个组中的一些属性,下面就是属性列表以及它们如何使用。一个组被定义在和标记之内.
                       
一个简单的组定义可以是:
                       
                       
  somegroup
  Sample Group
  true
  false
  This is a silly sample group
  
    bash
    cpio
  
                       
下面分别说明组定义中一些参数的含义:
                       
  • id:组的id仅仅是在comps.xml文件中作为该组的一个标识,这是必须的;
  • name:表示用户可以看到的组的名字,它也是必须的;
  • default:它表示在系统安装过程中,当选择定制(custom)安装时,该组是否在缺省情况下被选中。如果没有说明,则缺省情况下为不选中。
  • uservisible:它表示该组在缺省情况下是否在安装时可以看到,如果没有说明,缺省设置为YES,为可以看到。
  • description:它表示对该组进行简短的描述,这是必须的;
  • packagelist:它说明在该组内的一系列安装包,这也是必须的。
            packagereq:包名
    属性:
                                           
    • type:当进行安装时,判定对应的包是否是组的"强制"部分、或"缺省"部分或"可选"部分。它可以是"mandatory"、"default"或"optional"之一。
    • requires:它说明只有当它所需要(依赖)的包也安装情况下,此包才安装进系统。

                                   

                       
(2)组层次结构
                       
它描述了组的树状层次结构,组层次结构定义在和标记之间,由定义的标记组成类。
                       
一个简单的组层次结构可以如下所述:
                       
                       
  
    Random Groups
   
      somegroup
   
  
                       
一个类由下面这些属性组成:
                       
  • name: 它表示类名,是必须的;
  • subcategories: 它表示此类的一些子类,由一列表和 元素组成
      
    • subcategory: 前面定义的组的id

                                   

                       
(3)RPM包
                       
此部分说明要安装的RPM包,它定义在和标记之内。一个简单的RPM包部分可以如:
                       
                       
  bash
  
    mktemp
    bash
    glibc
    libtermcap
  
                       
  • name:它指的是RPM包名,是必须的。
  • dependencylist:它说明此包对应的依赖的RPM包。
      
    • dependency:此包需要的包的名字

                                   

                       
4.2        产生完整的comps.xml文件
                       
上述说明的comps.xml文件中的RPM包部分是是自动产生的,为了形成完全的comps.xml文件,需要在系统中安装comps-extras RPM包,然后进行下面的操作:
                       
  • 将comps.xml文件中的原来的RPM包部分删除;
  • 运行:
    /usr/share/comps-extras/getfullcomps.py comps.xml /path/to/tree
    arch >/root/filelist
    在此,/path/to/tree是Red Hat
    Linux操作系统安装盘内容存储的地方,arch指的是体系结构,为i386。注意的是,假定comps.xml已经存放/path/to/tree
    /arch/RedHat/base/目录下,将此输出重定向到一个临时文件,如/root/filelist。
  • 将comps.xml文件中最后一行内容(为)删除
  • 将前面生成的临时文件添加到comps.xml中
  • 再将添加到comps.xml文件中

                       

过新增你的包到comps.xml文件,你可以根据你的需要做你自己的发布盘,确信你的包在缺省情况下会被安装。需要注意的一件事是你更新的包与其它包的
依赖关系,这是你需要处理的,要注意你更新的包所应该放置的位置。另外,不要在文件中随意增加或删除其余的空格。在修改comps.xml之前,也最好对
最初的comps.xml做个备份,以备恢复使用。
                       
4.3        重新编译安装程序,调整安装阶段
                       

装程序是不可能一次就加载进来的,必须分阶段进行,通常我们就称为"stage"。第一个阶段所用程序很小,只有这样才能从一张软盘、tftp服务器等等
上面加载。通常这个阶段程序包含的只有一个精简过的Linux内核和在后续步骤当中必要的一些驱动程序(比如SCSI)。
                       
要采用一个新的RedHat安装,就会需要很多的映像,最明显的就是引导安装盘本身(从软驱或者光驱安装)的boot.img,但是我们也需要对从硬盘、网络文件系统等安装方式提供支持。
                       
RedHat就此提供了很好的脚本命令,只需一个简单的操作就可以完成所有的操作。这些脚本的工作就是把某些RPM包的内容提取出来,然后用来生成各安装步骤所用程序的映像。
                       
所再强调的是,我们必须保证安装了anaconda-runtime:
                       
                                #rpm -i  anaconda-runtime-xxxxx-i386.rpm
                       
                       
接着进入目录/usr/lib/anaconda-runtime,这里我们会看到一些非常有用的脚本,比如:
                       
  • mk-images.i386:包涵有创建启动磁盘时i386的专门设置(通常情况下,网络和pcmcia)以及辅助磁盘驱动程序。在此您可以改变启动映像中所包含的模块,比如说在网络启动磁盘有:
                                            ……
    NETWORKMODULES="$COMMONMODULES nfs 3c59x eepro100 tulip pcnet32
    ne2k-pci 8139too"
    ……..
                                   
  • buildinstall 这是主要的。
                                            #cd  /usr/lib/anaconda-runtime
    #./buildinstall ~/disc1/
    这个脚本命令会在~/disc1/images目录下更新一些的文件。

                       
4.4        生成新的hdlist文件
                       
当安装时,安装程序需要依赖光盘上的Fedora/base/hdlist文件,它包含的是所有可用的RPM包的必要信息,这些信息在安装过程当中是用来显示每一个包的用途以及解决用户选择软件包后的依赖性问题。
                       
用以生成hdlist文件的程序叫做genhdlist,它是由anaconda-runtime这个包产生的。现在的genhdlist多了一个新的参数:--withnumbers,是用来记录hdlist文件中每个RPM包的媒介代号。
                       
分步处理的过程如下:
                       
                        #rpm -i anaconda-runtime-xxxxx-i386.rpm
#cd /usr/lib/anaconda-runtime
#./genhdlist -- withnumbers ~/disc1  ~/disc2 ~/disc3  ~/disc4
                       
整个过程只需要执行一个脚本,见附录一:kernel-update.sh。
                       
如果你在系统中添加了RPM包,那么在生成安装盘之前,最好将这四张盘上的内容复制到一个目录下,然后修改附录一的脚本文件,运行脚本,先网络安装一次,看是否存在包的依赖关系问题。如果没有,则可以生成安装盘。
                       

本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u2/60913/showart_1076682.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP