深度定制CentOS 6.5安装光碟(替换内核&升级驱动)


第一步:挂在CentOS 6.5的母盘
 mount -t iso9660 -o ro /dev/cdrom /mnt/centos_dvd
 

第二步:将CentOS 6.5母盘的内容同步拷贝到 /root/centos_nat/centos_dvd目录下(注:repodata目录不拷贝)  

rsync -av --exclude=repodata/   /mnt/centos_dvd  /root/centos_nat

注:需要检查.discinfo是否存在
cat  /root/centos_nat/centos_dvd/.discinfo 1385726732.061157 6.5 x86_64 ALL

第三步:删除TRANS.TBL文件

find /root/centos_nat/centos_dvd -name TRANS.TBL -exec rm -f {} \; -print

第四步:安装所有所需的工具

 yum install anaconda anaconda-help anaconda-runtime createrepo /usr/bin/yumdownloader /usr/bin/mkisofs

第五步:定制所需的Package 

cd /root/centos_nat/centos_dvd/Package 

a:更新initscripts
rm -f initscripts*rpm
yumdownloader initscripts

b:更新kernel文件
[root@bigstat-server-6 Packages]# ls kernel-* kernel-2.6.32-431.el6.x86_64.rpm  kernel-firmware-2.6.32-431.el6.noarch.rpm
rm -f kernel-*
 cp /home/centos_nat/centos_dvd/Packages/kernel-2.6.35-5.x86_64.rpm .

c:更新iptalbes 
[root@bigstat-server-6 Packages]# ls -al iptables* -r--r--r--. 1 root root 258132 11月 25 03:31 iptables-1.4.7-11.el6.x86_64.rpm -r--r--r--. 1 root root  99120 11月 25 03:31 iptables-ipv6-1.4.7-11.el6.x86_64.rpm


更新为自编译的iptables版本
iptables-1.4.7-10.el6.x86_64.rpm
iptables-ipv6-1.4.7-10.el6.x86_64.rpm

d:更新其他软件及其依赖的软件
yumdownloader ethtool
ethtool-3.5-1.2.el6_5.x86_64.rpm
yumdownloader lsof
lsof-4.82-4.el6.x86_64.rpm
yumdownloader dstat
dstat-0.7.0-1.el6.noarch.rpm
yumdownloader telnet
telnet-0.17-47.el6_3.1.x86_64.rpm
yumdownloader tcpdump
tcpdump-4.0.0-3.20090921gitdf3cb4.2.el6.x86_64.rpm
yumdownloader wget
wget-1.12-1.11.el6_5.x86_64.rpm
yumdownloader libpcap.x86_64
libpcap-1.4.0-1.20130826git2dbcaa1.el6.x86_64.rpm 
yumdownloader man
man-1.6f-32.el6.x86_64.rpm

e:更新本业务需要的特殊包
yumdownloader  conntrack-tools
conntrack-tools-1.4.1-1.el6.x86_64.rpm

yumdownloader libnetfilter_conntrack

libnetfilter_conntrack-0.0.100-2.el6.i686.rpm                                                                                                   

libnetfilter_conntrack-1.0.3-1.el6.x86_64.rpm 

yumdownloader libnetfilter_cthelper
libnetfilter_cthelper-1.0.0-3.el6.x86_64.rpm
yumdownloader libnetfilter_cttimeout
libnetfilter_cttimeout-1.0.0-1.el6.x86_64.rpm
yumdownloader libnetfilter_queue
libnetfilter_queue-1.0.2-1.el6.x86_64.rpm
yumdownloader libnfnetlink
libnfnetlink-1.0.1-1.el6.x86_64.rpm    
libnfnetlink-1.0.0-1.el6.i686.rpm 
yumdownloader libmnl

libmnl-1.0.3-4.el6.x86_64.rpm                                                                                                                 

libmnl-1.0.2-3.el6.i686.rpm

ulogd-1.24-2.el5.re.x86_64.rpm


第六步:修改repo基本文件 
cd repodata
cp /mnt/centos_dvd/repodata/*-minimal-x86_64.xml  a.xml

检查a.xml里面的文件,上一步添加的每一项均需要在a.xml中添加,上一步删除的每一项均需要在a.xml中删除
例如:删除kernel-firmware

第七步:重新生成repo 
cd /root/centos_nat/centos_dvd

[root@bigstat-server-6 centos_dvd]# discinfo=`head -1 .discinfo` [root@bigstat-server-6 centos_dvd]# compdata=`find repodata -name a.xml`

 createrepo -u "media://$discinfo" -g $compdata .

查看repodata目录已经被更新

[root@bigstat-server-6 repodata]# ls 

021cc7844abf858665f17d4eb806b8766799bad8549f06ac1b962196ac396f93-filelists.sqlite.bz2 07821b5545f1731f6b2136d24b8ea409ab8c81f31130d4af83486683fb6478aa-primary.xml.gz 16e2571721cd66f02204a55414f15c24af2c66c502923ce6f17e6d13310d0513-other.sqlite.bz2 53f6028763ddd38d2cf12151907c912938fee5c030b6005db3955db1066ee9ed-a.xml.gz 721cb2db5af579f49bdfc62a4003df30936b815df049619b4a3766fe67777310-primary.sqlite.bz2 899eee50d02ed1469f7ae7fe67ad6f9de42c206be1da725fe34cdf206fd8a356-other.xml.gz da04b2e08de36b98579cb22953b7da8cebfa60106d65796069576c43d5eff579-a.xml eb795a29dc0b43e7d149f28cc3c7bfa1848df07f577a3f33ffa43249c4923ed4-filelists.xml.gz repomd.xml


第八步:生成Kickstart文件。

这个文件从任何一个CentOS 6 安装完的系统里,/root目录下会有一个anaconda-ks.cfg目录,以此目录为基础进行修改。修改后,请放到/root/centos_nat/centos_dvd/isolinux目录下,我命名为myks.cfg,下面是我使用的版本

# Kickstart file automatically generated by anaconda.

#version=DEVEL

install

cdrom

lang zh_CN.UTF-8

keyboard us

#network --onboot no --device eth0 --bootproto dhcp --noipv6

#network --onboot no --device eth1 --bootproto dhcp --noipv6

rootpw  --iscrypted $6$myYiR0VMuN4owxiWmWsceIId0OERWHlwkigsd20BKkO0

firewall --service=ssh

authconfig --enableshadow --passalgo=sha512

selinux --enforcing

timezone --utc Asia/Shanghai

bootloader --location=mbr --driveorder=sda --append="crashkernel=auto rhgb 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

#part /boot --fstype=ext4 --size=200

#part swap --size=8000

#part / --fstype=ext4 --grow --size=200

#repo --name="CentOS"  --baseurl=cdrom:sr0 --cost=100

%packages

@core

%post --log=/usr/src/install.log

dracut -f -v --hostonly -k '/lib/modules/2.6.35' /boot/initramfs-2.6.35.img 2.6.35

echo "initrd /initramfs-2.6.35.img" >>/boot/grub/grub.conf

mkdir -p /mnt/cdrom

mount -r -t iso9660 /dev/cdrom /mnt/cdrom

unalias cp

cp -r /mnt/cdrom/opt /root

find /lib/modules/2.6.35 -name ixgbe.ko -exec rm -f {} \;

install -D -m 644 /root/opt/ixgbe.ko /lib/modules/2.6.35/kernel/drivers/net/ixgbe/ixgbe.ko

/sbin/depmod -a

%end


%post的部分的脚本,是为了解决kernel2.6.35安装过程中没有生成initramfs文件,以及没有在grub.conf中增加相关项而增加。其原因我尚不明白为何安装过程中会有此缺陷。除此之外,在上述的安装脚本中,还进行升级万兆网卡的驱动

第九步:更新isolinux.cfg文件
isolinux.cfg文件位于/root/centos_nat/centos_dvd/isolinux目录下,配置安装的时候的KickStart文件为上一步生成的myks.cfg

label linux

  menu label ^Install or upgrade an existing system

  menu default

  kernel vmlinuz

  append ks=cdrom:/isolinux/myks.cfg initrd=initrd.img


第十步:重新生成ISO文件
cd /root/centos_nat/centos_dvd

mkisofs -r -R -J -T -v -no-emul-boot \

    -boot-load-size 4 \

    -boot-info-table \

    -V "centos6.5-nat-1-x86_64.iso" \

    -p "TM" \

    -A "centos6.5-nat-1-x86_64.iso - 2014/03/28" \

    -b isolinux/isolinux.bin \

    -c isolinux/boot.cat \

    -x "lost+found" \

    --joliet-long \

    -o ../centos6.5-nat-1.3-x86_64.iso .



第十一步:生成文件的MD5值

/usr/bin/implantisomd5 centos6.5-nat-1.3-x86_64.iso 


然后就可以刻录光碟并在机器上进行安装。

相关内容