LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 2629|回复: 8

用KERNEL——PATCH升级KERNEL

[复制链接]
发表于 2002-8-14 20:59:58 | 显示全部楼层 |阅读模式
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
用KERNEL——PATCH升级KERNEL
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

无名指 兄写的大作


在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 源码目录

可以使用这种方式来安装任何补丁,而不用管它的文件名了。
哇总算写完了,这是我今天和补丁作斗争的战果!!拿出来希望能对大家有点帮助!!
发表于 2002-8-14 21:22:34 | 显示全部楼层
精品!
企鹅在于创造,没有创造,就不如用windows了。
发表于 2002-8-14 21:41:08 | 显示全部楼层
是呀,如果想用现成的,还不如去用windows!
发表于 2002-8-15 11:30:37 | 显示全部楼层
我还没用过PATCH.
 楼主| 发表于 2002-8-15 11:55:03 | 显示全部楼层
有宽带的还是直接下载完整的KERNEL——SOURCE吧,省却这个麻烦
发表于 2003-8-9 10:22:19 | 显示全部楼层
怎么才知道补丁正常装上了?
发表于 2004-3-22 21:35:08 | 显示全部楼层
我的显示done
但是启动的时候显示任然是2。6。3的内核,done
后要不要在make 、、、?
发表于 2004-3-22 21:47:31 | 显示全部楼层
最初由 deng805 发表
我的显示done
但是启动的时候显示任然是2。6。3的内核,done
后要不要在make 、、、?


当然需要重新编译,因为patch是源码。
发表于 2004-4-10 23:25:45 | 显示全部楼层
I KNOW THANK YOU
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表