当前位置:首页 > 嵌入式 > 嵌入式动态
[导读]当来自芬兰的21岁的学生Linus Torvalds在1991年编写Linux内核代码的第一行时,他可能没想到它会成为今天的庞然大物。

当来自芬兰的21岁的学生Linus Torvalds在1991年编写Linux内核代码的第一行时,他可能没想到它会成为今天的庞然大物。

当年 8 月 25 日,Torvalds 在 Minix Usenet 新闻组里发了一封帖子,称自己正在做一个自由的操作系统,“就是个兴趣爱好,不会搞得像 GNU 那么大那么专业”。

事情的发展显然远超他的预期,如今小到传感器,大到超级计算机,从智能手机、手表、汽车等日常用品到航天器等设备,Linux 内核的身影已无处不在。

随着迄今为止最大版本 Linux Kernel 5.8 于今年 8 月初的发布,Linux 内核已拥有超过 2 万名贡献者,历史 commit 数超过 100 万次,迎来一个新的里程碑。

上周恰逢 Linux 29 周年纪念日,Linux 基金会发布了一份详尽的 Linux 内核报告,涵盖了自 1991 年 9 月 17 日首次发布以来,到 2020 年 8 月 2 日最新版本的 Linux 内核历史。

版本控制:从 BitKeeper 到 Git

Linux 基金会从 2008 年开始每年发布 Linux 内核报告,但此前一直难以将其发展过程完整串联起来。

今年,借助 Daniel German 博士的 cregit 工具,他们成功追溯到了第一个版本,Linux 内核的发展时间线变得清晰。根据版本控制方式,可大致分为以下三个阶段:

pre-version control(前版本控制):1991 年 9 月 - 2002 年 2 月 4 日

BitKeeper:2002 年 2 月 4 日 - 2005 年 4 月 15 日

Git:2005 年 4 月 16 日至今

版本控制对社区协作能力影响重大,这在 2000 年代初是一件令人颇为苦恼的事情。使用版本控制系统,也就是 BitKeeper 之前,贡献者需要将补丁提交至邮件列表,待 Torvalds 接受后放进源码树,再发布整个树的新版本。

在这种方式下,具体是谁在做贡献、贡献的数量和路径都不够透明。

2002 年 2 月 4 日,BitKeeper 的使用标志着 Linux 内核 commit 历史的开启。然而 BitKeeper 为专有软件,这一决定在社区中遭受了长期质疑。

直到 2005 年,BitKeeper 拥有者 Larry McVoy 决定收回无偿使用 BitKeeper 的许可。Torvalds 本人当时又对现成的 CVS 和 Subversion 等集中式版本控制工具感到不满,因此自己动手,用十天时间写出了 Git 的第一个版本。

Git 目前已成为开发者们非常熟知且广泛使用的分布式版本控制系统。Linus Torvalds 则表现得更多的是迫于无奈,他曾声称自己“根本不想做源代码管理,觉得这是计算机世界中最无趣的事情”。

自从版本控制系统由 BitKeeper 改为 Git 后,Linux 内核每年的贡献者和 commit 数量都在稳步增长。历年的内核报告数据显示,2005 年 5 月发布的 2.6.12 版本平均每小时收到 2 次 commit。

15 年后,2019 年的平均数是每小时 9.4 次。而在最新的 5.8 内核中,平均每小时 commit 数达到了 10.7 次。

繁杂且自成体系的内核代码

首个内核版本 linux-0.01.tar.Z 由 88 个文件和 10,239 行代码组成,运行在 i386 这样单一的硬件架构上。到了 5.8 版本,这一数据扩张为 69,325 个文件和 28,442,673 行代码,并能够在 30 多种主要的架构上运行。

数量上的庞大仅是 Linux 内核代码的表象,它自身更是形成了一套复杂的体系,不熟悉的人往往不知从何处下手,极有可能“牵一发而动全身”。这或许也是内核维护者难寻的原因之一。

Linux 内核发布第一天起的某些代码仍在当前版本中使用,例如 Torvalds 和大学好友 Lars Wirzenius 共同编写的 vsprintf 例程,它也是为数不多存在至今的首次 commit 中的源代码。

