在Centos上打Preempt-rt实时补丁
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实时补丁的更多相关文章
- 如何在Ubuntu/CentOS上安装Linux内核4.0
大家好,今天我们学习一下如何从Elrepo或者源代码来安装最新的Linux内核4.0.代号为‘Hurr durr I'm a sheep’的Linux内核4.0是目前为止最新的主干内核.它是稳定版3. ...
- 在Centos上安装RabbitMQ流程(转)
在Centos上安装RabbitMQ流程------------------------ 1. 需求 由于项目中要用到消息队列,经过ActiveMQ与RabbitMQ的比较,最终选择了RabbbitM ...
- CentOS上部署JAVA服务【转】
http://www.th7.cn/Program/java/201511/686437.shtml 本文将介绍如何在CentOS上运行Java Web服务,其中将包括如何搭建JAVA运行环境.如何开 ...
- 在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 ...
- 在CentOS上把PHP从5.4升级到5.5
在CentOS上把PHP从5.4升级到5.5 摘要:本文记录了在CentOS 6.3上,把PHP从5.4.8升级到5.5.13的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的一系列系统 ...
- 在CentOS上把MySQL从5.5升级到5.6
在CentOS上把MySQL从5.5升级到5.6 摘要:本文记录了在CentOS 6.3上,把MySQL从5.5.28升级到5.6.19的过程. 1. 概述 在我做的一个项目中,最近我对生产服务器上的 ...
- 在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. 概述 在我做的一个项目中,最近我对生产服 ...
- centos上安装supervisor来管理dotnetcore等应用程序
supervisor 介绍: 这是一款用python编写的进程管理工具,可以守护他管理的所有进程,防止异常退出,以及提供一个可视化的web界面来手动管理,打开关闭重启各种应用,界面如下: 关于在cen ...
- mysql集群基于docker 在centos上
新博客https://blog.koreyoshi.work/ mysql集群(PXC)基于docker 在centos上 常用设计方案 Replication(复制) 速度快 弱一致性 低价值 场景 ...
- Ingo Molnar 的实时补丁
一.简介 Ingo Molnar 的实时补丁是完全开源的,它采用的实时实现技术完全类似于Timesys Linux,而且中断线程化的代码是基于TimeSys Linux的中断线程化代码的.这些实时实现 ...
随机推荐
- 13 memcache服务检查
[root@cache01 scripts]# vim mem_check.sh #!/bin/bash count_mem=$(netstat -lntup|grep memcached|wc -l ...
- pl/sql 实例精解 03
1. 在Pl/sql 中使用 sql 1: /* 2: * 一个 pl/sql 语句块, 只是一个容器, 是表明一个整体的容器, 容器里可以放置多个sql语句 3: */ 4: 5: declar ...
- Android显示GIF动画(转载)
GifView 是一个为了解决android中现在没有直接显示gif的view,只能通过mediaplay来显示这个问题的项目,其用法和 ImageView一样,支持gif图片 使用方法: 1-把Gi ...
- JQ Ajax 上传文件
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- jsp有哪些内置对象?作用分别是什么?(至少三个)
jsp有哪些内置对象?作用分别是什么?(至少三个) 解答: 1)request表示HttpServletRequest对象.它包含了有关浏览器请求的信息,并且提供了几个用于获取cookie, head ...
- java 理解java的三大特性之封装
使用封装有三大好处: 1.良好的封装能够减少耦合. 2.类内部的结构可以自由修改. 3.可以对成员进行更精确的控制. 4.隐藏信息,实现细节. public class Wife { private ...
- Android将指定的.class打包到mainDex中
1️⃣ 我们分包的时候会遇到一个问题,因为加载和初始化的问题,如果某个类不在mainDex中,那么程序就会报错,java.lang.NoClassDefFoundError. 2️⃣ 在gradle中 ...
- TypeScript 接口(三)
TypeScript的核心原则之一是对值所具有的结构进行类型检查. 接口初始: interface objProperty { name: string } function printName(na ...
- 使用phpnow本地搭建Discuz!如何实现伪静态
用phpnow本地搭建Discuz!如何实现伪静态 因为phpnow本身就支持伪静态,那只要看下相关的设置是否正确,写个.htaccess的文件就可以了. 一.确认httpd.conf的设置 在xxx ...
- [原创]Nexus5 移植OneStep
OneStep 简介 https://github.com/SmartisanTech/android One Step 涉及的工程列表: frameworks_base (需要更改WindowMan ...