红联Linux门户
Linux帮助

CentOS 6.2_X86_64系统定制详细版

发布时间:2014-11-05 21:40:02来源:linux网站作者:itnihao

关于CentOS5.X的系统定制,网上有不少很好的资料,但本人在实践6.X系统定制的时候,遇到问题不少,此文是对本次系统定制的一个总结,大家多多交流。

CentOS 6.2 X86_64有两张DVD,第二张DVD也用得到,所以定制光盘的时候,需要把两张光盘都下载到本地。


系统环境

vm7.14+CentOS 6.2_86_64系统

首先给虚拟机建立2个光驱,用CentOS6.2安装系统,当然也可以不用安装系统这个CentOS6.2系统,在其他5.X版本上制作也一样,但推荐安装,CentOS6.X图形化安装需要700M内存,之前我设置的是400M,直接进入text安装,且无法手动分区,此为系统bug,安装之后可以得到anaconda-ks.cfg,当然也可以用system-config-kickstart工具制作,关于ks制作,此处不讲解,附上我的ks文件内容:


ks.cfg文件内容(ks文件决定需要复制哪些文件包)

# Kickstart file automatically generated by anaconda. 
 
#version=DEVEL
install 
text 
cdrom 
lang en_US.UTF-8 
keyboard us 
skipx 
network --onboot yes --device eth0 --bootproto static --ip 192.168.16.154 --netmask 255.255.255.0 --gateway 192.168.16.1 --noipv6 --nameserver 114.114.114.114 
rootpw  itnihao 
firewall --service=ssh --port=9090:tcp 
authconfig --enableshadow --passalgo=sha512
selinux --enforcing 
timezone --utc Asia/Chongqing 
bootloader --location=mbr --driveorder=sda --append=" rhgb crashkernel=auto quiet"
# 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 --none 
clearpart --all --initlabel  
part /boot --fstype=ext4 --size=2000
part /var --fstype=ext4 --size=100000
part swap --size=5000
part / --fstype=ext4 --grow --size=200
 
reboot 
#repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100
 
