LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2896|回复: 6

定制属于自己的turbolinux光盘

[复制链接]
发表于 2003-12-4 14:03:26 | 显示全部楼层 |阅读模式
这是在2003年暑期前想完成的任务,可是一直以来没有任何进展,自从看了 ?
linuxhowto ?RedHat光盘制作过程,终于有点进展,google.com真是好东东顺便
google到一个日本的turbolinux爱好者,不错他的主页 ? ?
http://www.ryouto.jp/linux/index2.html 非常棒。好了那我们开始进程了 ? ? ?
我的系统turbolinux 8 workstation ?
更新:2003年12月02日首稿
 楼主| 发表于 2003-12-4 14:04:37 | 显示全部楼层

制作FTP版本的Turbolinux 8 workstation

参考Turbolinux Server 8 光盘制作         
http://www.ryouto.jp/linux/linux_46.html         
         
1。获得FTP版本的turbolinux 8 workstation拷贝         
ftp://ftp.turbolinux.co.jp/pub/T ... rkstation/8/install         
        
下载该目录下的所有文件        
以下是FTP版本的目录形式        
|-dosutils       
|-LICENSE        
|-turbo      
   |-base      
   |-RPMS        
然后我们需要一些images文件        
ftp://ftp.turbolinux.co.jp/pub/T ... updates/images/misc        
      
在刚才下载的目录里建个images目录,将下载到的所有文件copy进来        
|-dosutils      
|-LICENSE      
|-images      
|-turbo        
   |-base             
   |-RPMS      
2.执行分割      
我们已经拥有完整所需的所有文件,接着需要将文件分成2份光盘      
[root@ /tmp]#mkdir -p /tmp/cdrom1/turbo/{base,RPMS}     
/tmp/cdrom2/turbo/{base,RPMS}      
/tmp-      
       |-cdrom1      
                    |-turbo      
                              |-base      
                              |-RPMS      
       |-cdrom2      
                    |-turbo     
                              |-base      
                              |-RPMS      
将FTP下载来的所有文件拷贝到/tmp/cdrom1,然后执行      
[root@ /tmp]#genhdlist /tmp/cdrom1/turbo   
提示:genhdlist需要安装zabom zabom-devel两个包   
选择安装树     
请输入安装树路径   
/tmp/cdrom1/turbo   
确认   
选择建立CDROM   
确认   
请输入树路径 Install CD2   
/tmp/cdrom2/turbo   
确认(你会看到一些需要移动的包,就是根据comps里的设置分割的)   
继续   
好了一切搞定   
   
现在/tmp/cdrom2下是不是有东东了   
3,制作可引导光盘   
生成可引导启动的cdrom1,mkisofs的具体参数请大家执行mkisofs  --help查阅   
[root@ /tmp]#mkisofs -V TL8w_Disc1 -v -b images/boot-03031701.tl8w.img -c   
boot.catalog -J -r -o cdrom1.iso /tmp/cdrom1   
   
注意要特别注意-b参数-b images/boot-03031701.tl8w.img对应的完整路径应该是   
/tmp/cdrom1+images/boot/03031701.tl8w.img   
你要特别注意你的/tmp/cdrom1/images/boot/是否存在03031701.tl8w.img  
错误的命令行--当使用如下命令时   
[root@ /tmp]# mkisofs -V TL8w_Disc1 -v -b   
/tmp/cdrom1/image/boot-03031701.tl8s.img -c boot.catalog -J -r -o   
/tmp/cdrom1.iso /tmp/cdrom1   
就会碰到   
mkisofs: Uh oh, I cant find the boot image   
'/tmp/cdrom1/image/boot-03031701.tl8w.img' !
   
   
接着生成cdrom2   
[root@ /tmp]# mkisofs -V TL8w_Disc2 -v -J -r -o cdrom2.iso /tmp/cdrom2   
搞定,我没有CD-RW就直接在virtual pc测试(在加载开始第二阶段运行时有问题,不  
过试了一下以前的那2个ISO也是这样,不知道是不是virtual PC出问题了,请大家注  
意)
 楼主| 发表于 2003-12-4 14:05:34 | 显示全部楼层

Linux光盘安装系统的分析

摘自 Linux发行版制作指南 by Coolee
原文链接
http://www.linuxaid.com.cn/articles/7/1/710687494.shtml

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

  ●结构部分  

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

  images/ 此目录下包含了制作启动盘的映像文件(文件后缀img),  
  其中boot.img是当安装介质为CD-ROM时负责引导系统的映像文件  
  bootnet.img是当安装介质为FTP,NFS等时负责引导系统的映像文件  
  driver.img是由一些特殊设备驱动程序模块组成的映像文件,在当前内核不支持
