快捷搜索:

如何成为一个Linux系统内核开发者

你想成知道若何成为一个Linux内核开拓者么?或者你的老板奉告你,“去为这个设备写一个Linux驱动。“这篇文档的目的,便是经由过程描述你必要经历的历程和提示你若何和社区一路事情,来教给你为达到这些目的所必要知道的所有常识。本文也考试测验解释社区为什么这样事情的一些缘故原由。

内核险些全是用C写成的,有一些架构相关的部分是用汇编说话写成的。纯熟掌握C说话是内核开拓的必备前提。汇编说话(任何架构)的懂得不是必须的,除非你筹备做某个架构的底层开拓。虽然下面这些书不能完全代替踏实的C说话教授教化和/或者成年累月的履历,他们照样不错的参考,假如用得着的话: - "The C Programming Language" 作者: Kernighan and Ritchie [Prentice Hall]- "Practical C Programming" 作者: Steve Oualline [O'Reilly]

内核是用 GNU C 和 GNU 对象链写成的。虽然它相符 ISO C89 标准,它照样应用了一些标准中没有的扩展。内核是自成体系的 C 情况,它并不依附标准C库,以是某些C说话标准是不支持的。随意率性长度long long类型除法和浮点数是不被容许的。无意偶尔候会很难理解内核对付它所应用的对象链和扩展的假定,而且不幸的是也没有关于它们的绝对的参考。请查阅gcc 的info页(`info gcc`)以获取有关信息。

请记着你是在考试测验进修若何与已经存在的开拓社区一路事情。这是一群因素繁杂的人们,他们对付代码,风格和步骤有高的标准。这些标准是颠末光阴查验的。

他们发明遵照这些标准对付这样一个大年夜规模的且地舆上分散的团队是最佳的选择。考试测验提前进修尽可能多的有关这些标准的常识,由于它们都有很好的文档;不要期望别人会遵循你或者你公司的行事要领。

司法问题

Linux内核源代码依照GPL宣布。请参考源代码树下的COPYING文件,以获取有关这个许可证的具体信息。假如你对这个许可证有疑问,请联系你的状师,不要在Linux内核邮件列表里扣问。邮件列表里的人们不是状师,你不应该依附于他们对付司法问题的解释。

文档

Linux内核源代码树有很多文档,它们对付进修若何与内核社区交流来说有弗成估量的代价。当新的功能加进内核的时刻,平日建议作者把解释这个新功能的文档也加进内核。假如一个内核更改导致了内核对用户空间界面的改变,建议你把这个信息或者一个说清楚明了这个更改的manpage的补丁发送给手书页的掩护者 mtk-manpages@gmx.net。

这里有一个内核源代码树里必要涉猎的文件列表:

README

这个文件简单先容了Linux内核的背景,并描述了设置设置设备摆设摆设和编译内核必要做哪些工作。内核新手应该从这里开始。

Do奸淫**entation/Changes

这个文件先容了成功编译和运行内核所必要各类不合软件的列表。

Do奸淫**entation/CodingStyle

这个文件描述了Linux内核代码风格,还有背后的一些缘故原由。所有的新代码的要相符这个文档里的准则。大年夜多半掩护者只会吸收相符这些规则的补丁,很多人只看相符精确风格的代码。

Do奸淫**entation/SubmittingPatches

Do奸淫**entation/SubmittingDrivers

这些文件异常具体的先容了若何成功的创建和发送一个补丁,包括(但不限于):

-Email内容

-Email款式

-发送给谁

遵守所有这些规则并不能包管成功(对所有的补丁都必要进行内容和风格的具体反省),然则不遵守这些规则就必然不会成功。

其他关于若何创建补丁的很好的文章有:

内核也有很多可以从源代码自动孕育发生的文档。这包括内核内部API的周全描述,有关若何处置惩罚好锁定的规则。这些文档会被创建于 Do奸淫**entation/DocBook/文件夹中。在内核主源码树中经由过程运行下面的敕令可以创建出PDF,Postscript, HTML 和manpage等不合款式的文档: make pdfdocsmake psdocsmake htmldocsmake mandocs

成为一个内核开拓者

假如你对Linux内核开拓一无所知,你可以看看Linux KernelNewbies项目:

kernelnewbies.org

它包孕一个邮件列表,在那里你可以问任何有关内核开拓的根基问题(在问问题之前先搜索一下存档,很可能这个问题已经被解答过了。)它还有一个IRC频道,你可以在里面实时的提问。它还有很多有用的文档,对付进修Linux内核开拓很有用。

这个网站有有关代码组织,子系统,当前项目(代码树之内的和之外的)的基础信息。它也描述了一些基础的“物流”信息,比如怎么样编译内核和怎么样打补丁。

假如你不知道从何处起步,然则你想找一些义务来做以加入内核开拓社区,请看一下Linux Kernel Janitor项目:

janitor.kernelnewbies.org/

这是一个很好的起步的地方。它描述了一些相对来说简单的内核中必要清理的和办理的问题。和认真这个项目的开拓者一路事情,你会学到若何令你的补丁进入Linux内核树的基础常识,而且可能会为你指明下一步的成长偏向,假如你自己尚不明确的话。

假如你已经有了一段代码想要放到内核树里,然则必要某种形式的赞助,那么kernel-mentors项目就可以帮你的忙了。这是一个邮件列表,可以鄙人面找到:

selenic.com/mailman/listinfo/kernel-mentors

在你对Linux内核代码作任何实际的篡改之前,必须要懂得相关的代码是若何事情的。为了达到这个目的,没有比直接读它(很多艰苦的地方都有很好的注释)更好的措施了,以致可能是在某个特殊对象的赞助下来涉猎。很值得保举的这样一种对象是Linux Cross-Reference项目,它可以把源代码以一种自我引用的、索引的网页形式显示出来。一个异常好的最新的内核代码仓库可以在这里找到: //sosdg.org/~coywolf/lxr

所有这些工作无意偶尔候很难做到。要想完美做到这些要求可能必要几年的光阴。这是一个持续的成长历程,必要很多耐心和决心。然则不要放弃,这是可以实现的。很多人已经做到了这一点,每小我都经历过你现在这个阶段。

您可能还会对下面的文章感兴趣: