Chinaunix首页 | 论坛 | 博客
  • 博客访问: 19023
  • 博文数量: 9
  • 博客积分: 310
  • 博客等级: 一等列兵
  • 技术积分: 95
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-18 14:56
文章分类

全部博文(9)

文章存档

2011年(1)

2009年(7)

2008年(1)

我的朋友
最近访客

分类:

2009-06-26 10:12:39

在kernel源码的README中有说明,如果你下载的PATCH是形如patch-2.4.X.gz的话使用gzip -cd patch-2.4.x.gz|patch -p0 如果是BZ格式的压缩包则使用bzip2 -dc patch-2.4.x.bz|patch -p0

但这样使用的话简直就是恶梦,你需要一个个的去替换文件,一般使用脚本来PATCH。这里假设你的源码目录为/src/linux,补丁下载到/src目录下,PATCH的步骤如下:

cd /src

linux/scripts/patch-kernel linux

脚本会自动找到补丁并应用,这里我解释一下:

linux/scripts/patch-kernel是个脚本文件,linux则是你的源码目录,如果要使这个命令完整的话后面还应该写上补丁所在的目录,这里因为补丁在当前目录下所以就省了。在补丁目录后面还可写上所要使用的补丁的最高版本号,比如你的源代码为2.4.10,而你下载了从2.4.10到2.4.20的所有软件包,并都放在同一目录下。在patch时你只想升级到2.4.19,不想使用2.4.20。命令格式就该象下面这个样子:

源码目录/scripts/patch-kernel 源码目录 补丁所在目录 2.4.19

这样的话版本号到2.4.19为止的所有补丁都会被使用,而2.4.20则被忽略不会被patch上。

如果不写上最高的版本号则目录下的所有补丁都会被使用。哇!写的手软,不过还没完,为了让大家不会再象我一样为打补丁而死大量的脑细胞,我接着写!!

上面的格式只能patch标准的补丁,而有时kernel会发布些pre或ac补丁,一般格式如下:

patch-2.4.x-pre*.gz

patch-2.4.x-ac*.gz

patch-2.4.x-pre*-ac*.gz

patch-2.4.x-pre*-acl*.gz

这时就要加参数才能patch了,对于ac补丁要这样使用

linux/scripts/patch-kernel linux -ac*

*为0到9的数字,比如patch-2.4.5-ac3.gz 这时的参数就为-ac3,也就是说参数同版本号的最后一个域相同。但有个例外象patch-2.4.x-pre*.gz这样的补丁就不能这样使用,我就是被这样的补丁搞的头大。最后分析脚本才发现,它居然没为pre设置参数,不知这是不是疏乎。这样的话你可以自己改脚本,不过我偷了点懒没改脚本,而是改了补丁的文件名:

mv patch-2.4.x-pre1.gz patch-2.4.x.gz

这样的话就可以使用了,而且并没有出现问题,可以正常编译。对于-pre*-ac*这样的补丁也是一样操作把其中的pre*删除再使用-ac*参数patch就可以了。

当然你也可以直接使用patch命令来安装,为了不回答那么多的问题,就不能使用patch -p0而要把命令改为如下形式:



gzip -cd patch-2.4.x-pre2-ac1.gz|patch -p1 -s -N -E -d 源码目录
阅读(527) | 评论(0) | 转发(0) |
0

上一篇:patch 详解

下一篇:Linux 内核编译

给主人留下些什么吧!~~