修改完Linux内核后,如何发布自己的补丁文件【图解】

作者: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.h	2009-04-30 15:36:39.000000000 +0800 
+++ linux-2.6.28.7/include/linux/sched.h	2011-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.c	2009-04-30 15:36:40.000000000 +0800 
+++ linux-2.6.28.7/kernel/fork.c	2011-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.c	2009-04-30 15:36:40.000000000 +0800 
+++ linux-2.6.28.7/kernel/sched.c	2011-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 */ 
 		/* 


至此补丁文件制作完毕,希望这个教程能够对大家有用,感谢大家的支持!







评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值