Linux内核正在不断开发和改进。每天的补丁都会提交到Linux内核邮件列表(LKML)。其中一些补丁被接受并合并到主流Linux内核中,供用户使用,而其他补丁则永远无法使用。
有时从LKML获取补丁是有用的,例如,如果你在内核中开发,或者只是因为你想保持在前沿。另一个原因可能是,您需要向LKML提出但从未合并的补丁。当使用某些硬件进行开发时,可能会出现这种情况,例如,驱动程序可能已经提交,但由于某种原因(例如,代码不符合内核指南等)从未合并,但您可能仍然对这段代码感兴趣。
在这篇文章中,我们将探索如何将LKML中的代码合并到我们的内核中。
1 获取Linux内核源代码
Linux内核的源代码可从https://www.kernel.org它可以用git下载或克隆。可以转到git仓库页面时https://git.kernel.org。
可以使用这个repo的连接进行git clone . 这里我使用 “https” link:
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
2 将LKML中的补丁或补丁系列应用于内核
在大多数情况下,我们不会直接收到带有补丁的电子邮件,要么是因为我们没有订阅邮件列表,要么只是因为我们的开发机器上没有安装电子邮件客户端。因此,我们将直接从LKML档案中检索补丁或系列https://lore.kernel.org.
当我们识别出我们感兴趣的补丁或补丁系列时,有几种方法可以在本地应用它们。例如,下面的内核补丁是为了支持可见的用户态PASID和设备绑定而编写的,如下所示
点击mbox.gz,下载到本地
3 打patch
在Linux内核代码的根目录,创建patches文件夹 mkdir patches
进入文件夹,把mbox.gz 解压 gunzip mbox.zip
回到根目录 执行git am -i patches/mbox
可能会提示为空,执行 git am -i --skip
后续会让输入是否全部apply 选择是