Linux内核安装补丁

本文通过自身实践,介绍了在Linux下为内核打补丁的简单实例。



Linux下安装高版本补丁到低版本的步骤大体分为以下几步:

1、选取补丁

2、构建补丁

3、编译并处理编译错误

4、安装并验证补丁


环境

本文为Ubuntu 14.04版本,64位系统。

内核版本4.1.38。


内核安装补丁过程

1、选取补丁

补丁出处:

       理论上讲,各大开源网站(如githubgoogleandroid源码目录)的每次commit记录都可以作为补丁添加到我们的内核中,但是由于开源网站上分支众多、每个分支的代码更改次数也相当多,工作量巨大,所以我们需要针对性的寻找我们感兴趣并且比较重要的补丁。

       

选取原则:

一般来说,打补丁的困难程度取决于以下因素:

-补丁提交时间是否与我们的内核版本相近程度

-改动的文件数量

-改动的文件是否跨越了较多的模块

-涉及的模块改动是否频繁

-代码更改行数


本文选取补丁名称:“ipc/mqueue: Implement lockless pipelined wakeups”和“sched: Implement lockless wake-queues”

这两个补丁都是Linux4.2的重大补丁,涉及到了进程的唤醒切换,以提高系统的性能。


补丁“ipc/mqueue: Implement lockless pipelined wakeups”如下:

Linux内核安装补丁_第1张图片


补丁“sched: Implement lockless wake-queues”如下:

Linux内核安装补丁_第2张图片


2、构建补丁

选取好补丁之后,需要根据两个patch对补丁的代码进行分析,找出其他补丁中与之相关的代码。

手动挑选出相关代码之后,将相关代码复制到源码相关处,因为版本和分支不同的原因,多数情况下文件的行数是无

法对应的,所以需要手工查找对应代码,对Linux的源码进行更改,完成系统的升级。


根据补丁“ipc/mqueue: Implement lockless pipelined wakeups”完成对mqueue.c源代码的更改。

Linux内核安装补丁_第3张图片


根据补丁“sched: Implement lockless wake-queues”完成对sched.h源代码的更改

Linux内核安装补丁_第4张图片



根据补丁“sched: Implement lockless wake-queues”完成对core.c源代码的更改

Linux内核安装补丁_第5张图片



3、编译并处理编译错误

生成新的内核源码后对新的内核源码进行编译

Linux内核安装补丁_第6张图片


使用#make modules和#make modules_install,对模块进行编译,并安装到标准的模块目录中。


对新的内核源码进行编译后的安装

Linux内核安装补丁_第7张图片


4、安装并验证补丁

完成新内核源码的编译后,安装好新的内核之后进入对补丁的验证阶段。


验证补丁确实生效之后开始进行性能测试:我们选用sysbench对cpu性能进行压力测试。

Sysbench简介:

     sysbench是一款开源的多线程性能测试工具,可以执行CPU/内存/线程/IO/数据库等方面的性能测试SysBench运行指定数目的线程并行处理请求。测试CPU性能时,是SysBench中最简单的测试模式。测试内容为素数计算-test=cpu,参数指定测试内容为cpu--cpu-max-primes=20000 run指定计算到的最大素数。每个线程并发执行直到有一个线程达到最大素数或超过指定的总时间


安装补丁之前,CPU性能测试结果如下:

Linux内核安装补丁_第8张图片


安装补丁之后,CPU性能测试结果如下:

Linux内核安装补丁_第9张图片


对比安装补丁前后的对比可以发现明显的性能提升。


你可能感兴趣的:(Linux)