当询问“要修补的文件”时应用补丁,我该怎么办?

当询问“要修补的文件”时应用补丁,我该怎么办?

我遇到系统冻结问题,我发现了这个讨论在 github 上,其中之一建议添加 5 个补丁:

在此输入图像描述

当我输入:

patch p1 < 0001-PM-autocomplet.patch

它问File to patch,我不知道该填什么。我该如何继续并应用这些补丁。 在此输入图像描述

答案1

要应用此形式的补丁:

diff --git a/include/linux/pm_qos.h b/include/linux/pm_qos.h
index 0f65d36..ff59753 100644
--- a/include/linux/pm_qos.h

patch -p1,必须满足几个条件。

  1. 您必须位于内核源代码树的顶级目录中。该-p1选项将从文件名中删除一个路径部分,以便a/include/linux/pm_qos.h将其视为include/linux/pm_qos.h.这是一个必须从当前工作目录解析的相对路径。

  2. 该文件include/linux/pm_qos.h必须存在于您尝试修补的内核版本中。

如果不满足 1 和 2,则将patch找不到要应用的文件,并以交互方式要求您提供路径名。

那么当然:

  1. include/linux/pm_qos.h文件必须与生成补丁的文件“足够相似”,否则补丁将无法应用。

相同的注释分别适用于补丁中提到的所有其他文件。

如果您尝试修补与生成补丁的版本不同的内核版本,恐怕您会“不知所措”;这需要对内核开发有一定程度的了解(取决于应用补丁所需的调整有多复杂)。

有时我们会发现内核文件刚刚被重命名;如果补丁中提到的文件被重命名为新名称,则补丁将相当干净地应用。另一方面,在最坏的情况下,您必须真正了解补丁在做什么(可能通过查看制作补丁的原始内核),然后在目标内核中从头开始实现相同的逻辑。 “中等难度”时,只需处理变量名、函数名、结构体成员名被重命名等问题即可;如果补丁仅遵循新名称,则该补丁将适用。

相关内容