|
楼主 |
发表于 2006-11-13 18:27:38
|
显示全部楼层
Zenwalk DIY版光盘制作过程
06-11-13,18:25
上次在定制完zenwalk之后本是准备写点什么的,但近来忙于考研复习,
实在没有心思和精力再去打理ZenwalkCN了 -_-!
我简单地写一下我对ZenwalkCN安装光盘的定制过程吧.
首先把下载到的Zenwalk的安装镜像挂载到某个目录,像这样
mkdir -p /mnt/zenwalk
mount -o loop /path_to_iso/zenwalk-3.0.iso /mnt/zenwalk_iso
这时/mnt/zenwalk里的内容应该是只读的吧(不清楚是不是可写,呵),我把所有内容
都复制到我的工作目录
cd /mnt/zenwalk/
cp -r * /home/zenwalkcn/
然后一切修改工作都在/home/zenwalkcn/中进行了.
[光盘的目录结构]
我介绍一下光盘的目录结构吧
COPYING
COPYRIGHT
Changelog
VERSION
PACKAGES //zenwalk这个目录的文件列表
isolinux //isolinux是专门用来制作可启动光盘的,里面最重要的是
//有配置文件isolinux.cfg及initrd.img这个镜像文件
kernels //安装的时候可以选择不同的内核
zenwalk //这个目录中的子目录编排与slackware安装版基本相同
//像a ap l n x xap 等,每个目录中的tgz包都会在安装
//过程中自动安装.
[删除不想要的软件包]
所以想要不安装什么包的话,可以在zenwalk的相应的子目录中把那个包删除就行
了,比如说我不喜欢默认安装lilo引导器,只要把zenwalk/a/lilo-22.7.3-i486-1z30.* 删除掉就行了.
[加入我自己的软件包]
如果要想添加进其它的包的话,可以把自己制作的或是从网上下载的tgz包,放入
zenwalk中的任何一个目录中,当然,你可以会想,是不是可以我自己建个目录啊.
当然是可以的,比如我建立了一个s目录,用来放服务器软件包,apache或vpn什么的
但是,这需要[修改安装脚本]
[添加我的个性化配置]
这个最好是放到一个包里好了,比如我们建一个configurations_for_sunu.tgz
假设您对如何制作tgz包是熟悉的.
mkdir /tmp/my_config
cd /tmp/my_config
在这里按照自己的系统的目录结构放置你想要在系统安装好后自动配置好的文件.
比如我把zhcon的配置加上就是在etc目录中etc/zhcon.conf. 如果想让系统将
新添加用户的环境和你现在的一模一样,可以把你现在的家目录(比如名为sunu的
用户,那默认的情况下就是目录/home/sunu)里的配置都复制到etc/skel中,省得
以后添加新用户还得配置这配置那的麻烦.
如果是要安装包的时候执行的脚本,要建文件目录install,在其中建立文件
doinst.sh,把代码写在当中就行了,不过记得不要随便使用'绝对路径',呵.
最后在
/tmp/my_config目录中
makepkg -l y -c n /tmp/configurations_for_sunu.tgz 就行了.
[修改安装脚本]
zenwalk的光盘起动后的环境都在isolinux/initrd.img这个镜像文件中,它是一个
压缩文件,我们可以以下方式对它进行修改.
mkdir -p /tmp/initrd_tree
cp isolinux/initrd.img /tmp/initrd.gz
gunzip initrd.gz
这个时候在/tmp目录解压了initrd.img文件,我们把它挂载到initrd_tree目录上
就像我们挂载iso镜像那样.
mount -o loop /tmp/initrd /tmp/initrd_tree
好了,/tmp/initrd_tree中的目录结构就是zenwalk光盘启动后的环境了,可以进行
任意的修改,不过好像体积不能超过某个值(16M?不清楚),因为initrd.img最终不能太大.
以下假设我们的/目录是/tmp/initrd_tree,呵
安装脚本是在/usr/lib/setup/目录里,都是标准的bash脚本,大家可以看着改.
INSCD
SeTconfig
SeTkeymap
SeTpackages //上面讲到的要让安装程序自动安装 我们自己建立的目录 中
//的所有软件包的话,修改这个文件中的
//SERIES='a ap d l n x xap'即可,比如我就添加了个s目录
SeTswap
nopartHELP
setup
INSdir
SeTdisk
SeTmedia
SeTpartitions
pkgtool
SeTDOS
SeTkernel
SeTnopart
SeTpasswd
installpkg
removepkg
就不一个个介绍了,这里面可定制得实在太多了,纯脚本的安装方式真的很灵活.
要让光盘启动后的环境支持尽可能多的硬件,可以在/lib/module/`uname`/中
添加相应的模块,然后在/etc/rc.d/中的rc.modules动态加载就可以了.
假设我们已经完成了安装环境的修改,然后我们把/tmp/initrd_tree压缩回去.
mount /tmp/initrd_tree
cd /tmp/
gzip -9 initrd
mv initrd.gz initrd.img
好了,我们可以拿这个initrd.img替换掉光盘里的isolinux/initrd.img了.
[定制光盘启动画面及字幕和光盘默认的系统内核]
这些都在isolinux/目录中,大家去看看isolinux的使用手册吧,我没深究,只是
修改了些文本文件而已.
系统内核就在kernel目录中,如果你添加了或是替换了内核,记得核对isolinux/
isolinux.cfg中的文件名哦,不然启动不了安装系统的,呵.
[生成光盘镜像]
cd /home/zenwalkcn/
cd ..
mkisofs -o /tmp/zenwalkcn.iso \
-R -J -V "ZenwalkCN Install" \
-hide-rr-moved \
-v -d -N -no-emul-boot -boot-load-size 4 -boot-info-table \
-sort isolinux/iso.sort \
-b isolinux/isolinux.bin \
-c isolinux/isolinux.boot \
-A "Zenwalk_CN Install CD"
这个过程很快的,几分钟就好了,然后就可以测试你的光盘镜像了,我没有可改写的
的记录机,只好郁闷地用vmware来测试,哈.
(傍晚匆忙写就,可能所遗漏了,以后有机会补上,呵. 如有您对哪一步有疑惑的,
可以给我发邮件. pansunyou@gmail.com 邮件还是经常查收的 ) |
|