首页 / 操作系统 / Linux / 利用Shell脚本创建基于本机的ISO镜像
前提:1.以当前系统的anaconda-ks.cfg为模板,创建kickstart文件
2.以install.log为模板摘取其中软件包包名信息并复制这些软件包到/tmp/iso目录中去,而后要复制过来的目录做createrepo(注意要保留原有光盘上的目录结构,比如Server,VT等而复制来的软件包应按原来的位置存放)
3.将第一步创建的kickstart文件复制到/tmp/iso目录中为ks.cfg
4.创建光盘镜像#!/bin/bash
#
cat /root/install.log |awk "{print $2}" |sed "s/.*://g" >>/tmp/pkglist.txt
MYFILE="/tmp/pkglist.txt"
LDIR="/mnt/cdrom"
MDIR="/tmp/iso"
let count=0[ -e $MDIR ] && mv $MDIR $MDIR.old && mkdir -p $MDIR/{Cluster,ClusterStorage,Server,VT} 2>>/tmp/error1.txt || mkdir -p $MDIR/{Cluster,ClusterStorage,Server,VT} 2>>/tmp/error1.txt
while read LINE
do
for I in Cluster ClusterStorage Server VT ;do
if cp -r $LDIR/$I/$LINE.rpm $MDIR/$I 2>>/tmp/error2.txt ;then
let COUNT++
echo -e "${COUNT}:$LINE.rpm copy 33[31msuccessfully... 33[0m"
break
else
continue
fi
done
done < $MYFILE
echo -e " 33[31,5mcopy successfylly...... 33[0m"
cp -r $LDIR/{isolinux,.discinfo,EULA,eula.en_US,GPL,images,README-en,TRANS.TBL,.treeinfo} $MDIR
echo -e " 33[32mcontinue... 33[0m"
[ -x `which wget` ] && wget ftp://192.168.0.254/pub/gls/server.repo /etc/yum.repos.d/ || rpm -i $LDIR/Server/wget-1.11.4-2.el5.i386.rpm $>/dev/nullyum clean all &>/dev/null
[ -x `which createrepo` ] && echo "The command createrepo exits..." || rpm -i $LDIR/Server/createrepo-0.4.11-3.el5.noarch.rpm &>/dev/null
cd $MDIR/Cluster/
createrepo -g repodata/comps-rhel5-cluster.xml ./
cd $MDIR/ClusterStorage/
createrepo -g repodata/comps-rhel5-cluster-st.xml ./
cd $MDIR/Server/
createrepo -g repodata/comps-rhel5-server-core.xml ./
cd $MDIR/VT/
createrepo -g repodata/comps-rhel5-vt.xml ./
rm -rf $MDIR/*/.olddata/ &>/dev/null
echo -e " 33[34mcreaterepo successfully... 33[0m"
cp /root/anaconda-ks.cfg $MDIR/ks.cfg
sed -i "20,26s/^#//g" $MDIR/ks.cfg
find $MDIR/isolinux -name "*" -exec chmod u+w {} ;
sed -i "s/default linux/default linux=cdrom:/ks.cfg/g" $MDIR/isolinux/isolinux.cfg
echo -e " 33[31mStart make linux ISO 33[0m"
cd /tmp
mkisofs -o mylinux.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J -v -T iso/
echo -e "The 33[31,5mISO 33[0m created successfully..."