2008年10月3日星期五

制作Linux发行版光盘的方法

开源软件 /青牛

在很多场合,现有的linux发行版并不能满足您的要求,比如:

您需要根据自己的要求取舍安装包
您需要定制自动安装脚本(kickstart)
您需要加入自己的软件包
这时您需要建立自己的linux发行版光盘,当然完整地从零开始定制一个linux发行版是十分耗时耗力的,我们一般只需要在现有的发行版光盘上进行修改即可满足我们的要求。下面讲述如何来做一个利用kickstart进行自动安装的光盘映象:(所有的操作都是基于centos-4.3发行版来进行)

复制母盘文件

mkdir disk
mkdir tmp
mount -o loop centos-4.3.iso tmp
cp -rf tmp/* disk/
注意光盘根目录下有个隐藏文件.diskinfo,没有拷贝此文件在安装时刻将会告之,找不到cdrom


生成kickstart文件
利用 system-config-kickstart工具生成kickstart文件, 不过该工具是基于x界面的,centeros-4.3 server版不带X界面。可用其他版本的linux生成。如果没有该工具也没关系,可以找现成的修改一番,具体的语法参考相关文件

让系统从kickstart配置启动
修改disk/isolinux/isolinux.cfg文件,如下是我的一个配置文件
default ks
prompt 1
timeout 60
display boot.msg
F1 boot.msg
F2 options.msg
F3 general.msg
F4 param.msg
F5 rescue.msg
F7 snake.msg
label linux
kernel vmlinuz
append initrd=initrd.img ramdisk_size=8192
label text
kernel vmlinuz
append initrd=initrd.img text ramdisk_size=8192
label expert
kernel vmlinuz
append expert initrd=initrd.img ramdisk_size=8192
label ks
kernel vmlinuz
append ks=cdrom:/ks.cfg initrd=initrd.img ramdisk_size=8192
label lowres
kernel vmlinuz
append initrd=initrd.img lowres ramdisk_size=8192
label local
localboot 1
label memtest86
kernel memtest
append -
注意:如果不想把kickstart文件放在光盘的根目录下,可以将其放在isolinux的initrd.img文件系统中,然后用 ks=file:/ks.cfg代替上面的 ks=cdrom:/ks.cfg. 具体参考 https://listman.redhat.com/archives/kickstart-list/2001-August/msg00029.html
大致方法如下
mount -o loop initrd.img tmp
cp ks.cfg tmp
umount tmp

建立启动画面
启动画面用的是一种比较奇怪的格式lss16,它限制图片使用16种颜色,除去前景和背景色只能有14种颜色。我们需要ppmtolss16 giftopnm等程序,系统一般默认都安装了。
一般用gimp生成一个index模式的gif图形,颜色限制为14, 然后通过如下的办法进行转:
giftopnm < splash.gif | ppmtolss16 > splash.lss
如果要编辑一个lss文件先用lsstoppm转成ppm格式,然后用gimp进行编辑.
另外你还需要修改isolinux/boot.msg文件如下
^L^Xsplash.lss - Babel Com Australia Fedora Core Linux installer. - Use the function keys listed below for more information.^O02[F1-Main] [F2-Options] [F3-General] [F4-Kernel] [F5-Rescue]^O07Note that in the above screen fragment "^L" means insert a control-L sequence. In vi you can do that by typing control-V control-L.

注意:上述显示的"^L"是一个控制序列,在vi中,你可以通过输入Ctrl-V 然后Ctrl-L来得到此字符。

生成ISO映象
我们需要将改光盘制作成 ISO-9660 格式的光盘映象,通过如下命令来实现
cd disk \mkisofs -o ../cdrom.iso -A 'ISOLINUX' -V 'ISOLINUX' \ -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot \ -boot-load-size 4 -boot-info-table .这样我们就能得到一个自己定制好的linux 发行版安装光盘。

至于从头制作一个完整的centos发行版,可以参考另一篇转载的文章《基于centos4.3的linux发行版制作过程》。

没有评论: