【问题标题】:Issue with Linux Patch: directory paths not enforcedLinux 补丁问题:未强制执行目录路径
【发布时间】:2016-01-21 16:42:57
【问题描述】:

我遇到了补丁(2.6 版)的问题,想知道是否有其他人遇到过这个问题:
系统 A:带有 FC21 的虚拟机 (VBOX)。差异 == 3.3,补丁 == 2.7.5
为 ixgbe 驱动程序生成 Linux 内核补丁(更新驱动程序以支持新硬件)
原始目录:linux/drivers/net/ethernet/intel/ixgbe
更新目录:/home/patches/ixgbe-4.0.3
通过diff -Naur <orig> <update> > file.patch生成的补丁文件
文件看起来不错。有更改的文件以及“新”文件被添加到 Orig。
使用 BuildRoot (2015.08.01) 及其补丁设置,补丁可以执行,并且工作正常,驱动程序构建和映像启动。
系统 B:使用 RHEL6 的公司服务器。差异 == 2.8.1,补丁 == 2.6
将整个 Buildroot 设置复制到这台机器上。修改目录路径,构建运行正常,直到补丁。输出显示更改的文件可以正常更新,但任何“新”文件最终都位于“更新目录”路径中,该路径在此环境中不存在。验证 /home/xx/yy/zz 目录确实存在,该补丁是从补丁文件中的文件名创建的。为什么???
系统 A 工作得很好,它将“新”文件放在正确的内核目录中。

以前有人见过这种奇怪的行为吗?我该怎么做:

  1. 告诉 diff 使用 orig 目录?
  2. 告诉补丁使用orig目录? (通过脚本构建根句柄修补)

任何帮助将不胜感激。 . . 斯蒂芬

【问题讨论】:

    标签: linux linux-kernel diff patch buildroot


    【解决方案1】:

    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>

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-02-01
      • 2020-10-02
      • 2014-05-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多