今年的内核报告提到,有 2,964 个能被追溯至 1991 年的 token 如今在 5.8 版本中也能找到。5.8 版本超过一半的代码写于近 7 年内,但之前所有年份都对此版本有贡献。过去的代码不断在后续的版本中留下痕迹。

持续膨胀的内核文件量和代码行数未见得完全是一件好事,为了使系统不变得臃肿,内核维护者需要做一些修枝剪叶的工作。

Linux 内核中未使用的代码和文件都会被视情况删除,有一些版本还会进行大的清理,例如 2018 年的 4.17 版本,删除了 8 个架构,净减少代码大约 180,000 行。

不仅仅是源码,Linux 内核维护者还会关注空白行和代码注释,以确保源码的可读性。

开发者原创证书和标签管理

2004 年对开发者原创证书(Developer Certificate of Origin,简称 DCO)的标准化是 Linux 内核史上的一个关键变化点。DCO 的引入为开发者和用户提供了法律保护,同时又不至于增加程序负担。

它极大地提高了跟踪补丁进入内核的路径的能力,加上版本控制系统向 Git 的过渡,DCO 有效地减轻了开发者做贡献的开销,因此变得很受欢迎,后来也被许多其他开源项目采用。

随着 DCO 的标准化使用,现在几乎所有的 commit 都有一个 Signed-off-by 标签。通常每个 commit 平均会有两个该标签,能够反映代码在合并之前的维护者层次结构,有助于追溯补丁进入代码的路径。

Signed-off-by 之外,Linux 内核还增加了表示审查的标签(Reviewed-by 和 Acked-by)。审查对内核代码的质量来说相当重要,标签的加入令这个过程更加清晰,有越来越多的维护者选择使用标签来表示已审查。

在审查 git 仓库时,Linux 基金会发现了一些比较有趣的标签,像是 "Enithusiastically-ack'd by"、"Thanksto"、"Based-on-the-Original-screenplay-by"、"Catched-by-andrightfully-ranted-at-by" 等等。

但这些标签并没有像上述两类一样被广泛采用。

行之有效的发布模式

Linux 内核的发布模式已渐趋成熟,现在基本固定为 Prepatch(或"-rc")、Mainline、Stable 和 Long Term Stable 四类版本。

社区曾对发布周期进行了大量的探讨和实验,并逐渐找到了行之有效的发布模式,发布周期也几乎完全可预测——每个发布周期由时长两周的“合并窗口”开始,这时,新功能经适当的 review 后可被纳入接下来要发布的 git 仓库。

一旦它被标记为 rc1,那么集成测试、调试和稳定化的周期就开始了。然后每周对 rc 候选版本进行标记,直到达到目标质量和稳定性。发布后,随着下一个合并窗口的到来,这个周期又开始循环。

内核的主线树由 Linus Torvalds 维护,这棵树引入了所有新功能。新的主线(Mainline)内核每 2 到 3 个月发布一次。但这样的发布节奏较慢,难以满足大多数用户的需求。因此,从 2005 年开始,每周发行一次稳定版(Stable)内核。

用户还想要受维护时间更长的版本,于是 2006 年发布的 2.6.16 版本成为第一个长期支持(LTS)版本内核。此后每年都有一个新的 LTS 内核,该内核将由内核社区维护至少 2 年(从 4.4 版本开始延长至 6 年)。

Linux 内核官网公布了所有现存 LTS 版本的发行日期、EOL 日期及维护者(目前 6 个 LTS 版本都由 Greg Kroah-Hartman 和 Sasha Levin 这两人维护)。

贡献者:长尾的力量不可忽视

不少组织都在为 Linux 内核做贡献,贡献者排行榜前列几乎都被 Intel、Red Hat、IBM、SUSE、Google、Samsung、AMD、Oracle、华为和 ARM 这样的大企业占据。

从 2007 年到 2019 年,Linux 内核共接受了来自 1,730 个组织的 780,048 次 commit。排在最前面的 20 个组织占了 68% 的 commit 量。

在过去十年中,每年有超过 400 个组织为 Linux 内核做出贡献。其中相当一部分可能只有过一次 commit。从每年的 commit 比例来看,其中 1/3 贡献来自神秘的长尾。也就是图中最上面浅灰色 “Others” 的部分。

