1.系统centos6.5,内核2.6.31.6,补丁patch-2.6.31.6-rt19.bz2,以下方式获得:

wget https://www.kernel.org/pub/linux/kernel/v2.6/linux-2.6.31.6.tar.bz2
wget https://www.kernel.org/pub/linux/kernel/projects/rt/2.6.31/patch-2.6.31.6-rt19.bz2

2.解压内核文件并打补丁

tar xjvf linux-2.6.31.6.tar.bz2
cd linux-2.6.31.6
bzcat ../patch-2.6.31.6-rt19.bz2 | patch -p1

3.配置内核

make menuconfig

内核配置时主要修改以下几处:

(1)选择“Processor type and features -> High Resolution Timer Support"

(2)选择“Processor type and features -> Preemption Mode (Complete Preemption (Real-Time)) -> Complete Preemption (Real-Time)"

(3)不选 "Device Drivers -> Staging drivers"

参考:https://rt.wiki.kernel.org/index.php/RT_PREEMPT_HOWTO

4.编译

make

执行上述命令时遇到如下问题:

(1)“syscall_trace_enter”和“syscall_trace_leave”

/usr/src/linux-2.6.31.6/arch/x86/include/asm/ptrace.h::: note: previous declaration of 'syscall_trace_leave' was here
make[]: *** [arch/x86/kernel/ptrace.o] Error
make[]: *** [arch/x86/kernel] Error
make: *** [arch/x86] Error

解决方法如下:

将“/usr/src/linux-2.6.31.6/arch/x86/kernel/ptrace.c”和“/usr/src/linux-2.6.31.6/arch/x86/include/asm/ptrace.h”两文件中关于“syscall_trace_enter(struct pt_regs *)”和“syscall_trace_leave(struct pt_regs *)”函数的定义

统一起来,修改ptrace.h文件中两函数的定义如下:

extern asmregparm long syscall_trace_enter(struct pt_regs *);
extern asmregparm void syscall_trace_leave(struct pt_regs *);

(2)解决(1)后执行“make”,又出现如下错误:

gcc: error: elf_i386: No such file or directory
gcc: error: unrecognized command line option ‘-m’
make[]: *** [arch/x86/vdso/vdso32-int80.so.dbg] Error
make[]: *** [arch/x86/vdso] Error
make: *** [arch/x86] Error

应该是gcc版本问题,

gcc -v

显示

gcc version 4.8. (GCC) 

/usr/bin/gcc -v

显示

gcc version 4.4.  (Red Hat 4.4.-) (GCC)

通过执行

find / -name gcc

发现系统装了两个版本的gcc,默认执行4.8版本,而此版本gcc与2.6.31内核不兼容,出现上述问题,解决方法是将当前默认版本的gcc改为4.4.7版本(暂时)

mv /usr/local/bin/gcc /usr/local/bin/gcc4.8.0
ln -s /usr/bin/gcc /usr/local/bin/gcc

注:将/usr/bin/gcc链接为/usr/local/bin/gcc,这样在系统执行gcc(即/usr/local/bin/gcc)时会自动链接到/usr/bin/gcc

5.继续编译,可以顺利执行

make -j2

双核一起执行编译,加快速度

6.编译完成后,执行

make modules_install

此时/lib/modules目录下应该有/2.6.31.6-rt19这一目录,然后执行

mkinitrd /boot/initrd-2.6.31.6-rt19.img 2.6.31.6-rt19 --force

可在/boot目录下生成initrd-2.6.31.6-rt19.img及自动更新/boot/grub/grub.conf文件,可通过修改后者调整不同内核的启动顺序。

7.重启!

8.进入系统后找不到eth0.。。。并且系统中没有e1000e(Intel 82579LM 网卡的驱动)模块。

参考:http://www.cnblogs.com/QuLory/archive/2012/09/27/2706429.html

   https://patchwork.kernel.org/patch/1301031/