这些设备的情况下,提供了对它们进行访问的一种方法
  其中,boot.img映像文件中主要包含以下文件:

  

  boot.img      
  |----vmlinuz          Linux内核
  |----ldlinux.sys      引导Linux的系统文件
  |----syslinux.cfg     Linux内核引导参数配置文件
  |----initrd.img       内存虚拟文件系统映像文件
  |----*.msg文件  引导时的各种提示信息文件

  其中,initrd.img为Linux ext2文件系统,构成如下:
  initrd.img
  |----/bin
  |----/dev
  |----/etc
  |----/module
  |----/sbin ------ loader               
        安装程序装载器
  |----/tmp
  |----/var  

  可执行文件/sbin/loader的任务是判断安装介质的有效性,并从中执行安装程
序。  

  其实正是boot.img,在系统启动时被执行,经解析之后在内存建立起了Linux内
核,并根据配置文件syslinux.cfg装载虚拟文件系统,形成了完整的Linux System,为
后续的工作提供了必要的操作系统环境。Boot.img映像的文件系统类型为msdos,而
其中的initrd.img映像的文件系统类型必为Linux系统自己的ext2,所以对于它们的解
析操作是不同的,具体请参考附录A 。  

  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的映射。这两个文件是
用特殊的程序生成的,无法用简单的方法察看其中的内容和结构。具体的生成方法请
参考附录D。  

  stage2.img , hdstg1.img , hdstg2.img , netstg1.img 和netstg2.img 是描述安装行
为的映像文件,其中
  stage2.img 是当安装介质为CD-ROM时的安装程序映像文件

  hdstg1.img 是当安装介质为HardDisk时的安装程序映像文件  

  hdstg2.img 是当安装介质为HardDisk时的安装程序映像文件  

  netstg1.img 是当安装介质为FTP,NFS时的安装程序映像文件  

  netstg2.img 是当安装介质为FTP,NFS时的安装程序映像文件
 楼主| 发表于 2003-12-4 14:06:40 | 显示全部楼层

Turbolinux comps文件分析

这个文件还有些参数不明,大家一起完善,不过那些部分看起来不是很重要   
   
<?xml version="1.0"?><!-- -*- mode:xml ; encoding:utf-8-unix -*- -->     
<comps version="7.1" disk="disk1">     
<!--     
        This is a new style TurboLinux comps file for the unification release.     
        Vanguard by koushi     
     
[Policy]     
        - Use proper English strings for group name     
        - Use UTF-8 strings for localization, until then most of     
          localized strings are removed     
        - Based on Esprit comps, old comments are removed, new changes     
          are marked as 'ss:'.     
-->     
#########################  
<!--注释符号,里面的内容只用来参考,不起作用-->  
#########################     
<!--     
======================================================================     
                Start Groups Define     
======================================================================     
-->     
<group name="TurboTools" option="">   
###################   
定义该组名TurboTools option参数   
base估计是默认安装option参数hide隐藏,   
###################   
<name lang="jaJP"></name>      
<desc></desc>      
<desc lang="jaJP"></desc>     
<pkg ver="1.2">fscfg</pkg>     
        。。。   
        。。。   
        。。。   
<pkg ver="2.0">mongoose</pkg>     
#######################   
例子fscfg-1.2(大版本号)-20(小版本号).i586.rpm   
定义该组需要安装的包列表ver设定大版本号(1.2)安装的包名fscfg   
ver参数的设定还是需要的,比如RPMS目录下同时存在   
fscfg-1.1-20.i586.rpm,fscfg-1.2-20.i586.rpm   
<pkg>fscfg</pkg> 如果像这样写的话,就默认把2个版本的包都安装上去(当然这  
里只是个例子)   
#######################   
</group>   
<!--   
   
======================================================================   
             The definition of installation types   
======================================================================   
   
-->   
<itype name="Minimum Workstation" option="">   
#######################   
这里应该很熟悉了,就是让你选择默认安装的组   
option参数隐藏,options参数default默认安装的组   
#######################   
  <name lang="jaJP"></name>   
  <name lang="zhTW"></name>   
  <desc></desc>   
  <desc lang="jaJP"></desc>   
  <desc lang="zhTW"></desc>   
  <icon>itype-minimum.png</icon>   
        <reqgroup>   
                TurboTools   
#######################   
                将定义好的组写在这里   
#######################   
                Extra fonts Korea   
        </reqgroup>   
   
        <pkglist>   
#######################   
这里就是在该itype组的mini workstation的<reqgroup> 里的分组未包含,但需要独
立安装的。注意这里的包必须在任一 <group> 里有定义,不然安装时是不会执行的
#######################   
                gdm   
                mozilla   
                rxvt   
                usermode   
        </pkglist>   
