搜索
bottom↓
回复: 14

如何成为linux内核开发者?

[复制链接]

出0入0汤圆

发表于 2019-11-14 11:08:58 | 显示全部楼层 |阅读模式
一直对这个星球上最伟大软件感到好奇,它是如何管理全球开发者进行开发的,每天来自世界各地提交的代码是谁在管理,内核的管理和驱动是分开来维护的吗?产生这种疑问的原因是驱动开发涉及到硬件,linux社区维护者不可能了解每一款芯片的驱动吧,那这么多驱动是谁在维护?芯片驱动的开发和代码提交者是芯片厂商还是任何一个芯片驱动的开发者。
打个不恰当的比喻:我是一个能力超强的人,从零设计了一个cpu和指令集以及编译工具链,做好了这个cpu的linux驱动,自测了一下cpu运行linux良好,驱动都可以使用。并且把代码提交给linux主线,谁来负责代码的审核并合并到主线中去?

阿莫论坛20周年了!感谢大家的支持与爱护!!

如果想吃一顿饺子,就得从冰箱里取出肉,剁馅儿,倒面粉、揉面、醒面,擀成皮儿,下锅……
一整个繁琐流程,就是为了出锅时那一嘴滚烫流油的热饺子。

如果这个过程,禁不住饿,零食下肚了,饺子出锅时也就不香了……《非诚勿扰3》

出0入0汤圆

发表于 2019-11-14 11:49:26 | 显示全部楼层
本帖最后由 jjj 于 2019-11-14 11:52 编辑

干脆自己发布个操作系统吧,

出0入0汤圆

发表于 2019-11-14 12:17:51 | 显示全部楼层
干脆自己发布个操作系统吧,附带写个cpu。

出0入0汤圆

发表于 2019-11-14 12:27:10 | 显示全部楼层
你可以去github看下 linux的仓库,围观下各种大神提交了啥代码

出0入25汤圆

发表于 2019-11-14 12:30:45 | 显示全部楼层

自己设计指令集和编译器,,那别人都没法验证你的代码,,提交应该不会被合并,,

出0入0汤圆

 楼主| 发表于 2019-11-14 12:40:36 | 显示全部楼层
XIVN1987 发表于 2019-11-14 12:30
自己设计指令集和编译器,,那别人都没法验证你的代码,,提交应该不会被合并,, ...

所以说这个问题是怎么解决的呢?肯定会有公司出新架构的cpu呀,难道只能等到用的人多了,linux维护者熟悉了你的cpu才合并吗?

出0入8汤圆

发表于 2019-11-14 14:05:56 来自手机 | 显示全部楼层
本帖最后由 canspider 于 2019-11-14 14:08 编辑
FireBrain 发表于 2019-11-14 12:40
所以说这个问题是怎么解决的呢?肯定会有公司出新架构的cpu呀,难道只能等到用的人多了,linux维护者熟悉 ...


楼主很有想法
你担心的这些问题都不是问题,现代编译器的设计已经把代码扫描,生成语法树,生成指令都分开了
新的指令集只需要适配编译器后端生成指令部分就可以了,不用从头写编译器

如果你对编译器感兴趣,可以看看llvm相关的文章

出0入0汤圆

 楼主| 发表于 2019-11-14 14:18:11 | 显示全部楼层
本帖最后由 FireBrain 于 2019-11-14 14:26 编辑
canspider 发表于 2019-11-14 14:05
楼主很有想法
你担心的这些问题都不是问题,现代编译器的设计已经把代码扫描,生成语法树,生成指令都分 ...


编译器搞定后呢?我的主要问题是:linux维护者如何审核和合并陌生cpu的驱动代码。

出0入0汤圆

发表于 2019-11-14 16:05:49 | 显示全部楼层
FireBrain 发表于 2019-11-14 14:18
编译器搞定后呢?我的主要问题是:linux维护者如何审核和合并陌生cpu的驱动代码。 ...

这个问题比较泛,在鄙人认知范围内从几个方面回答吧:

1、严格讲CPU是不需要驱动代码的,有对应ISA的编译器即可;
2、如果是包含CPU核在内的广义SOC,则是需要BIOS与外设驱动的;Linux主线版本已经采用设备树的方式将内核与外设(描述)的代码分离,通过外设寄存器与操作逻辑的标准化设计,可重用现有驱动代码(在设备树中进行兼容性描述),无需另行编写;
3、如果是全新的设备,其代码往内核提交时,会有严格的要求与流程,对环境配置、生成方式、校验测试、mail订阅、提交格式、描述说明等等都有严格的规定,按这些要求提交后,自然会有对应的维护者来处置这份提交;
4、不满足规范要求的代码提交会直接被忽略或打回,满足要求的基本所有信息都讲清楚了(你是谁、代码从哪里来、要干什么、如何自证完备),如有不尽之处维护者会向提交者发出疑问进行答辩,这个过程就能甄别代码的价值和往内核提交的必要性了;
5、并且,内核团队内部还有更完备的流程与机制,在必要时(比如重要代码分析超出单个维护者能力范畴)能发动更多的专家与高手进行审核与鉴别。

不知是否解答LZ的疑惑。

出0入0汤圆

 楼主| 发表于 2019-11-14 16:50:22 | 显示全部楼层
本帖最后由 FireBrain 于 2019-11-14 16:52 编辑
jathenal 发表于 2019-11-14 16:05
这个问题比较泛,在鄙人认知范围内从几个方面回答吧:

1、严格讲CPU是不需要驱动代码的,有对应ISA的编 ...


感谢回复,大概了解了。我所说的内核开发者,包括cpu与之外设的开发,外设肯定需要重新开发的,因为外设的寄存器地址都不一样,大部分还需要在已有驱动代码基础修改才行。会不会还需要寄送新cpu的开发板供linux维护者审核验证。
我大概浏览了一下linux内核目录:在linux/arch/arm/boot/dts中发现基于全志cpu各种派的设备树,其中包括各种香蕉派,荔枝派等的设备树。难道这些派的驱动审核也这么严格吗?如果我自己基于全志cpu开发了一个开发板,做好linux移植的代码也能提交主线吗?

出0入0汤圆

发表于 2019-11-14 18:04:52 | 显示全部楼层
FireBrain 发表于 2019-11-14 16:50
感谢回复,大概了解了。我所说的内核开发者,包括cpu与之外设的开发,外设肯定需要重新开发的,因为外设 ...

很难一概而论,结合经验说下吧,不全之处大家继续补充:

1、如果是设备树相关的代码,越接近根节点的,审查越严格;末端设备或板子审查相对宽松;
2、如LZ所说基于全志soc做一个开发板,通常情况会由全志官方提供soc的主机与总线驱动(比如I2C、SPI、USB等);开发板上用到的芯片,比如I2C RTC、或SPI Flash等,则由芯片厂商提供该芯片的设备驱动;这样一来,开发板的设计者只需要提供板级配置描述(即主机的哪个总线接了哪些设备);如上所述,前两个官方驱动审查会严格些,最后的板级代码则相对宽松些,一般能自证完备即可;
3、当然,有时板级或其他的开发者会在官方驱动的基础上提交优化、Bug修复或补充缺失的代码,此时会慎重些,提交的mail列表中往往会要求抄送给官方的维护者,由他们共同甄别是否需要并入主线;
4、有个别情况,官方没有提供驱动,也没有对应的内核维护人员,极端情况下甚至不希望有开源驱动出现在linux主线中,这时就看维护人员的考量和内部流程的操作了,有时提交者的威望较高,或开发板关注度较大,则比较容易并入主线;

再概括些来说,这个审查过程是“法制”与“人治”相结合的,没有绝对的行或不行;只要动机是良好的,本着开源的精神和认真负责的态度去提交,一般都能通过;因为开放与包容正是linux所倡导的,也是其经久不衰的魅力所在。

出0入0汤圆

发表于 2019-11-15 13:04:40 | 显示全部楼层
你能力有多强呢

出0入0汤圆

 楼主| 发表于 2019-11-15 14:19:20 | 显示全部楼层

空有理想的菜鸟一只

出0入0汤圆

发表于 2019-11-15 17:42:50 | 显示全部楼层
FireBrain 发表于 2019-11-15 14:19
空有理想的菜鸟一只

你做过什么牛鼻的硬件呢

出0入0汤圆

 楼主| 发表于 2019-11-15 21:27:27 | 显示全部楼层
meerlin 发表于 2019-11-15 17:42
你做过什么牛鼻的硬件呢

基本没做过
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-3-28 16:07

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表