Chinaunix首页 | 论坛 | 博客
  • 博客访问: 183101
  • 博文数量: 34
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 374
  • 用 户 组: 普通用户
  • 注册时间: 2013-10-30 10:46
文章分类

全部博文(34)

文章存档

2018年(5)

2015年(13)

2014年(13)

2013年(3)

我的朋友

分类: 嵌入式

2015-10-08 17:25:10

http://blog.csdn.net/yinwei520/article/details/6105653

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

场景1
现在我的/usr/src/liunx-2.6.22.9 中存放了内核的源代码。我到了上,看到最新的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

阅读(2675) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~