定制属于自己的turbolinux光盘
这是在2003年暑期前想完成的任务,可是一直以来没有任何进展,自从看了
linuxhowto RedHat光盘制作过程,终于有点进展,google.com真是好东东顺便
google到一个日本的turbolinux爱好者,不错他的主页
http://www.ryouto.jp/linux/index2.html ;非常棒。好了那我们开始进程了
我的系统turbolinux 8 workstation
更新:2003年12月02日首稿
制作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/TurboLinux/TurboLinux/ia32/Workstation/8/install
下载该目录下的所有文件
以下是FTP版本的目录形式
|-dosutils
|-LICENSE
|-turbo
|-base
|-RPMS
然后我们需要一些images文件
ftp://ftp.turbolinux.co.jp/pub/TurboLinux/TurboLinux/ia32/Workstation/8/updates/images/misc
在刚才下载的目录里建个images目录,将下载到的所有文件copy进来
|-dosutils
|-LICENSE
|-images
|-turbo
|-base
|-RPMS
2.执行分割
我们已经拥有完整所需的所有文件,接着需要将文件分成2份光盘
[root@ /tmp]#mkdir -p /tmp/{cdrom1,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
搞定
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时的安装程序映像文件
Turbolinux comps文件分析
这个文件还有些参数不明,大家一起完善,不过那些部分看起来不是很重要
#########################
#########################
###################
定义该组名TurboTools option参数
base估计是默认安装option参数hide隐藏,
###################
。。。
。。。
例子fscfg-1.2(大版本号)-20(小版本号).i586.rpm
定义该组需要安装的包列表ver设定大版本号(1.2)安装的包名fscfg
ver参数的设定还是需要的,比如RPMS目录下同时存在
fscfg-1.1-20.i586.rpm,fscfg-1.2-20.i586.rpm
里只是个例子)
#######################
#######################
这里应该很熟悉了,就是让你选择默认安装的组
option参数隐藏,options参数default默认安装的组
#######################
TurboTools
#######################
将定义好的组写在这里
#######################
Extra fonts Korea
这里就是在该itype组的mini workstation的
立安装的。注意这里的包必须在任一
#######################
gdm
mozilla
rxvt
usermode
#######################
定义光盘的内容,这个就是让genhdlist分割光盘时调用文件列表用的
#######################
TurboTools
Perl modules
======================================================================
End of Comps file.
======================================================================
–>
更新包的方法及整合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将
保存一个一个对较改
有些包比如libart_lgpl在KDE2里并没有,但是KDE3里又需要
那么我们在这个组里添加
。。
。。
好了,全部搞定,保存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文件里却没有描述
确认是否还有包没有正确设定
一切搞定,检验的方法还是只能通过安装系统来完成
添加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/TurboLinux/TurboLinux/ia32/Server/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/TurboLinux/TurboLinux/ia32/Workstation/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]
我们自己生成一份自己的配置,我就从miniworkstation做参考
引用:
workstation system.
ションです。
TurboTools
System utilities
Network base
Network clients
X Window System
KDE common
Extra desktop enviroment
X Window apps Chinese
Extra fonts Chinese
freetype2-devel
fontconfig-devel
Xft-devel
glibc-devel
gcc3
libgcc3
libstdc++3
pkgconfig
glib2-devel
gdm
rxvt
usermode
pkglist的用法请大家参考turbolinux comps,gcc3.1已经用gcc3.2替换了,别的像
glib2,glib2-devel所以我就直接列表使用了,
一切搞定大家就可以生成ISO文件了,(谁能告诉我不解包就能直接安装ISO文件做
法)
迹篇文档越写越多,描述上越来越麻烦,不可能面面俱到,更多还要靠大家自己实践
那建议大家尝试的时候要有充分的时间,请记住comps文件一定要用utf8编码处理
,不然嘿嘿!!最好安装一次miniworkstation有解决RPM依赖的经验,做为新手看看
就好,以后有需要的时候再做自己的光盘。完
附录1 同步FTP镜像
将这段代码保存为mirror.tl8w
给它可执行属性chmod +x mirror.tl8w
然后在终端里执行 mirror.tl8w
就开始下载了,和FTP版本保持同步,如果你需要自己定制ISO的话,
这里下载的是FTP上的tl8w版本,如果大家要别的请自己更改远端路径
嘿嘿找了N久,原来linux下的mirror最简单,不过不知道该如何对付FTP上的符号链接
引用:
#!/bin/bash
MIRROR=”/usr/bin/mirror”
OPTS=”-n”
#-n测试结果 -d执行下载并输出结果
cat > mirror.tl8w << EOF
#更多规则参考这里
#http://wwwtest.sunsite.org.uk/packages/mirror/mirror.html
package=tl8w
comment=tl8w_jp_ftp_ver
#与FTP相关的
site=ftp.turbolinux.co.jp
remote_user=anonymous
remote_password=anonymous@anonymous.org
#远端镜像目录
remote_dir=/pub/TurboLinux/TurboLinux/ia32/Workstation/8/install
#本地镜像目录
local_dir=/turbo/install
#档案复制
#若远端档案比近端的档案新的的话,下载回来
get_newer=true
#如果两端大小不一样,下载远端
get_size_change=true
#本地文件属性
user=0
group=0
file_mode=0444
dir_mode=0755
#同步镜像
#同步2端,如果本地存在远端不存在的文件则自动删除
#do_deletes=true
#远端已经不存在的文档移到save_dir
save_deletes=true
#相对于local_dir实际路径为/turbo/install/tmp
save_dir=tmp
#更新日志记录
#相对于local_dir实际路径为/turbo/install/new_update_log
update_log=new_update_log
local_ignore=new_update_log
EOF
${MIRROR} ${OPTS} mirror.tl8w
附录2 turbolinux镜像站点
http://www.turbolinux.co.jp/download/mirror.html
ftp://ftp.turbolinux.co.jp
ftp://ftp.turbolinux.com
ftp://ftp.dti.ad.jp/pub/Linux/TurboLinux/
ftp://ftp.iij.ad.jp/pub/linux/TurboLinux/
ftp://ftp.kddlabs.co.jp/pub/Linux/packages/turbolinux/
ftp://mirror.nucba.ac.jp/mirror/TurboLinux-J/
ftp://ftp.nuie.nagoya-u.ac.jp/pub/Linux/TurboLinux/
ftp://ftp.st.ryukoku.ac.jp/pub/Linux/TurboLinux/
ftp://ftp.u-aizu.ac.jp/pub/os/Linux/TurboLinux/
ftp://ftp.jaist.ac.jp/os/linux/TurboLinux/
ftp://ftp.airnet.ne.jp/mirror/TurboLinux/
ftp://ftp.twin.ne.jp/pub/linux/TurboLinux/
ftp://ftp.denshi.ac.jp/pub/Linux/TurboLinux/