我遇到了补丁问题(版本2.6),并想知道是否有其他人遇到过这个问题:
系统A:带FC21的虚拟机(VBOX)。 diff == 3.3,patch == 2.7.5
为ixgbe驱动程序生成Linux内核补丁(更新驱动程序以支持新硬件)
Orig目录:linux / drivers / net / ethernet / intel / ixgbe
更新目录:/home/patches/ixgbe-4.0.3
通过diff -Naur <orig> <update> > file.patch
生成的补丁文件
文件看起来不错。有更改的文件以及&#34; new&#34;文件被添加到Orig。
使用BuildRoot(2015.08.01)及其修补设置,补丁执行,并且运行正常,驱动程序构建和映像启动。
系统B:使用RHEL6的Corp服务器。 diff == 2.8.1,patch == 2.6
将整个Buildroot设置复制到此计算机。修改目录路径,构建运行正常,直到修补程序。输出显示已更改的文件已更新,但任何&#34; new&#34;文件最终在&#34;更新目录&#34;路径,在这种环境中不存在。验证了/ home / xx / yy / zz目录是否存在,该补丁是根据补丁文件中的文件名创建的。为什么????
系统A工作得很好,它提供了新的&#34;文件在正确的内核目录中。
之前有人见过这种奇怪的行为吗?我怎么能:
非常感谢任何帮助。 。 。 斯蒂芬
答案 0 :(得分:0)
TL; DR:生成补丁,确保原始目录和修改后的目录是并排的。
补丁将与-p1一起应用,即路径的第一个组件将被剥离。因此,在原始方面,您将drivers/net/ethernet/intel/ixgbe/<filename>
,但在修补过的一方,您将拥有home/patches/igbe/<filename>
。现在看起来补丁2.6将采用补丁侧的路径,这显然不存在。我真的很惊讶它确实适用于以后的补丁版本。
生成补丁的规范方法是复制完整的原始源目录,即整个linux目录,并将其与补丁目录并排放置。然后从上面的目录中执行diff -Naur linux-orig linux-patched
。或者,更好的是,从git控制的linux目录开始,进行修改,提交更改,并执行git format-patch -1 -o <path-to-buildroot-patches>
。