在Centos上打Preempt-rt实时补丁的更多相关文章

  1. 如何在Ubuntu/CentOS上安装Linux内核4.0

    大家好,今天我们学习一下如何从Elrepo或者源代码来安装最新的Linux内核4.0.代号为‘Hurr durr I'm a sheep’的Linux内核4.0是目前为止最新的主干内核.它是稳定版3. ...

  2. 在Centos上安装RabbitMQ流程(转)

    在Centos上安装RabbitMQ流程------------------------ 1. 需求 由于项目中要用到消息队列,经过ActiveMQ与RabbitMQ的比较,最终选择了RabbbitM ...

  3. CentOS上部署JAVA服务【转】

    http://www.th7.cn/Program/java/201511/686437.shtml 本文将介绍如何在CentOS上运行Java Web服务,其中将包括如何搭建JAVA运行环境.如何开 ...

  4. 在CentOS上把MySQL从5.5升级到5.6(转)

    http://www.th7.cn/db/mysql/201408/66064.shtml 在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5 ...

  5. 在CentOS上把PHP从5.4升级到5.5

    在CentOS上把PHP从5.4升级到5.5 摘要:本文记录了在CentOS 6.3上,把PHP从5.4.8升级到5.5.13的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的一系列系统 ...

  6. 在CentOS上把MySQL从5.5升级到5.6

    在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的 ...

  7. 在CentOS上把Nginx从1.2.4升级到1.6.0

    在CentOS上升级把Nginx从1.2.4升级到1.6.0 摘要:本文记录了在CentOS 6.3上,把Nginx从1.2.4升级到1.6.0的过程. 1. 概述 在我做的一个项目中,最近我对生产服 ...

  8. centos上安装supervisor来管理dotnetcore等应用程序

    supervisor 介绍: 这是一款用python编写的进程管理工具,可以守护他管理的所有进程,防止异常退出,以及提供一个可视化的web界面来手动管理,打开关闭重启各种应用,界面如下: 关于在cen ...

  9. mysql集群基于docker 在centos上

    新博客https://blog.koreyoshi.work/ mysql集群(PXC)基于docker 在centos上 常用设计方案 Replication(复制) 速度快 弱一致性 低价值 场景 ...

  10. Ingo Molnar 的实时补丁

    一.简介 Ingo Molnar 的实时补丁是完全开源的,它采用的实时实现技术完全类似于Timesys Linux,而且中断线程化的代码是基于TimeSys Linux的中断线程化代码的.这些实时实现 ...

随机推荐

  1. 删除Win10的自带应用

    显示 Get-AppxPackage | Select Name, PackageFullName 按关键字删除 Get-AppxPackage *camera* | Remove-AppxPacka ...

  2. IE下使用jquery失效的问题(转载)

    1,然后各种调试,最后发现:把ie把关了,再打开$.get().会调用,再第二次调用的用的时候发现又不行了.于是我推断是ie缓存的问题,把ie缓存清除后,果然可以了.但是客户不可能知道清理缓存.所以只 ...

  3. jQuery插件学习笔记

    近期在研究jQuery插件,插件编写的目的是给已经有的一系列方法或函数做一个封装,以便在其它地方反复使用,方便后期维护. JQuery除了提供一个简单.有效的方式进行管理元素以及脚本,它还还提供了例外 ...

  4. Oracle 计算两个时间的差值

    有两个日期数据START_DATE,END_DATE,欲得到这两个日期的时间差(以天,小时,分钟,秒,毫秒):天:ROUND(TO_NUMBER(END_DATE - START_DATE))小时:R ...

  5. 第一百五十八节,封装库--JavaScript,ajax说明

    封装库--JavaScript,ajax说明 封装库ajax()方法,ajax通讯方法,跨页面向动态页面发送或获取数据 /** ajax()方法,ajax通讯方法,跨页面向动态页面发送或获取数据 * ...

  6. ubuntu 自动清理/tmp目录

    在Ubuntu系统中,在/tmp文件夹里面的内容,每次开机都会被清空,如果不想让他自动清理的话,只需要更改rcS文件中的TMPTIME的值. 我们看如何来修改 sudo vi /etc/default ...

  7. (转)memcache、redis缓存

    memcache原理.内存模型: http://www.csdn.net/article/2016-03-16/2826609 redis原理: http://baike.baidu.com/link ...

  8. (转)TCP三次握手四次挥手

    转自:http://www.jellythink.com/archives/705 参考:http://blog.csdn.net/whuslei/article/details/6667471 [注 ...

  9. Linux服务器 大量的CLOSE_WAIT、TIME_WAIT解决办法

    http://itindex.net/detail/50213-%E6%9C%8D%E5%8A%A1%E5%99%A8-time_wait-close_wait http://itindex.net/ ...

  10. iOS 横向菜单

    MKHorizMenu 源码地址 现在想要实现以下效果,其中“选时间”这部分是一个NavigationBar,“日期”是横向的菜单,“电影时段”是TableView. 比较难实现的是横向菜单,因为没有 ...