How to custom RedHat DVD

一、准备rhel-server-5.4-i386-dvd.iso

二、准备4个文件

1、comps-server.xml

 ----来自原始光盘的repodata目录中的Server/repodata/目录中的comps-rhel5-server.xml的修改,修改方法参

考 http://cooker.techsnail.com/index.php/Custom_Linux_bootable_CD

2、install.log

----来自已经完成安装的系统,内容是选择core和base和dialup软件组后装完的系统中所带的RPM包列表。                        

3、makesrcdisk.sh 【未测试】 【注意:ks.cfg中有Extra目录, 但脚本中未添加Extra目录,如需要增加自己的软件,可以在上面的脚本中加入】

----安装过程脚本,内容如下,见脚本即见步骤。

#!/bin/bash


########################################################
## set parameter
########################################################
currentpath=`dirname $0`
cdromsourceiso=$currentpath/rhel-server-5.4-i386-dvd.iso
mediapath=/mnt
isoimagepath=/iso
installrpmlist=$currentpath/install.log
xmlrepofile=$currentpath/comps-hissage-server.xml 
destisofile=mini32.iso
kickstartfile=$currentpath/ks_2.cfg
isomenufile=$currentpath/isolinux.cfg


if [[ -z $currentpath ]] || [[ -z $cdromsourceiso ]] || [[ -z $mediapath ]] || [[ -z $isoimagepath ]] || [[ -z $installrpmlist ]] || [[ -z $xmlrepofile ]] || [[ -z $destisofile ]]
then
    echo "missing args"
    exit
fi


########################################################
## mount iso image
########################################################
if [[ `ls /mnt|wc -l` -ne 0 ]]
then 
    echo "/mnt mount point is not empty"
    exit
fi
mount -t iso9660 -o loop $cdromsourceiso /mnt
if [[ `ls /mnt|wc -l` -eq 0 ]]
then 
    echo "mount iso image failed"
    exit
fi

########################################################
## check required rpm 
########################################################
if  ! rpm -qa|grep -q createrepo   ||  ! rpm -qa|grep -q mkisofs ||  ! rpm -qa|grep -q rsync
then
   echo "missing rpms createrepo or mkisofs or rsync"
   exit
fi 
    
########################################################
## copy required file
########################################################
rsync -av --exclude Server/  $mediapath/  $isoimagepath/
mkdir -p $isoimagepath/Server


########################################################
## copy customed rpms
########################################################
less  $installrpmlist| awk -F" " '/Installing/ {print $2}'|while read line
do
    line=`echo $line|sed 's/[0-9]\+:\(.*\)$/\1/'` 
    rpmfile=$line.rpm
    if [[ ! -e $mediapath/Server/$rpmfile ]]
    then
        echo "not exit $rpmfile"
     exit
    fi
    cp -a $mediapath/Server/$rpmfile $isoimagepath/Server/
done

########################################################
## create repo
########################################################
discinfo=$(head -1 $isoimagepath/.discinfo)
if [[ -z $discinfo ]] || [[ $discinfo = "" ]]
then
   echo "missing discinfo"
   exit