%packages  --nobase 
@base 
@chinese-support 
@client-mgmt-tools 
@core 
@development 
@legacy-unix 
@network-file-system-client 
@network-tools 
@php 
@performance 
@perl-runtime 
@system-management-snmp 
@server-policy 
@system-admin-tools 
@web-server 
sgpio 
imake 
tcp_wrappers 
iptraf 
php-mysql 
perl-DBD-SQLite 
rrdtool 
crypto-utils 
perl-Cache-Memcached 
perl-CGI-Session 
perl-CGI 
lrzsz 
bind 
bind-chroot 
bind-devel 
mysql 
perl-DBD-MySQL 
mysql-server 
mysql-devel 
createrepo 
python-devel 
-vconfig 
-rng-tools 
-readahead 
-prelink 
-rfkill 
-pinfo 
-rdate 
-words 
-pm-utils 
-pcmciautils 
-usbutils 
-samba-client 
-nfs4-acl-tools 
-nfs-utils 
-cifs-utils 
-webalizer 
-httpd-manual
zlib-devel 
openssl-devel 
openssl-perl  
openssl098e
%post --nochroot  #在没有切换到安装后系统的时候运行的命令,用于在光盘拷贝文件到系统
cp /mnt/source/Packages/conf/settings.sh /mnt/sysimage/tmp/ 
mv /mnt/sysimage/etc/httpd/conf/httpd.conf /mnt/sysimage/etc/httpd/conf/httpd.conf.back 
mv /mnt/sysimage/etc/snmp/snmpd.conf /mnt/sysimage/etc/snmp/snmpd.conf.back 
cp /mnt/source/Packages/conf/httpd.conf /mnt/sysimage/etc/httpd/conf/httpd.conf 
cp /mnt/source/Packages/conf/snmpd.conf /mnt/sysimage/etc/snmp/snmpd.conf 
cp /mnt/source/Packages/cacti.tar.gz /mnt/sysimage/tmp 
%post #进入安装后的系统
/tmp/settings.sh 
cd /tmp 
tar zxvf cacti.tar.gz -C /var/www/html 
service mysqld restart 
mysqladmin -uroot password itnihao 
mysql -uroot -pitnihao -e "create database cacti;" 
mysql -uroot -pitnihao -D cacti -e "source /var/www/html/cacti/cacti.sql" 
mysql -uroot -pitnihao -e "grant all privileges on cacti.* to cacti@localhost identified by 'cacti';" 
mysql -uroot -pitnihao -e "flush privileges;" 
#mysql -ucacti -pcacti -D cacti</var/www/html/cacti/cacti.sql 
sed -i "s/cactiuser/cacti/g" /var/www/html/cacti/include/config.php 
chmod 777 -R /var/www/html/cacti/rra/var/www/html/cacti/log 
#sntp -P no -r pool.ntp.org 
#hwclock -w 
/usr/sbin/eject 
rm /tmp/* 
%end

#复制系统安装文件到定制的系统目录

mkdir /mnt/cd{1,2}
mkdir /home/centos/Packages -p
mkdir /home/source
mount /dev/cdrom /mnt/cd1
mount /dev/cdrom1 /mnt/cd2
mount /dev/cdrom /mnt/cd1
mount /dev/cdrom1 /mnt/cd2
awk -F "Installing" '{print $2}' ~/install.log |sed -e '/^$/d' -e 's/^ //g'  >/home/source/packges.list
for packges in `cat /home/source/packges.list`
do 
cp /mnt/cd1/Packages/$packges*  /home/centos/Packages 
[ $? != 0 ] && echo "copy  $packges is faied!" 
done 
 
rsync -a --exclude=Packages /mnt/cd1/  /home/centos 
rm -rf /home/centos/repodata 
cd /home/centos 
createrepo /home/centos/  #重新生成repodata文件
createrepo -g repodata/repomd.xml /home/centos #创建组文件,此处似乎有bug,需经过以下处理


附件中有我的packges.list文件列表

前面的内容,百度都能搜到,下面内容是成功的关键所在

vim repodata/repomd.xml


原文件为

</data>
<data type="group_gz">
<location href="repodata/repomd.xml.gz"/>
<checksum type="sha256">76f27114ff5588340a0b175f382a6c32185f94b36fc3495b8ae03db5724a943f</checksum>
<open-checksum type="sha256">ae80d0c6948e128556f79d5b8b69b030899f5a825ada4a0779c29f5f94b9d912</open-checksum>
<timestamp>1335105744</timestamp>
</data>
<data type="group">
<location href="repodata/repomd.xml"/>
<checksum type="sha256">ae80d0c6948e128556f79d5b8b69b030899f5a825ada4a0779c29f5f94b9d912</checksum>
<timestamp>1335105744</timestamp>
</data>
</repomd>

修改为

<data type="group_gz">
<location xml:base="media://1323560292.885204#1" href="repodata/bedb7dc8fdf920deffbdc5a70ea0d6d77255656556184f5e996e8a88a 
63d145c-c6-x86_64-comps.xml.gz"/>
<checksum type="sha256">bedb7dc8fdf920deffbdc5a70ea0d6d77255656556184f5e996e8a88a63d145c</checksum>
<open-checksum type="sha256">3a27232698a261aa4022fd270797a3006aa8b8a346cbd6a31fae1466c724d098</open-checksum>
<timestamp>1324003565</timestamp>
</data>
<data type="group">
<location xml:base="media://1323560292.885204#1" href="repodata/3a27232698a261aa4022fd270797a3006aa8b8a346cbd6a31fae1466c 
724d098-c6-x86_64-comps.xml"/>
<checksum type="sha256">3a27232698a261aa4022fd270797a3006aa8b8a346cbd6a31fae1466c724d098</checksum>
<timestamp>1324003565</timestamp>
</data>


不修改上面的group,安装的时候会提示无法找到group组里面的包,如core组件无法安装,导致系统无法安装

将ks.cfg文件复制到

cp ks.cfg  /home/CentOS/isolinux/ks.cfg  
#此处的ks.cfg可以自己制作,也可以用我上面的  关于ks文件中的自定义脚本和文件如下所示 ls /home/centos/Packages/conf/
httpd.conf  settings.sh  snmpd.conf


修改isolinux.cfg  ,此文件是光盘启动的自动应答第一步

cat  /home/centos/isolinux/isolinux.cfg  
default auto 
timeout 600 
label auto 
kernel vmlinuz 
append ks=cdrom:/isolinux/ks.cfg initrdinitrd=initrd.img 
#default vesamenu.c32 
#prompt 1 
 
display boot.msg 
 

经过以上处理,系统可以成功定制,下面是对文件打包

mkisofs -o itnihaoOS.iso -b isolinux/isolinux.bin -c isolinux/boot.cat -no-emul-boot -boot-load-size 4 -boot-info-table -R -J  -v -T /home/centos


总结一下,其实对系统简单的定制不是很难,难的是需要反复验证,反复测试,以上的内容经过测试完全可以使用。