Linux 基金会指出,企业的贡献会根据业务需求和战略的不同而有所变化。前 20 名贡献者中,有些是 2007 年之后才加入,有些在此前做过很多贡献的公司,被收购后便不再继续参与。贡献者的多样性为内核发展赋予了一些弹性。

除了组织贡献者,Linux 内核社区成员也致力于增加个人贡献者的多样性,他们通常愿意花费自己的时间来指导新的开发者。

Linux 基金会有一个 Kernel Mentorship(LKMP)项目,用来帮助新加入开源的开发者进行实验、学习,并为开源社区做出贡献。

内核社区的共同目标:高质量、可靠性

报告的最后,Linux 基金会指出,内核社区的重点是保持一个共同的目标,即拥有一个没有回归的高质量操作系统,愿意根据需要创建新的流程和工具,以帮助提高效率,并继续提升 Linux 内核的可靠性。

内核测试现在也引入了一些自动化测试工具:静态分析工具如 sparse(语义解析器)、smatch(源匹配器)和cocicheck(语义补丁,测试特定的 bug),由 0-day 和 Hulk Robot 这样的自动测试机器人在 Linux 内核树上运行。

机器人在发现和跟踪 bug 上起到不少作用。这些测试工具能够帮助开发人员跟上上游内核的速率变化,并继续改进内核版本,提升其稳定性。

Linux 内核如今被应用于诸多领域,基金会认为,改进基础设施,进行正确的安全分析,是接下来要应对的重大挑战之一。

目前 Linux 内核已拥有一个很好的基础,它应当继续引领创造最佳实践,以促进整个开源软件行业的发展。


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

9月2日消息,不造车的华为或将催生出更大的独角兽公司,随着阿维塔和赛力斯的入局,华为引望愈发显得引人瞩目。

关键字: 阿维塔 塞力斯 华为

加利福尼亚州圣克拉拉县2024年8月30日 /美通社/ -- 数字化转型技术解决方案公司Trianz今天宣布,该公司与Amazon Web Services (AWS)签订了...

关键字: AWS AN BSP 数字化

伦敦2024年8月29日 /美通社/ -- 英国汽车技术公司SODA.Auto推出其旗舰产品SODA V,这是全球首款涵盖汽车工程师从创意到认证的所有需求的工具,可用于创建软件定义汽车。 SODA V工具的开发耗时1.5...

关键字: 汽车 人工智能 智能驱动 BSP

北京2024年8月28日 /美通社/ -- 越来越多用户希望企业业务能7×24不间断运行,同时企业却面临越来越多业务中断的风险,如企业系统复杂性的增加,频繁的功能更新和发布等。如何确保业务连续性,提升韧性,成...

关键字: 亚马逊 解密 控制平面 BSP

8月30日消息,据媒体报道,腾讯和网易近期正在缩减他们对日本游戏市场的投资。

关键字: 腾讯 编码器 CPU

8月28日消息,今天上午,2024中国国际大数据产业博览会开幕式在贵阳举行,华为董事、质量流程IT总裁陶景文发表了演讲。

关键字: 华为 12nm EDA 半导体

8月28日消息,在2024中国国际大数据产业博览会上,华为常务董事、华为云CEO张平安发表演讲称,数字世界的话语权最终是由生态的繁荣决定的。

关键字: 华为 12nm 手机 卫星通信

要点: 有效应对环境变化,经营业绩稳中有升 落实提质增效举措,毛利润率延续升势 战略布局成效显著,战新业务引领增长 以科技创新为引领,提升企业核心竞争力 坚持高质量发展策略,塑强核心竞争优势...

关键字: 通信 BSP 电信运营商 数字经济

北京2024年8月27日 /美通社/ -- 8月21日,由中央广播电视总台与中国电影电视技术学会联合牵头组建的NVI技术创新联盟在BIRTV2024超高清全产业链发展研讨会上宣布正式成立。 活动现场 NVI技术创新联...

关键字: VI 传输协议 音频 BSP

北京2024年8月27日 /美通社/ -- 在8月23日举办的2024年长三角生态绿色一体化发展示范区联合招商会上,软通动力信息技术(集团)股份有限公司(以下简称"软通动力")与长三角投资(上海)有限...

关键字: BSP 信息技术
关闭
关闭