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