内核编译
一、物理机系统根分区至少10G以上的内存空间
[root@foundation52 ~]# df -H
Filesystem Size Used Avail Use% Mounted on
/dev/sda3 120G 52G 68G 44% / ##必须有至少10G以上的内存空间
devtmpfs 4.0G 0 4.0G 0% /dev
tmpfs 4.0G 234k 4.0G 1% /dev/shm
tmpfs 4.0G 9.3M 4.0G 1% /run
tmpfs 4.0G 0 4.0G 0% /sys/fs/cgroup
/dev/sda1 518M 154M 364M 30% /boot
/dev/loop0 4.1G 4.1G 0 100% /var/www/html/rhel7.2
/dev/loop1 3.8G 3.8G 0 100% /var/www/html/rhel7.0
/dev/loop2 3.9G 3.9G 0 100% /var/www/html/rhel6.5
tmpfs 784M 37k 784M 1% /run/user/1000
tmpfs 784M 0 784M 0% /run/user/0
/dev/sdc1 1.1G 23M 985M 3% /run/media/kiosk/18D8-45E8
试验环境:server5
版本:6.5
IP:172.25.52.5
二、虚拟机必须有2048M以上的内存(memory)
三、虚拟机server5 yum设定:
[root@server5 ipvsadm]# cat /etc/yum.repos.d/rhel-source.repo
[rhel-source]
name=Red Hat Enterprise Linux $releasever - $basearch - Source
baseurl=http://172.25.52.250/rhel6.5
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release
[HighAvailability]
name=HighAvailability
baseurl=http://172.25.52.250/rhel6.5/HighAvailability
gpgcheck=0
[LoadBalancer]
name=LoadBalancer
baseurl=http://172.25.52.250/rhel6.5/LoadBalancer
gpgcheck=0
[ResilientStorage]
name=ResilientStorage
baseurl=http://172.25.52.250/rhel6.5/ResilientStorage
gpgcheck=0
[ScalableFileSystem]
name=ScalableFileSystem
baseurl=http://172.25.52.250/rhel6.5/ScalableFileSystem
gpgcheck=0
四、安装ipvsadm服务
[root@server5 ipvsadm]# yum install ipvsadm -y
五、下载并安装 kernel-2.6.32-220.23.1.el6.src.rpm 内核源码包
[root@server5 ~]# ls
kernel-2.6.32-220.23.1.el6.src.rpm
[root@server5 ~]# rpm -ivh kernel-2.6.32-220.23.1.el6.src.rpm
[root@server5 ~]# yum install -y rpm-build
[root@server5 ~]# cd rpmbuild/
[root@server5 ~]# cd SPECS/
[root@server5 ~]# rpmbuild -bp kernel.spec ##根据依赖性提示安装各种包
[root@server5 SPECS]# yum install -y gcc redhat-rpm-config patchutils xmlto asciidoc elfutils-libelf-devel zlib-devel binutils-devel newt-devel python-devel hmaccalc perl-ExtUtils-Embed ##需要追加安装的包
[root@server5 ~]# ls
asciidoc-8.4.5-4.1.el6.noarch.rpm
newt-devel-0.52.11-3.el6.x86_64.rpm
slang-devel-2.2.1-1.el6.x86_64.rpm
[root@server5 ~]# yum install asciidoc-8.4.5-4.1.el6.noarch.rpm newt-devel-0.52.11-3.el6.x86_64.rpm slang-devel-2.2.1-1.el6.x86_64.rpm -y
六、编译内核并生成rpm包、src包
[root@server5 ~]# cd rpmbuild/
[root@server5 rpmbuild]# ls
BUILD BUILDROOT RPMS SOURCES SPECS SRPMS
[root@server5 rpmbuild]# cd SPECS/
[root@server5 SPECS]# rpmbuild -bp kernel.spec
## 因为server5上缺少命令rngd所以打开另外一个下载,执行如此命令
[root@server5 ~]# yum provides */rngd
[root@server5 ~]# yum install rng-tools -y
[root@server5 ~]# rngd -r /dev/urandom
再次返回原server就安装成功了
[root@server5 ~]# tar zxf Lvs-fullnat-synproxy.tar.gz
[root@server5 ~]# cd lvs-fullnat-synproxy/
[root@server5 lvs-fullnat-synproxy]# ls
lvs-2.6.32-220.23.1.el6.patch README
lvs-tools.tar.gz toa-2.6.32-220.23.1.el6.patch
[root@server5 lvs-fullnat-synproxy]# cp lvs-2.6.32-220.23.1.el6.patch ~/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/ ##复制内核源码,并修改
[root@server5 lvs-fullnat-synproxy]# cd ~/rpmbuild/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# patch -p1 < lvs-2.6.32-220.23.1.el6.patch ##打补丁
七、查看原内核版本并修改配置文件
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# uname -r
2.6.32-431.el6.x86_64
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# vim Makefile
1 VERSION = 2
2 PATCHLEVEL = 6
3 SUBLEVEL = 32
4 EXTRAVERSION = -220.23.1.el6.x86_64 ##这一行添加修改内核版本
5 NAME = Man-Eating Seals of Antiquity
6 RHEL_MAJOR = 6
7 RHEL_MINOR = 2
8 RHEL_RELEASE = 219
八、编译、导入模块并安装
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# make ##编译
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# make modules_install ##导入模块
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# make install
九、修改开机引导文件
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# vim /boot/grub/grub.conf
9 #boot=/dev/vda
10 default=0
11 timeout=5
十、重新启动
[root@server5 linux-2.6.32-220.23.1.el6.x86_64]# reboot
十一、重新启动后查看内核版本,则编译成功
查看编译好后内核版本:
[root@server5 ~]# uname -r
2.6.32-220.23.1.el6.x86_64
编译之前红帽公司内核版本:
[root@server2 ~]# uname -r
2.6.32-431.el6.x86_64
原redhat内核版本不支持某些服务,有些服务需要重新编译内核比如 fullnat