</itype>   
   
<!--   
======================================================================   
             The definition of cdrom   
======================================================================   
-->   
   
<cdrom name="Install CD1">   
#######################   
定义光盘的内容,这个就是让genhdlist分割光盘时调用文件列表用的   
#######################   
        <reqgrp>   
                TurboTools   
                    
                Perl modules   
        </reqgrp>   
        <pkglist>   
                usermode   
        </pkglist>   
        <minuspkg>   
        </minuspkg>   
</cdrom>   
   
<!--   
<strconv lang="zhCN">   
        <from-code>UTF8</from-code>   
        <to-code>GB2312</to-code>   
</strconv>   
-->   
   
======================================================================   
                        End of Comps file.   
======================================================================   
   
-->
 楼主| 发表于 2003-12-4 14:09:11 | 显示全部楼层

更新包的方法及整合KDE 314

有了前面的基础知识,这一部分也就相对容易     
我们要做的就是将RPMS目录下的KDE2版本的包用KDE314的包替换,更新base目录   
下的comps文件和重新生成hdlist hdlist.gz,然后在安装测试过程中发现未完成的依赖   
关系,重新更新comps hdlist hdlist.gz直到成功为止。更新FTP上的update目录下的新   
版本也是如此     
所以迹部分需要时间和耐心,     
那我干嘛要浪费这么多时间做这种东东?因为它能节省硬盘空间,KDE系统比通过升   
级更新速度更快,新的包安全或者别的更新,一劳永逸。习惯了永远保持最新     
用你熟悉的文本编辑器打开原先的comps和KDE314光盘base目录下的comps(注意使   
用utf8编码操作)。我们对较手工操行     
     
我们以更新art这个包为例子将KDE光盘的arts-1.1.4-1.i586.rpm复制到   
/tmp/cdrom1/turbo/RPMS,然后将arts-2.2.2-16.i586.rpm删除     
用kwrite文本编辑器打开原先的comps     
1。第一步先设置编码为utf8,comps一定要用utf8编码处理,不然等会genhdlist不能   
读取     
在菜单查看/设置编码/统一码(utf8)     
通过查找art将     
<pkg ver="2.2.2">arts</pkg>     
改为<pkg ver="1.1.4">arts</pkg>     
ver这个参数请看前面的介绍     
保存一个一个对较改     
     
有些包比如libart_lgpl在KDE2里并没有,但是KDE3里又需要     
那么我们在这个组里添加     
<group name="KDE common">     
。。     
。。     
<pkg>libart_lgpl</pkg>     
这个包KDE3需要的不然,startx就会提示缺少libar_lgpl.so     
好了,全部搞定,保存comps在/tmp/cdrom1/turbo/base     
2.使用genhdlist 重新生成hdlist hdlist.gz     
[root@ /tmp]#genhdlist /tmp/cdrom1/turbo   
   
安装树   
请输入安装树路径   
/tmp/cdrom1/turbo   
选择建立hdlist   
就会重新生成hdlist和hdlist.gz   
然后选择   
Check adjustment of comps and packages   
如果你刚才没将原先的arts-2.2.2-16.i586.rpm删除   
那么在Multipul packages里就会看到 有2个arts   
     
Multipul packages 存在同名文件,这里的同名是指rpm -qpi *.rpm查询获得的Name   
:arts相同   
Lost packages comps有描述而RPMS目录下没有该包   
No comps packages 这个刚好相反,RPMS目录下有,而comps文件里却没有描述   
   
确认是否还有包没有正确设定
     
一切搞定,检验的方法还是只能通过安装系统来完成
 楼主| 发表于 2003-12-4 14:10:05 | 显示全部楼层

添加SCIM输入法

让我们回想一下安装SCIM输入法的过程。   
1.我们需要在SCIM的主页下载   
scim-0.8.2-1ul1.i386.rpm   
scim-chinese-0.2.6-1ul1.i386.rpm   
scim-tables-zh-0.3.0-1.noarch.rpm   
http://www.turbolinux.com.cn/~suzhe/scim/download.html   
2.在turbolinux的CVS下载atk glib2 pango gtk2自己解决依赖pkgconfig>=0.15   
http://pkgcvs.turbolinux.co.jp/cgi-bin/cvsweb.cgi/   
3.然后还需要KDE314光盘的freetype2        freetype2-devel fontconfig fontconfig-devel                  
Xft Xft-devel   
4.一份gcc3.2   
ftp://ftp.turbolinux.co.jp/pub/T ... rver/8/updates/RPMS   
只要这几个就够了gcc3 libgcc3 libstdc++3   
   