fi
/bin/rm -f $isoimagepath/Server/repodata/*
/bin/cp -f $xmlrepofile $isoimagepath/Server/repodata
createrepo -u "media://$discinfo"  -g repodata/$xmlrepofile $isoimagepath/Server


########################################################
## create disk
########################################################
/bin/cp -f $isomenufile $isoimagepath/isolinux/isolinux.cfg
/bin/cp -f $kickstartfile $isoimagepath/ks.cfg
mkisofs -R -J -T -v -no-emul-boot  -boot-load-size 4  -boot-info-table -V Hesine -b isolinux/isolinux.bin  -c isolinux/boot.cat -o $destisofile  $isoimagepath
echo "create iso success!"

4、ks.cfg

光盘kickstart文件,内容如下

install
cdrom
#xconfig --startxonboot
text
key 2515dd4e215225dd
lang en_US.UTF-8
keyboard us
network --device eth0 --bootproto dhcp
rootpw --iscrypted $1$ra5hd2y4$nqcZPQxT75.tewecKyf7Q1
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --disabled
firstboot --disable
timezone --utc Asia/Shanghai
bootloader --location=mbr --driveorder=sda
network --bootproto=dhcp --device=eth0 --onboot=on
reboot
# The following is the partition information you requested
# Note that any partitions you deleted are not expressed
# here so unless you clear all partitions first, this is
# not guaranteed to work
#clearpart --linux
#part swap --recommended
#part / --fstype ext3 --size=7000 --grow

%post --nochroot --log=/mnt/sysimage/root/copy.log --erroronfail
#!/bin/sh
mkdir -p /mnt/cdrom
mount -t iso9660 /tmp/cdrom /mnt/cdrom
cp -a /mnt/cdrom/Extra /mnt/sysimage
umount /mnt/cdrom

%post --log=/mnt/sysimage/root/post.log --erroronfail
#!/bin/sh
cd /Extra/software
/bin/bash /Extra/software/postscript.sh

%packages
@base
@core
@dialup

5.isolinux.cfg

修改头三行为

default linux ks=cdrom:/ks.cfg
prompt 1
timeout 1


三、必备软件包

rsync、createrepo、mkisofs

四、运行脚本

makesrcdisk.sh

五、制作Redhat6.0安装光盘

因为光盘目录有变化,因此制作库的软件包有升级,拷贝文件的脚本有变化,其他雷同

脚本如下

makesrcdisk.sh脚本如下

#!/bin/bash


########################################################
## set parameter
########################################################
currentpath=`dirname $0`
cdromsourceiso=$currentpath/rhel-server-6.0-x86_64-dvd.iso
mediapath=/mnt
isoimagepath=/iso
installrpmlist=$currentpath/install.log
xmlrepofile=$currentpath/comps-hissage-server.xml
destisofile=mini64.iso
kickstartfile=$currentpath/ks_2.cfg
isomenufile=$currentpath/isolinux.cfg
if [[ -z $currentpath ]] || [[ -z $cdromsourceiso ]] || [[ -z $mediapath ]] || [[ -z $isoimagepath ]] || [[ -z $installrpmlist ]] || [[ -z $xmlrepofile ]] || [[ -z $destisofile ]]
then
    echo "missing args"
    exit
fi


########################################################
## mount iso image
########################################################
if [[ `ls /mnt|wc -l` -ne 0 ]]
then 
    echo "/mnt mount point is not empty"
    exit
fi
mount -t iso9660 -o loop $cdromsourceiso /mnt
if [[ `ls /mnt|wc -l` -eq 0 ]]
then
    echo "mount iso image failed"
    exit
fi


########################################################
## check required rpm 
########################################################
if  ! rpm -qa|grep -q createrepo   ||  ! rpm -qa|grep -q mkisofs ||  ! rpm -qa|grep -q rsync
then
   echo "missing rpms createrepo or mkisofs or rsync"
   exit
fi


########################################################
## copy required file
########################################################
rsync -av --exclude Packages/ --exclude Server/repodata/ $mediapath/  $isoimagepath/
mkdir -p $isoimagepath/Packages
mkdir -p $isoimagepath/Server/repodata




########################################################
## copy customed rpms
########################################################
less  $installrpmlist| awk -F" " '/Installing/ {print $2}'|while read line
do
    rpmfile=$line.rpm
    if [[ ! -e $mediapath/Packages/$rpmfile ]]
    then
        echo "not exit $rpmfile"
        exit
    fi
    cp -a $mediapath/Packages/$rpmfile $isoimagepath/Packages/
done


########################################################
## create repo
########################################################
discinfo=$(head -1 $isoimagepath/.discinfo)
if [[ -z $discinfo ]] || [[ $discinfo = "" ]]
then
   echo "missing discinfo"
   exit
fi
/bin/rm -f $isoimagepath/Server/repodata/*
/bin/cp -f $xmlrepofile $isoimagepath/Server/repodata
createrepo -u "media://$discinfo"  -g repodata/comps-hissage-server-2.xml $isoimagepath/Server




########################################################
## create disk
########################################################
/bin/cp -f $isomenufile $isoimagepath/isolinux/isolinux.cfg
/bin/cp -f $kickstartfile $isoimagepath/ks.cfg
mkisofs -R -J -T -v -no-emul-boot  -boot-load-size 4  -boot-info-table -V Hesine -b isolinux/isolinux.bin  -c isolinux/boot.cat -o $destisofile  $isoimagepath
echo "create iso success!"


六、参考

http://cooker.techsnail.com/index.php/Custom_Linux_bootable_CD

http://www.redhat.com/archives/kickstart-list/2011-March/msg00007.html

http://forums.fedoraforum.org/showthread.php?t=247303

http://www.linuxquestions.org/questions/red-hat-31/create-custom-rhel5-4-iso-802845/

http://www.linuxtopia.org/online_books/rhel6/rhel_6_migration_guide/rhel_6_migration_ch02s02s02s04.html

你可能感兴趣的:(linux,image,redhat,脚本,migration,keyboard)