内核开源学村

Linux 内核补丁提交初体验

三年前,我大学的时候开始用 Linux ,并且热衷于发掘一个不一样的桌面环境。 我的教授向我介绍了 Ubuntu 操作系统,我当即在我的电脑上构建了 Ubuntu + Windows 的双系统。

在接下来三个月内,我完全放弃了 Windows ,并在了解了 RPM Package Manager 后转向了 Fedora 。 我也尝试过使用更加稳定的 Debian 系统,但在2017年初,我意识到 Arch Linux 才能满足我对最新软件包的所有需求。我给我的 Arch Linux 装上了 KDE 桌面,并根据我自己的使用需求做了多项自定义。

与其使用现成的统一安装程序,我一直对 Linux 黑客和终端更感兴趣。这促使我去探索 Linux 内核树,并找到了为社区做贡献的方式。

向 Linux 内核提交我的首个补丁是一次令人惊叹的体验。2018年2月的第二个星期,我花了大约一个小时的时间克隆了最新的 Linux 内核源代码树,并用了几乎一整晚的时间编译和构建 4.15 Arch Linux 内核。我参照 KernelNewbies 指南并阅读了《 Linux 设备驱动程序》 第三版的前三章。本书介绍了设备驱动程序以及特定类型,并示范了如何在运行时将它们作为模块插入/删除。书中的示例代码帮助我创建了一个 Hello World 驱动程序,并尝试了 insmod 和 rmmod 命令(后续章节中的代码示例有一点点过时)。这样,我便开始了向 Linux 内核提交补丁的旅途。

许多人建议我在成为内核贡献者之前阅读有关操作系统和 Linux 内核开发的书籍;另一些人则提倡遵循 KernelNewbies 的指南并使用漏洞查找工具来修复错误。我采取了后者的建议,因为我发现围绕错误代码的探索和试验是学习和理解内核代码的最佳方式。

我对 Linux 内核的第一次修补,是通过在 vt6656 驱动程序目录上运行 checkpatch.pl 脚本来去除“内存不足”警告。在增添更新日志并更新修补程序后,我于2月10日提交了第一个补丁。此后,我在2月12日收到了 Greg Kroah-Hartman 的一封电子邮件,告知我的修补程序已添加到下一分期的分支, 而且准备并入下一个主要内核版本中。

我的建议是,你可以从很简单的补丁开始,因为就算只有一两行的修补,都会激励你做出更多贡献。请记住,重要的是质量而不是数量。在向驱动程序的 TODO 列表做出贡献前之前, 你应该掌握设备驱动程序和操作系统的丰富知识。做贡献的快感会让你继续精进。


本文由 LinuxStory 志愿者 杜雨桐 翻译,更多详情请查看原文。
原文链接:https://opensource.com/article/18/4/submitting-my-first-patch-linux-kernel
本文链接:https://linuxstory.org/submitting-my-first-patch-linux-kernel
转载请注明来自 LinuxStory ,否则必究相关责任!

对这篇文章感觉如何?

太棒了
2
不错
0
爱死了
0
不太好
0
感觉很糟
0

You may also like

Leave a reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据

More in:内核

内核

rootfs initramfs kexec 与 Linux 启动过程

作为 Debian 用户,在使用 apt 更新系统时偶尔会发现某次安装更新的时间特别长,这往往出现在较大版本的更新中,仔细观察后就会发现,这个耗时极长的操作并不是安装某个软件,而是对一个名为 init […]
内核

龙芯开始发布针对3A6000系列CPU的Linux补丁

尽管龙芯3A6000处理器尚未正式推出,但自去年以来的传言将其定于在今年上半年推出,并有人声称这种性能提升可以与AMD Zen 3或英特尔Tiger Lake的性能水平相媲美。在3A6000系列推出之 […]
内核

Linux 共享库的 soname 命名机制

Linux 有一套规则来命名系统中的每一个共享库,它规定共享库的文件命名规则如下:libname.so.x.y.z,即前缀"lib"+库名称+后缀".so"+三个数字组成的版本号,其中,x 表示主版本号,y 表示次版本号,z 表示发布版本号。SO-NAME 命名机制,就是把共享库的文件名去掉次版本号和发布版本号,只保留主版本号。在 Linux 系统中,系统会为每个共享库在它所在的目录创建一个跟它的 ”SO-NAME” 一样的软链接指向它。