0、请使用物理机安装,虚拟机没编译成功

1、先查看一下系统版本,需要是centos6,内核2.6

cat /etc/*release
uname -r

[root@lvs-fullnat-one ~]# cat /etc/*release
CentOS release 6.5 (Final)
LSB_VERSION=base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch:graphics-4.0-amd64:graphics-4.0-noarch:printing-4.0-amd64:printing-4.0-noarch
CentOS release 6.5 (Final)
CentOS release 6.5 (Final)
[root@lvs-fullnat-one ~]# uname -r
2.6.32-431.el6.x86_64
[root@lvs-fullnat-one ~]# 

2、从Redhat网站下载kernel的rpm

wget ftp://ftp.redhat.com/pub/redhat/linux/enterprise/6Server/en/os/SRPMS/kernel-2.6.32-220.23.1.el6.src.rpm
如果无法现在,请从网盘下载。连接:
<https://pan.baidu.com/s/1p1tkhI7Wn5eAq999E9D_xA&gt;

3、从rpm中获得kerel源码

vim ~/.rpmmacros;add:%_topdir /home/pukong/rpms%_tmppath /home/pukong/rpms/tmp%_sourcedir /home/pukong/rpms/SOURCES%_specdir /home/pukong/rpms/SPECS%_srcrpmdir /home/pukong/rpms/SRPMS%_rpmdir /home/pukong/rpms/RPMS%_builddir /home/pukong/rpms/BUILDcd /home/pukong;mkdir rpms;mkdir rpms/tmp;mkdir rpms/SOURCES;mkdir rpms/SPECS;mkdir rpms/SRPMS;mkdir rpms/RPMS;mkdir rpms/BUILD;useradd mockbuild
rpm -ivh kernel-2.6.32-220.23.1.el6.src.rpm
cd /home/pukong/rpms/SPECS
yum -y install rpm-build
yum -y install gcc zlib-devel patchutils xmlto asciidoc elfutils-libelf-devel  binutils-devel  newt-devel python-devel hmaccalcyum -y install  rng-tools  openssl-devel
rngd -r /dev/urandom  ##rng-tools用于在执行rpmbuild -bb --target=`uname -m` kernel.spec的时候生成随机数,不然会卡在那里,但是根据卡的地方倒退回去会看到提示就执行rngd -r /dev/hwrandom,不行的话执行 rngd -r /dev/urandom,因此需要安装此工具rpmbuild -bp kernel.spec;

最后的rpmbuild是一个可能是一个十分漫长的操作,请不要关闭xshell。

这时候你就能在/home/pukong/rpms/BUILD找到内核源码

[root@lvs-fullnat-one SPECS]#  cd /home/pukong/rpms/BUILD/;
[root@lvs-fullnat-one BUILD]# ls
kernel-2.6.32-220.23.1.el6

4、添加lvs patch

[Lvs-fullnat-synproxy.tar.gz]
https://pan.baidu.com/s/1sOnbGpnk7vZGoTxgEVDpAA
将文件放到服务器中

tar xvf Lvs-fullnat-synproxy.tar.gz
cd lvs-fullnat-synproxy/
cp lvs-2.6.32-220.23.1.el6.patch /home/pukong/rpms/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/cd /home/pukong/rpms/BUILD/;
cd kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/;patch -p1<lvs-2.6.32-220.23.1.el6.patch; // patch is in lvs-fullnat-synproxy.tar.gz 给内核打补丁    补丁不能重复打

打完补丁,修改Makefile文件,给内核版本命名:

[root@lvs-fullnat-one linux-2.6.32-220.23.1.el6.x86_64]# uname -r
2.6.32-431.el6.x86_64
[root@lvs-fullnat-one linux-2.6.32-220.23.1.el6.x86_64]# vim Makefile

将Makefile中EXTRAVERSION 字段补上一个跟uname -r相似字段,如下图

VERSION = 2
PATCHLEVEL = 6
SUBLEVEL = 32
EXTRAVERSION = -431.toa.el6.x86_64
NAME = Man-Eating Seals of Antiquity
RHEL_MAJOR = 6
RHEL_MINOR = 2
RHEL_RELEASE = 219

注意修改.config文件中的参数,主要是为了扩大VS最大连接数,可以增大VS的吞吐量(并发连接量),如果值只是原本的4096可能会丢包

 vim .configCONFIG_IP_VS_TAB_BITS=22 

5、编译内核

make -j16 ##j是指同时作业的数量,可以不用添加此参数
make modules_install;
make install;

此时可能会报几个错

[root@lvs-fullnat-one linux-2.6.32-220.23.1.el6.x86_64]# make install;
sh /home/pukong/rpms/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/arch/x86/boot/install.sh 2.6.322.6.32-431.el6.x86_64 arch/x86/boot/bzImage \System.map "/boot"
ERROR: modinfo: could not find module lpc_ich
ERROR: modinfo: could not find module ptp
[root@lvs-fullnat-one linux-2.6.32-220.23.1.el6.x86_64]#

需要复制进来几个模块

cp /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/mfd/lpc_ich.ko /lib/modules/2.6.32-431.toa.el6.x86_64/kernel/drivers/mfd/mkdir /lib/modules/2.6.32-431.toa.el6.x86_64/kernel/drivers/ptp
cp /lib/modules/2.6.32-431.el6.x86_64/kernel/drivers/ptp/ptp.ko /lib/modules/2.6.32-431.toa.el6.x86_64/kernel/drivers/ptp/

重新安装,会有几个警告,忽略即可

[root@lvs-fullnat-one linux-2.6.32-220.23.1.el6.x86_64]# make install;
sh /home/pukong/rpms/BUILD/kernel-2.6.32-220.23.1.el6/linux-2.6.32-220.23.1.el6.x86_64/arch/x86/boot/install.sh 2.6.32-431.toa.el6.x86_64 arch/x86/boot/bzImage \System.map "/boot"
WARNING: /lib/modules/2.6.32-431.toa.el6.x86_64/kernel/drivers/ptp/ptp.ko needs unknown symbol kmem_cache_alloc_trace
WARNING: /lib/modules/2.6.32-431.toa.el6.x86_64/kernel/drivers/ptp/ptp.ko needs unknown symbol posix_clock_register
WARNING: /lib/modules/2.6.32-431.toa.el6.x86_64/kernel/drivers/ptp/ptp.ko needs unknown symbol posix_clock_unregister
[root@lvs-fullnat-one linux-2.6.32-220.23.1.el6.x86_64]# 

6、修改内核文件

vim /boot/grub/grub.conf
修改default的值为0 表示先启动
引导文件中有两个引导启动段,一个是原本内核的linux,一个是新编译的内核,新编译的内核在上面,所以把default的值设为0,即表示使用新的内核引导系统了。

7、重启

reboot


微信公众号,随便发点有意思的东西

转载于:https://blog.51cto.com/9346709/2307280

lvs fullnat+ECMP【1】内核编译相关推荐

  1. linux 2.6内核编译_03_配置选项注解

    linux 2.6.15.6内核配置(unfinished) http://www.builder.com.cn/2007/1011/545597.shtml 注意: 不同的内核版本配置选项(或组织) ...

  2. 【转】LINUX内核编译步骤详细介绍

    from: http://blog.csdn.net/do2jiang/article/details/4201203 LINUX内核编译步骤详细介绍 到www.kernel.org 下载 Linux ...

  3. LINUX内核编译步骤详细介绍

    LINUX内核编译步骤详细介绍 到www.kernel.org 下载 Linux-2.6.18.2.tar.bz2 tar –jxvf  Linux-2.6.18.2.tar.bz2 -C /usr/ ...

  4. android8.1内核编译,Android8.1.0安卓源码编译

    换中科大源18.04 由于新安装的Ubuntu默认配置为Ubuntu官方源,基本软件包下载速度较慢,下面修改软件源: 备份下sources.list sudo cp /etc/apt/sources. ...

  5. linux0.11内核编译,编译Linux-0.11内核

    make[1]:正在离开目录 `/home/guang/temp/h/linux-0.11/lib' kernel/kernel.o: In function `number': /home/guan ...

  6. 编译linux内核的错误,linux内核编译错误

    原标题:linux内核编译错误 内核版本:2.6.14 交叉编译器: -linux-gcc 4.3.3 错误: arch/arm/mm/alignment.c: In function 'proc_a ...

  7. Linux 2.6内核编译与配置安装升级

    Linux系统更新了很多版本更新,我本人认为Linux 2.6内核在Linux系统系列里很好使的文件系统,在此向大家推荐.如今技术不断更新,各种使用文件都已经淘汰.我认为还是有很不错的如Linux 2 ...

  8. 错误linux autocof.h,【技巧】一种提高 [ 定位Linux内核编译错误 ] 效率的方法

    前言:在编译一些非标准linux内核时,常会出现一些错误导致编译中止.这其中的大部分都能通过根据编译器报出的错误定位来查阅源码.找到相关的依赖配置,然后修正配置状态来解决.但也有时候从依赖逻辑中无法发 ...

  9. Linux内核编译和测试

    课程论文要求写的,顺便贴上来一部分. Linux内核编译和测试<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:of ...

最新文章

  1. Java中的内存分配
  2. 在Linux的Eclipse下搭建Android环境
  3. 推荐开发工具系列之--LinrF5(自动刷新)
  4. sql 找到上一次_记一次对XXCMS的代码审计
  5. 如何修改物料主数据的利润中心
  6. [leetcode](4.21)4. 有效子数组的数目
  7. Date对象 IOS踩坑
  8. php访问日记在哪,nginx访问日志在哪里
  9. st.getParameter() 和request.getAttribute() 区别 https://terryjs.iteye.com/blog/1317610
  10. windows下利用pybind11生成pyd库
  11. DBV命令行工具检测坏块
  12. Word转PDF后,排版错乱怎么办?
  13. 不同方式实现IP访问限制
  14. 安卓音乐播放器app开发(一)---功能分析及启动页的制作
  15. 三种对等式网络 文件服务器,对等式端到端网络的资源共享机制的特点
  16. DMHS DM8到Oracle12c PDB双向同步(大小不敏感+落地文件转发)
  17. 3. iphone项目如何联机调试和发布程序(99$)
  18. Au 音频效果参考:滤波与均衡
  19. 亲身使用分享:华为Mate30EPro和华为mate30区别-哪个好
  20. 腾讯,百度,字节跳动,搜狗,追一,哔哩哔哩,小米,华为,华为云,360企业安全,鲸航科技,平安科技,依图-------跪经

热门文章

  1. 能够抑制网络风暴的是?
  2. 线程:方法join的使用
  3. 《我在51CTO微职位学软考——奋发之路》
  4. UI开发模式-容器模式
  5. vscode使用汇总——常用插件、常用配置、常用快捷键
  6. 数据库事务及锁机制介绍
  7. 两次服务器灾难事故的反思
  8. Node.js webpack中导入vue的三种方法
  9. Python用selenium简单方法处理完子窗口切换到主窗口
  10. contos 安装vim自动补全插件 YCM YouCompleteMe