内核开发指南 如何为内核打补丁

目的
本文是个简单的指导文件。教你如何为自己的内核打补丁。这是内核开发中最基本的工作。
patch(补丁)就是存放着不同版本之间差异的文件。通过打补丁的方法升级源代码,可以不用下载整个源代码
详细的打补丁的方法可以查看内核/Document/applying-patchs。txt
要求
你应该已经有了一个可以编译的内核。如果没有。可以到www.kernel.org 下载。本文不是教你如何编译内核
内核应该是从kernelorg 下载的。第三方的内核(比如redhat)可能打补丁的时候会出问题。请参考特别发行版自己的打补丁文章。
原文地址:http://blog.csdn.net/hide1713/archive/2007/12/16/1941614.aspx

场景1
现在我的/usr/src/liunx-2.6.22.9 中存放了内核的源代码。我到了www.kernel.org上,看到最新的stable版本是
2.6.23.11。 那么我如何升级呢?

首先,2.6.x.x这类版本号叫stable版。是经过测试证明稳定的。一般用户只都是用这个版本。其他还有rc,mm版本。这里先不讨论。2.6.x这个种3个数的叫base stable版。4位数的版本都是在base stable上面打补丁得来的。

所以总得步骤是  2.6.22.9先要降级到2.6.22 然后升级到2.6.23.再升级到2.6.23.9
具体做法如下。

1.下载patch-2.6.22.9.bz2。把它放到/usr/src/目录里面
接下来
cd  liunx-2.6.22.9
bzcat ../patch-2.6.22.9.bz2|patch -p1 -R #使用R命令意思是取消补丁。这样我们就把22.9 降到 22

2.下载patch-2.6.23.gz。把它放到/usr/src/目录里面
cd  liunx-2.6.22.9
zcat ../patch-2.6.23.gz|patch -p1 #这样就升级到了2.6.23

3.下载patch-2.6.23.11.bz2。把它放到/usr/src/目录里面
接下来
cd  liunx-2.6.22.9
bzcat ../patch-2.6.23.11.bz2|patch -p1 # 这样就升级到了2.6.23.11 这是现在stable的最新版。
最后
cd..
mv linux-2.6.22.9 linux-2.6.23.11#改为正确目录名
ln -s linux-2.6.23.11 linux #重新建立链接


场景2

如果我现在要使2.6.23.11升级到2.6.23.12. 我应该先把2.6.23.11 回退成2.6.23 然后再打 2.6.23.12的补丁
假设我已经在内核的目录中。补丁放在上层目录。
bzcat ../patch-2.6.23.11.bz2|patch -p1 -R #回退到2.6.23
bzcat ../patch-2.6.23.12.bz2|patch -p1    #打到2.6.23.12

总的来说就是这样。正确的输出应该全都像下面这样
patching file include/net/sock.h
patching file include/net/tcp.h
patching file include/scsi/scsi_device.h
patching file include/xen/interface/vcpu.h
patching file ipc/mqueue.c
patching file kernel/exit.c
patching file kernel/fork.c
patching file kernel/futex.c
patching file kernel/futex_compat.c
patching file kernel/hrtimer.c
patching file kernel/irq/manage.c
patching file kernel/lockdep.c
patching file kernel/params.c



如果出现rej文件。说明有的文件打补丁失败。请查看那个rej文件。看看是为什么导致失败。一般来说。可能是你的目录树有问题。如果还有问题。参考内核/Docmuent目录下面的补丁教程。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/hide1713/archive/2007/12/16/1941614.aspx

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值