2010-11-17 92 views
0

我有一个严重的问题。
我有我的手什么:如何修补Linux内核?

  • Linux内核2.6.29采用Android Eclair的补丁和一些板特有的补丁(如.patch文件)。
  • 带有Android Froyo补丁的Linux Kernel 2.6.32。

我想要什么来实现的:

  • 我想将板特有的补丁与Android Froyo的补丁合并到我的Linux内核2.6.32。

我无法想出如何做到这一点。我试着直接在2.6.32内核上应用特定于主板的修补程序,但失败后出现了很多错误。

请引导我一些有价值的指针。

感谢,

+0

这可能是因为你只是做错了(有没有办法肯定地说没有错误),但错误也很可能是因为修补程序*根本不适用*并需要人工专业知识 - 在这种情况下,您的选择是读取修补程序,研究内核并找出如何手动应用这些修改,或者找到一种新的方法。 – hobbs 2010-11-17 12:30:57

+0

开始寻找的一个好地方是在内核更新日志上查找是否已经在2.6.29和2.6.32之间的Linux树中应用了一些或所有的修补程序*。 – hobbs 2010-11-17 12:31:55

+0

嗨hoobs,我是Linux的这个领域的新手,我的意思是修补,所以我知道你告诉内核changelogs。从哪里可以得到? – Sen 2010-11-17 12:35:21

回答

2

在没有看到具体的错误,这很难确定。

补丁会为每个文件/补丁提供一个“.rej”文件,它会向您显示它正在尝试执行什么以及它发现了什么,从而导致失败。它通常会告诉你它创建了这些文件,所以你可以修复它们。

你可能会遇到的是更原始的东西 - 在该补丁甚至找不到正确的文件。

如果最常见的原因是路径在补丁文件中的铺设方式与您在运行它的方式不同。 (我会试着举个例子)。

如果你看一下每个文件中的每个文件条目被修补,就会有一个“源”和“目的地”的文件名,如:

/original/src/drivers/mydriver.c /目的地/ src /司机/ mydriver.c

这将意味着 - 例如说你的项目是在一个名为“项目”的目录。您当前的工作目录将是“项目”,而你修补文件将是:

/project/src/drivers/mydriver.c

这个补丁会工作。

比方说,例如,您运行相同的补丁,但当前的工作目录是:

/项目/ src目录

当你运行补丁,它会寻找一个文件所谓:

/project/src/src/drivers/mydriver.c

没有任何工作。

有两种补救措施:

  1. 确保您从正确的目录级别上运行的补丁。

  2. 在修补程序中使用“-p {num}”标志 - 它实际上告诉它在修补程序文件的每个文件名的开头忽略大量目录。

你也可以张贴一些你得到更多的帮助错误的...

+0

感谢Brad在我重新开始此活动后会不断更新。 – Sen 2010-11-18 08:27:52