原来给内核打过补丁,都是跟着网上找来的资料一步一步做,结果今天打2.6.32.9的补丁出了问题。现在把学到的东西写下来,供大家参考。
我都是从kernel.org下载内核的。
首先要明白内核发布一次稳定版,同时发布两个补丁的,一个是patch-2.6.x.y.bz2,一个是patch-2.6.x.y1-y2.bz2。
其中patch-2.6.x.y.bz2 通过点击“[Patch]“直接下载,或者点击”[View Patch]“,进入新的页面,然后点击上面的“/pub/linux/kernel/v2.6/patch-2.6.x.y.bz2“获得。
这个补丁是用于从 2.6.x-1 到 2.6.x.y 的升级,如 2.6.31 到2.6.32.9,是跨次版本(同为2.6内核)的升级。属于较重大升级(我自己的理解)。
在 linux-2.6.31 目录下,patch -p1 < patch-2.6.32.9。(我不知道能不能用于2.6.31.12,没作实验,希望谁能补充一下。 )
这个不能用于同为 2.6.x.x 的内核。也就是说 patch-2.6.32.9 不能用于 2.6.32.8的源码,否则会得到“Reversed (or previously applied) patch detected! Assume -R? [n]“错误信息。(我就是不明所以,结果浪费了时间)
如果实在想在2.6.32.8里面用patch-2.6.32.9,那你要有patch-2.6.32.8。首先,在 linux-2.6.32.8 目录下运行 patch -p1 -R < patch-2.6.32.8,把源码转为 2.6.31,然后再 patch -p1 < patch-2.6.32.9 打新补丁。
上面的有点罗嗦,可以使用下面的直接从2.6.32.8升级到2.6.32.9。
patch-2.6.x.y1-y2.bz2通过点击“[View Inc.] ”进入新页面,然后点击“/pub/linux/kernel/v2.6/incr/patch-2.6.x.y1-y2.bz2“获得。
以从2.6.32.8升级到2.6.32.9为例,
在 linux-2.6.32.8 目录下,直接 patch -p1 < patch-2.6.32.9,然后把 linux-2.6.32.8 目录改为 linux-2.6.32.9。
可以参考 http://www.diybl.com/course/6_sy ... 2008826/137710.html ,里面说的比这个详细,我就是从中学来的。
=========================================================================================
今天有2.6.33的内核放出,下载了patch,可以确定,不能直接用于2.6.32.9的内核源码。应该是可以通过patch的option来解决,等弄明来了再写上来。
==========================================================================================
在patch命令中加入-R选项,能够顺利的打补丁,不会有任何提示错误。但是下载了一个2.6.33的源码,比较从2.6.32.9用2.6.33patch后的源码,有很多不一样的地方。看来是不行的。
不知道应该怎么作,是否有一种好办法?
以上如有不对的地方,请指正,谢谢
我都是从kernel.org下载内核的。
首先要明白内核发布一次稳定版,同时发布两个补丁的,一个是patch-2.6.x.y.bz2,一个是patch-2.6.x.y1-y2.bz2。
其中patch-2.6.x.y.bz2 通过点击“[Patch]“直接下载,或者点击”[View Patch]“,进入新的页面,然后点击上面的“/pub/linux/kernel/v2.6/patch-2.6.x.y.bz2“获得。
这个补丁是用于从 2.6.x-1 到 2.6.x.y 的升级,如 2.6.31 到2.6.32.9,是跨次版本(同为2.6内核)的升级。属于较重大升级(我自己的理解)。
在 linux-2.6.31 目录下,patch -p1 < patch-2.6.32.9。(我不知道能不能用于2.6.31.12,没作实验,希望谁能补充一下。 )
这个不能用于同为 2.6.x.x 的内核。也就是说 patch-2.6.32.9 不能用于 2.6.32.8的源码,否则会得到“Reversed (or previously applied) patch detected! Assume -R? [n]“错误信息。(我就是不明所以,结果浪费了时间)
如果实在想在2.6.32.8里面用patch-2.6.32.9,那你要有patch-2.6.32.8。首先,在 linux-2.6.32.8 目录下运行 patch -p1 -R < patch-2.6.32.8,把源码转为 2.6.31,然后再 patch -p1 < patch-2.6.32.9 打新补丁。
上面的有点罗嗦,可以使用下面的直接从2.6.32.8升级到2.6.32.9。
patch-2.6.x.y1-y2.bz2通过点击“[View Inc.] ”进入新页面,然后点击“/pub/linux/kernel/v2.6/incr/patch-2.6.x.y1-y2.bz2“获得。
以从2.6.32.8升级到2.6.32.9为例,
在 linux-2.6.32.8 目录下,直接 patch -p1 < patch-2.6.32.9,然后把 linux-2.6.32.8 目录改为 linux-2.6.32.9。
可以参考 http://www.diybl.com/course/6_sy ... 2008826/137710.html ,里面说的比这个详细,我就是从中学来的。
=========================================================================================
今天有2.6.33的内核放出,下载了patch,可以确定,不能直接用于2.6.32.9的内核源码。应该是可以通过patch的option来解决,等弄明来了再写上来。
==========================================================================================
在patch命令中加入-R选项,能够顺利的打补丁,不会有任何提示错误。但是下载了一个2.6.33的源码,比较从2.6.32.9用2.6.33patch后的源码,有很多不一样的地方。看来是不行的。
不知道应该怎么作,是否有一种好办法?
以上如有不对的地方,请指正,谢谢