修改完Linux内核后,如何发布自己的补丁文件【图解】
来源:互联网 发布:轻淘客cms网站 编辑:程序博客网 时间:2024/05/21 06:14
作者:chenjieb520
笔者最近闲来无事,就学习了一下Linux内核的补丁制作,通过网上查找了一些资料,现在就将这些资料整理如下,供大家参考。
在补丁制作的过程中,需要使用到如下两个命令,现在就这两个命令进行简单地介绍一下:
(1)、使用diff和pathch的命令,简单介绍如下:
1.diff的使用
diff可以完成比较功能,生成补丁文件
格式::diff[option] oldfile newfile
常用的option选项有:
-r 对目录进行递归处理
-u 输出统一格式,diff有"传统"和"统一"两种格式,现在一般使用"统一"格式,比较而言,统一格式生成的文件大,但包含了更多的信息,有利于阅读与定位
-N 补丁中包含整个新文件
-a 补丁中包含二进制文件
缺省时,diff向标准输出打印,所以一般都重定向到文件并以patch为后缀,也就是所谓的补丁文件
2.patch的使用
把补丁运用到原代码上的命令为patch
patch [-b] suffix <patchfile
(2)、制作补丁文件
首先修改源文件,主要是这三处:
1、添加一个声明int ctx
2、ctx在进程一诞生就等于0
3、每次调用schedule时,就ctx加1
以上就是我们修改的内核文件的内容。现在就这些内容制作成补丁文件
生成补丁文件:
chenjieb@ubuntu:~/linux/sch$diff -uNr linux-2.6.28.6 linux-2.6.28.7 >linux- 2.6.28.7.patch
下面我们查看一下补丁文件的内容:
diff -uNr linux-2.6.28.6/include/linux/sched.h linux-2.6.28.7/include/linux/sched.h --- linux-2.6.28.6/include/linux/sched.h2009-04-30 15:36:39.000000000 +0800 +++ linux-2.6.28.7/include/linux/sched.h2011-04-05 22:50:04.969475947 +0800 @@ -1072,6 +1072,7 @@ }; struct task_struct { +int ctx; //process count add by chen jiebin volatile long state;/* -1 unrunnable, 0 runnable, >0 stopped */ void *stack; atomic_t usage; diff -uNr linux-2.6.28.6/kernel/fork.c linux-2.6.28.7/kernel/fork.c --- linux-2.6.28.6/kernel/fork.c2009-04-30 15:36:40.000000000 +0800 +++ linux-2.6.28.7/kernel/fork.c2011-04-05 22:53:14.465478510 +0800 @@ -1435,6 +1435,7 @@ } else { nr = PTR_ERR(p); } +p->ctx=0; //set count=0 return nr; }diff -uNr linux-2.6.28.6/kernel/sched.c linux-2.6.28.7/kernel/sched.c --- linux-2.6.28.6/kernel/sched.c2009-04-30 15:36:40.000000000 +0800 +++ linux-2.6.28.7/kernel/sched.c2011-04-05 22:55:33.697473421 +0800 @@ -4489,7 +4489,7 @@ rq->nr_switches++; rq->curr = next; ++*switch_count; - +next->ctx++; context_switch(rq, prev, next); /* unlocks the rq */ /*
至此补丁文件制作完毕,希望这个教程能够对大家有用,感谢大家的支持!
- 修改完Linux内核后,如何发布自己的补丁文件【图解】
- SUSE发布kGraft Linux内核动态补丁
- linux内核的syslets补丁
- Linux内核文件的查找和修改
- 如何提交内核补丁
- linux内核升级后如何删除旧的内核
- linux内核升级后如何删除旧的内核
- 谈谈Linux打补丁的原理以及如何判别打补丁的错误 --- 从补丁学内核
- 谈谈Linux打补丁的原理以及如何判别打补丁的错误 --- 从补丁学内核
- 谈谈Linux打补丁的原理以及如何判别打补丁的错误 --- 从补丁学内核
- 谈谈Linux打补丁的原理以及如何判别打补丁的错误 --- 从补丁学内核
- 谈谈Linux打补丁的原理以及如何判别打补丁的错误 --- 从补丁学内核
- linux内核实时补丁
- linux 内核热补丁
- Linux 内核补丁测试
- Linux内核补丁升级
- Linux内核安装补丁
- linux 内核修改分辨率后出现的WARNING解决方法
- 黑马程序员--内部类与异常
- 单片机c51例程——不断更新中。。。
- 蓝光刻录的几点体会
- 动态生成控件并定位
- svm经典论文
- 修改完Linux内核后,如何发布自己的补丁文件【图解】
- 反向代理
- AC自动机
- C# datagridviewcomboxcolumn数据的绑定与值的显示
- Effective C++ 慎用private继承
- Like 运算符的用法
- twilio开发
- Unable to resolve target 'android-5'
- POJ1724 ROADS [最短路变形 二维dp+spfa]