# 契机
现在有一份论文的开源内核代码,但是没有Git修改记录。我们希望阅读并修改之,并且用Git追踪这些修改。
25/07/24追加:如果你正打算自己修改内核并产生patch文件,建议使用
git
提供的相关功能如git diff
、git format-patch
。单纯使用diff
和patch
已经过时,详见讨论.
# 文件夹描述约定
本文假设我们在名为LinearKF
的公共目录下进行操作,干净内核和修改过的内核放在这个目录下,分别是linux-5.15
和linux-srctree
,patch文件也放在该目录下。
|
|
最终的Git仓库会建立在linux-5.15中。
# 生成patch文件
# 获取原生Linux内核
首先从Linux代码仓库里下载一份干净的代码,可以从Github或其它linux.git镜像站:
注意只需要clone一个特定tag(--branch v5.15
)即可,可以使用下面的代码克隆不包含历史记录(--depth 1
)的单一分支(--single-branch
):
|
|
此时该仓库最后的Commit应该是Linus Torvalds打上的tag。
# 生成patch文件
回到公共目录,用下面代码^[https://www.kernel.org/doc/html/v4.17/process/submitting-patches.html]生成patch文件。
|
|
其中-X
指定了排除的文件(是的内核已经准备好了这个文件)。注意后面两个文件夹的书写顺序。
# 应用patch文件
# 应用patch文件
进入linux-5.15
目录,执行下面代码以应用patch:
|
|
其中-p1
告诉patch指令,去掉patch文件中的第一个目录层级。
# 提交更改到git
通过上面方式获取的内核可以已经初始化了git仓库,于是直接在linux-5.15
目录中提交修改就行。
|
|