+ -
当前位置:首页 → 问答吧 → 我要把内核从2.6.28.7升级到29.2,怎么使用patch文件?

我要把内核从2.6.28.7升级到29.2,怎么使用patch文件?

时间:2009-05-04

来源:互联网

下载了patch-2.6.28.(8,9,10),patch-2.6.29(.1,.2)这些文件,
依次patch,发现2.6.28.8时就有问题。
我先把patch文件解压,然后patch -Np1 -i patch-file
最后,变异的时候报错,应该是省级的不对。

作者: zpcat   发布时间: 2009-05-04

我从官网直接下在2.6.29.2后编译没有问题,但是用patch升级就是由问题?
大家是用这个命令吗?patch -Np1 -i patch.file
我从2.6.28.7一直升到2.6.29.2

作者: zpcat   发布时间: 2009-05-05

把解压后的内核目录和补丁文件放到同一级的目录下,然后进入内核目录执行
patch -Np1 -i ../patch.file

作者: ext3   发布时间: 2009-05-05

引用:
作者: ext3
把解压后的内核目录和补丁文件放到同一级的目录下,然后进入内核目录执行
patch -Np1 -i ../patch.file
我是这样的啊!从2.6.28.7 升级到2.6.28.8应该是用patch-2.6.28.8这个文件对吧!
不信你可以打这个补丁试试不行啊!(我已经解压了 )

作者: zpcat   发布时间: 2009-05-05

干吗不直接下载29.2的源码?

作者: smqt   发布时间: 2009-06-07

最后,还是直接下载的源码,不过使用patch文件升级源码包没有成功。

作者: zpcat   发布时间: 2009-06-07

引用:
作者: zpcat
我是这样的啊!从2.6.28.7 升级到2.6.28.8应该是用patch-2.6.28.8这个文件对吧!
不信你可以打这个补丁试试不行啊!(我已经解压了 )
不对,如果是从2.6.28.7升级到2.6.28.8应该下载如下两个文件:
patch-2.6.28.7.bz2
patch-2.6.28.8.bz2

简单的讲,必须将先将源码先恢复到 2.6.28,然后再应用patch-2.6.28.8,得到2.6.28.8的源码(假设你下载的是bz2格式):

切换到2.6.28.7内核源代码目录
$ cd linux-2.6.28.7

反向应用2.6.28.7补丁,以便恢复到2.6.28源码
$ bzcat /path/to/patch-2.6.28.7.bz2 | patch -p1 -R

# 应用新的2.6.28.8补丁
$ bzcat /path/to/patch-2.6.28.8.bz2 | patch -p1

重新命名内核源代码目录
$ cd ..
$ mv linux-2.6.28.7 linux-2.6.28.8

作者: yankaiqian   发布时间: 2009-10-28

好!有空试试!

作者: zpcat   发布时间: 2009-10-29

引用:
作者: yankaiqian
不对,如果是从2.6.28.7升级到2.6.28.8应该下载如下两个文件:
patch-2.6.28.7.bz2
patch-2.6.28.8.bz2

简单的讲,必须将先将源码先恢复到 2.6.28,然后再应用patch-2.6.28.8,得到2.6.28.8的源码(假设你下载的是bz2格式):

切换到2.6.28.7内核源代码目录
$ cd linux-2.6.28.7

反向应用2.6.28.7补丁,以便恢复到2.6.28源码
$ bzcat /path/to/patch-2.6.28.7.bz2 | patch -p1 -R

# 应用新的2.6.28.8补丁
$ bzcat /path/to/patch-2.6.28.8.bz2 | patch -p1

重新命名内核源代码目录
$ cd ..
$ mv linux-2.6.28.7 linux-2.6.28.8
不用这麽覆杂

到 http://www.kernel.org/pub/linux/kernel/v2.6/incr/

下个 .7 到 .8 的 patch 来补丁就可以了

patch-2.6.28.7-8.bz2

作者: d00m3d   发布时间: 2009-10-30

谢谢~
顺便问下,假如我有 2.6.24.4 的源码,可以通过patch的方式更新到 2.6.31.5 吗?
是不是这样版本跨度较大的一定要下载完整的源码才可以呢?

作者: yankaiqian   发布时间: 2009-10-31

当然可以通过 patch 的方式来更新,不过你要先将 2.26.24.4 还完成 2.26.24 然後逐级升级,即是说你需要下列补丁:

代码:
patch-2.6.24.4.bz2 24-Mar-2008 18:53 55K
patch-2.6.25.bz2 17-Apr-2008 03:15 9.0M
patch-2.6.26.bz2 13-Jul-2008 22:44 7.3M
patch-2.6.27.bz2 10-Oct-2008 00:00 14M
patch-2.6.28.bz2 24-Dec-2008 23:45 9.5M
patch-2.6.29.bz2 23-Mar-2009 23:30 12M
patch-2.6.30.bz2 10-Jun-2009 03:24 11M
patch-2.6.31.bz2 09-Sep-2009 22:35 10M
patch-2.6.31.5.bz2 22-Oct-2009 23:59 107K
~73M

可是最新的 tarball 也才 59M
linux-2.6.31.5.tar.bz2 22-Oct-2009 23:59 59M

这划算否?

要下话不如下这两个
linux-2.6.31.tar.bz2 09-Sep-2009 22:34 59M
patch-2.6.31.5.bz2 22-Oct-2009 23:59 107K

方便日後升级

作者: d00m3d   发布时间: 2009-10-31

明白了,非常感谢如此细心的介绍!

我开始还误以为只要下载下面这几个就可以:
代码:
patch-2.6.24.4.bz2
patch-2.6.31.bz2
patch-2.6.31.5.bz2
结果从2.6.24到2.6.31打补丁过程中出现一堆错误……

作者: yankaiqian   发布时间: 2009-10-31