工作中有客户设备放在外地机房托管,有时候需要重新安装系统,让机房值班人员帮忙安装,这个方式让自己觉得比自己来安装都累,关键是有些东西在电话里说不清楚,所以就想到做一套完全自动安装系统的光盘出来给机房邮寄过去,这样下回再有设备需要安装系统就省事多了。话不多说,接下来开始:

1.首先按照客户的安装要求安装一遍centos,可以在vmware workstation环境中实现,本文就是在虚拟机里做的测试。
2.安装制作发行版所需的基本软件包
yum –y install createrepo mkisofs isomd5sum
3.生成安装系统所需的rpm文件列表
awk '/Installing/{print $2}' install.log |sed 's/^[0-9]*://g' >/root/packages.list
4.创建定制工作目录
mkdir -p /mnt/cdrom
mkdir -p /data/OS
mount /dev/cdrom /mnt/cdrom
rsync -a --exclude=CentOS /mnt/cdrom/* /data/OS/
mkdir /data/OS/CentOS
5.复制精简后的RPM包
vi /data/cprpms.sh

#创建自动复制RPM包脚本
#!/bin/bash 
    DEBUG=0
    CentOS_DVD=/mnt/cdrom 
    ALL_RPMS_DIR=/mnt/cdrom/CentOS #源光盘RPM包存放的目录
    KOS_RPMS_DIR=/data/OS/CentOS    #精简后RPM包存放的目录
    packages_list=/root/packages.list  #精简后的RPM包列表
    number_of_packages=`cat $packages_list | wc -l` 
    i=1
        while [ $i -le $number_of_packages ] ; do 
            line=`head -n $i $packages_list | tail -n -1` 
            name=`echo $line | awk '{print $1}'` 
            version=`echo $line | awk '{print $3}' | cut -f 2 -d :` 
        if [ $DEBUG -eq "1" ] ; then 
            echo $i: $line 
            echo $name  
            echo $version 
        fi 
        if [ $DEBUG -eq "1" ] ; then 
            ls $ALL_RPMS_DIR/$name-$version* 
            if [ $? -ne 0 ] ; then 
                echo "cp $ALL_RPMS_DIR/$name-$version* " 
            fi 
            else 
                echo "cp $ALL_RPMS_DIR/$name-$version* $KOS_RPMS_DIR/" 
                cp $ALL_RPMS_DIR/$name-$version* $KOS_RPMS_DIR/ 
            # in case the copy failed 
            if [ $? -ne 0 ] ; then 
                echo "cp $ALL_RPMS_DIR/$name-$version* " 
                cp $ALL_RPMS_DIR/$name* $KOS_RPMS_DIR/ 
            fi 
        fi 
    i=`expr $i + 1` 
    done
执行:
chmod +x cprpms.sh
./cprpms.sh
6.配置kickstart脚本
vi /data/OS/isolinux/ks.cfg

#platform=x86, AMD64, 或 Intel EM64T
# System authorization information
auth  --useshadow  --enablemd5
# System bootloader configuration
bootloader --location=mbr
# Clear the Master Boot Record
zerombr
# Partition clearing information
clearpart --all --initlabel
# Use text mode install
text
# Firewall configuration
firewall --disabled
# Run the Setup Agent on first boot
firstboot --disable
# System keyboard
keyboard us
# System language
lang en_US
# Installation logging level
logging --level=info
# Use CDROM installation media
cdrom
# Network information
network --bootproto=static --device=eth0 --gateway=192.168.1.1 --ip=192.168.1.86 --nameserver=8.8.8.8 --netmask=255.255.255.0 --onboot=on
# Reboot after installation
reboot
#Root password
rootpw --iscrypted $1$3k/5qcrx$Yl0uM7D/nt400cGTM4fAj.

# SELinux configuration
selinux --disabled
# System timezone
timezone --isUtc Asia/Shanghai
# Install OS instead of upgrade
install
# X Window System configuration information
xconfig  --defaultdesktop=GNOME --depth=8 --resolution=640x480
# Disk partitioning information
part swap --asprimary --bytes-per-inode=4096 --fstype="swap" --ondisk=sda --size=16000
part / --asprimary --bytes-per-inode=4096 --fstype="ext3" --grow --ondisk=sda --size=1

%packages
@base
@development-tools
@development-libs
@editors

 

7.生成comps.xml
cd /data/OS
createrepo –g repodata/comps.xml /data/OS/
8.让系统从kickstart配置启动安装
vi /data/OS/isolinux/isolinux.cfg

default auto
#prompt 1
timeout 600

display boot.msg

menu background splash.jpg
menu title Welcome to CentOS 5.6!
menu color border 0 #ffffffff #00000000
menu color sel 7 #ffffffff #ff000000
menu color title 0 #ffffffff #00000000
menu color tabmsg 0 #ffffffff #00000000
menu color unsel 0 #ffffffff #00000000
menu color hotsel 0 #ff000000 #ffffffff
menu color hotkey 7 #ffffffff #ff000000
menu color scrollbar 0 #ffffffff #00000000

label auto
kernel vmlinuz
append  ks=cdrom:/isolinux/ks.cfg initrd=initrd.img

label linux
  menu label ^Install or upgrade an existing system
  menu default
  kernel vmlinuz
  append initrd=initrd.img
label vesa
  menu label Install system with ^basic video driver
  kernel vmlinuz
  append initrd=initrd.img xdriver=vesa nomodeset
label rescue
  menu label ^Rescue installed system
  kernel vmlinuz
  append initrd=initrd.img rescue
label local
  menu label Boot from ^local drive
  localboot 0xffff
label memtest86
  menu label ^Memory test
  kernel memtest
  append -

9.生成comps.xml 解决安装包的依赖关系。
cd /data/OS
createrepo –g repodata/comps.xml /data/OS/

10.生成ISO镜像
cd /data/OS
declare -x discinfo=`head -1 .discinfo`

***若执行上条命令出错,提示找不到.discinfo这个文件,可能在之前复制光盘过程没能把这个文件复制过来,所以需要执行一下命令,将这个文件从光盘根目录下复制过来。***

#cd /mnt/cdrom/

#ls –a

定制CentOS 5.6精简的自动安装版及心得_软件包

# cp /mnt/cdrom/.discinfo /data/OS/

# cp /mnt/cdrom/.treeinfo /data/OS/

然后再执行那条命令就可以了。
createrepo -u "media://$discinfo" -g repodata/comps.xml /data/OS/

mkisofs -R -J -T -r -l -d -joliet-long -allow-multidot -allow-leading-dots -no-bak -o /data/centos5.6x64_shengda.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table /data/OS
10.生成MD5检验码
/usr/bin/md5sum /data/centos5.6x64_shengda.iso

至此整个制作过程完毕。

***此制作流程只适合centos5.x系统版本的精简,centos6.x系统有些地方需要做一下变化,但是变化不是很大,请参照本人的另一篇关于centos6.3系统的精简的总结***