在网上找了很久没有找到基于RHEL5 版本的光盘定制具体实例,只有自己花力气去研究了一下anaconda
下面是整个操作过程的记录:
一、软件包的确定
确定安装光盘中软件的依赖关系比较复杂,本文使用了一种很笨的方法,用标准的RHEL5
安装光盘先安装一个系统,安装包定制过程中仅选择自己需要的,系统启动后,
将安装的软件包列表生成一个文件installedrpm
cd /usr/src
mkdir work
cd work
mkdir srcrpm
mkdir iso/Server
rpm –qa > installedrpm
将RHEL5 5张光盘Server目录中的文件rpm文件全部拷贝到 work/srcrpm
创建脚本文件 getrpm.sh
#!/bin/bash
for filename in `awk ''{print $1}'' installedrpm`; do
echo "$filename";
cp srcrpm/${filename}* iso/Server;
done
因为安装过程使用哪个kernel是安装系统自动确定的,所以要将原安装盘中所有的kenenl都拷贝到目标目录中
cp -f srcrpm/kernel-* iso/Server/
二、拷贝其他文件
从原安装盘第一张盘中拷贝 images和isolinux 目录到 iso 目录中,并删除TRANS.TBL boot.cat
从原安装盘第一张盘中拷贝 .discinfo 文件到iso文件
从原安装盘第一张盘中拷贝 Server/repodata/comps-rhel5-server-core.xml 到work 目录
三、创建资料库
创建可多次使用的脚本 repo.sh
#!/bin/bash
rm -fr iso/Server/repodata/
createrepo -u "media://1170972069.396645#1" -g /usr/src/work/comps-rhel5-server-core.xml iso/Server/
运行 sh repo.sh
四、定制安装过程
这个过程比较复杂需要了解anaconda处理流程,要详细了解请参考
和anaconda代码,这里仅简单的去掉安装过程的序列号
mount -o loop iso/images/stage2.img /media/ -t squashfs
cp -aR media/ /stage2
cd /stages2/usr/lib/anaconda/installclasses
vim rhel.py
找到
def setSteps(self, dispatch):
BaseInstallClass.setSteps(self, dispatch);
dispatch.skipStep("partition")
dispatch.skipStep("regkey", skip = 0)
将 skip = 0 改为 skip = 1 后保存
重新创建 stage2.img
mksquashfs /stage2/ stage2.img -all-root -no-fragments
umount /media
覆盖原来的 文件
cp -f stage2.img iso/images/
五、创建光盘
cd iso
mkisofs -o ../test.iso -b isolinux/isolinux.bin -c isolinux/boot.cat \
-no-emul-boot -boot-load-size 4 -boot-info-table \
-R -J -V "Red Hat Enterprise Linux Server" -T .
生成校验
cd ..
/usr/lib/anaconda-runtime/implantisomd5 --force ../test.iso
本过程是基于原来安装盘的,如果要完整从零开始定制,请参考 anaconda 的buildinstall