安装上述RPM以后,我们还需要修改/etc/X11/xinit/xinitrc屏蔽chinainput输入法添加   
scim -d   
export XMODIFIERS="@im=SCIM"

##################################   
第一步我们要找到chinainput属于哪个包,删除它并在comps里注释掉   
  
[root@ root]rpm -qf /usr/bin/chinput  
ZWinPro-3.3-9  

重新生成xinitrc这个包
下载xinitrc-6.0-31.src.rpm
ftp://ftp.turbolinux.co.jp/pub/T ... tion/8/source/SRPMS
注意要先安装rpm -ivh rpm-build-4.0.2-17.i586.rpm才能自己打包做RPM

[root@ root]rpm -ivh xinitrc-6.0-31.src.rpm
[root@ SOURCES]cd /var/src/rpm/SOURCES/
用你熟悉的编辑器将xinitrc修改成
#elif [ "${LANG%%.*}" = "zh_CN" ] || [ "${LANG%%.*}" = "zh_TW" ]; then
# if [ -x /usr/bin/chinput ]; then
  #  /usr/bin/chinput &
   # export XMODIFIERS="@im=Chinput"
  #fi
elif [ "${LANG%%.*}" = "ko_KR" ]; then
  if [ -x /usr/bin/ami ]; then
    /usr/bin/ami &
    export XMODIFIERS="@im=Ami"
  fi
fi
scim -d
export XMODIFIERS="@im=SCIM"

[root@ SPECS]cd ../SPECS
重新打包
[root@ root]rpm -ba xinitrc.spec
然后将/var/src/rpm/RPMS/noarch/xinitrc-6.0-31.noarch.rpm复制到
/tmp/cdrom1/turbo/RPMS并覆盖原有文件

然后修改comps  
[quote]<group lang="zhCN,zhTW" name="X Window apps Chinese" option="">  
  <name lang="jaJP">X Window中国?アプリケ?ション</name>  
  <desc>Chinese language support and input methord.</desc>  
    <!--<pkg ver="3.3">ZWinPro</pkg>-->  
    <pkg>scim</pkg>  
    <pkg>scim-tables-zh</pkg>  
    <pkg>scim-chinese</pkg>  
    <pkg>atk</pkg>  
                <pkg>pango</pkg>  
                <pkg>gtk2</pkg>  
                <pkg>atk-devel</pkg>  
                <pkg>pango-devel</pkg>  
</group>

我们自己生成一份自己的配置,我就从miniworkstation做参考  
<itype name="Dato Config" option="">  
  <name lang="jaJP">最小デスクトップ</name>  
  <name lang="zhTW">最小工作站</name>  
  <desc>This selection includes only minimum packages required for your  
workstation system.</desc>  
  <desc lang="jaJP">必要最小限のパッケ?ジで?成したTurbolinuxワ?クステ?
ションです。</desc>  
  <desc lang="zhTW">此??只包含了使用工作站所需最少的套件</desc>  
  <icon>itype-minimum.png</icon>  
        <reqgroup>  
                TurboTools  
                System utilities  
  
                Network base  
                Network clients  
  
                X Window System  
                KDE common  
                Extra desktop enviroment  
  
                X Window apps Chinese  
                Extra fonts Chinese  
        </reqgroup>  
  
        <pkglist>  
                XFree86-devel  
                <!--freetype2-->  
                freetype2-devel  
                <!--fontconfig-->  
                fontconfig-devel  
                <!--Xft-->  
                Xft-devel  
                glibc-devel  
                gcc3  
                libgcc3  
                libstdc++3  
                <!--glib2-->  
                <!--atk-->  
                <!--pango-->  
                <!--gtk2-->  
                pkgconfig  
                glib2-devel  
                <!--atk-devel-->  
                <!--pango-devel-->  
                <!--scim-->  
                <!--scim-chinese-->  
                <!--scim-tables-zh-->  
                gdm  
                rxvt  
                usermode  
        </pkglist>  
</itype>  

pkglist的用法请大家参考turbolinux comps,gcc3.1已经用gcc3.2替换了,别的像
glib2,glib2-devel所以我就直接列表使用了,
一切搞定大家就可以生成ISO文件了,(谁能告诉我不解包就能直接安装ISO文件做
法)
迹篇文档越写越多,描述上越来越麻烦,不可能面面俱到,更多还要靠大家自己实践
那建议大家尝试的时候要有充分的时间,请记住comps文件一定要用utf8编码处理
,不然嘿嘿!!最好安装一次miniworkstation有解决RPM依赖的经验,做为新手看看就好,以后有需要的时候再做自己的光盘。完
发表于 2003-12-4 19:12:46 | 显示全部楼层
呵呵 这样的话,就可以象Gentoo一样“定制”了。呵呵。不错!!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表