當(dāng)前位置:首頁(yè) > 嵌入式 > 嵌入式動(dòng)態(tài)
[導(dǎo)讀]當(dāng)來(lái)自芬蘭的21歲的學(xué)生Linus Torvalds在1991年編寫(xiě)Linux內(nèi)核代碼的第一行時(shí),他可能沒(méi)想到會(huì)成為今天的巨人。 那年的8月25日,Torvalds在Minix Usenet新聞組上發(fā)布了一條消息,指出他正在開(kāi)發(fā)一個(gè)免費(fèi)的操作系統(tǒng),“只是一種業(yè)余愛(ài)好,不像GNU那樣龐大和專(zhuān)業(yè)”。

當(dāng)來(lái)自芬蘭的21歲的學(xué)生Linus Torvalds在1991年編寫(xiě)Linux內(nèi)核代碼的第一行時(shí),他可能沒(méi)想到會(huì)成為今天的巨人。 那年的8月25日,Torvalds在Minix Usenet新聞組上發(fā)布了一條消息,指出他正在開(kāi)發(fā)一個(gè)免費(fèi)的操作系統(tǒng),“只是一種業(yè)余愛(ài)好,不像GNU那樣龐大和專(zhuān)業(yè)”。

事情的發(fā)展顯然遠(yuǎn)超他的預(yù)期,如今小到傳感器,大到超級(jí)計(jì)算機(jī),從智能手機(jī)、手表、汽車(chē)等日常用品到航天器等設(shè)備,Linux 內(nèi)核的身影已無(wú)處不在。

隨著迄今為止最大版本 Linux Kernel 5.8 于今年 8 月初的發(fā)布,Linux 內(nèi)核已擁有超過(guò) 2 萬(wàn)名貢獻(xiàn)者,歷史 commit 數(shù)超過(guò) 100 萬(wàn)次,迎來(lái)一個(gè)新的里程碑。

上周恰逢 Linux 29 周年紀(jì)念日,Linux 基金會(huì)發(fā)布了一份詳盡的 Linux 內(nèi)核報(bào)告,涵蓋了自 1991 年 9 月 17 日首次發(fā)布以來(lái),到 2020 年 8 月 2 日最新版本的 Linux 內(nèi)核歷史。

版本控制:從 BitKeeper 到 Git

Linux 基金會(huì)從 2008 年開(kāi)始每年發(fā)布 Linux 內(nèi)核報(bào)告,但此前一直難以將其發(fā)展過(guò)程完整串聯(lián)起來(lái)。今年,借助 Daniel German 博士的 cregit 工具,他們成功追溯到了第一個(gè)版本,Linux 內(nèi)核的發(fā)展時(shí)間線變得清晰。根據(jù)版本控制方式,可大致分為以下三個(gè)階段:

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

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

Git:2005 年 4 月 16 日至今

版本控制對(duì)社區(qū)協(xié)作能力影響重大,這在 2000 年代初是一件令人頗為苦惱的事情。使用版本控制系統(tǒng),也就是 BitKeeper 之前,貢獻(xiàn)者需要將補(bǔ)丁提交至郵件列表,待 Torvalds 接受后放進(jìn)源碼樹(shù),再發(fā)布整個(gè)樹(shù)的新版本。在這種方式下,具體是誰(shuí)在做貢獻(xiàn)、貢獻(xiàn)的數(shù)量和路徑都不夠透明。

2002 年 2 月 4 日,BitKeeper 的使用標(biāo)志著 Linux 內(nèi)核 commit 歷史的開(kāi)啟。然而 BitKeeper 為專(zhuān)有軟件,這一決定在社區(qū)中遭受了長(zhǎng)期質(zhì)疑。直到 2005 年,BitKeeper 擁有者 Larry McVoy 決定收回?zé)o償使用 BitKeeper 的許可。Torvalds 本人當(dāng)時(shí)又對(duì)現(xiàn)成的 CVS 和 Subversion 等集中式版本控制工具感到不滿,因此自己動(dòng)手,用十天時(shí)間寫(xiě)出了 Git 的第一個(gè)版本。

Git 目前已成為開(kāi)發(fā)者們非常熟知且廣泛使用的分布式版本控制系統(tǒng)。Linus Torvalds 則表現(xiàn)得更多的是迫于無(wú)奈,他曾聲稱(chēng)自己 “根本不想做源代碼管理,覺(jué)得這是計(jì)算機(jī)世界中最無(wú)趣的事情”。

自從版本控制系統(tǒng)由 BitKeeper 改為 Git 后,Linux 內(nèi)核每年的貢獻(xiàn)者和 commit 數(shù)量都在穩(wěn)步增長(zhǎng)。歷年的內(nèi)核報(bào)告數(shù)據(jù)顯示,2005 年 5 月發(fā)布的 2.6.12 版本平均每小時(shí)收到 2 次 commit。15 年后,2019 年的平均數(shù)是每小時(shí) 9.4 次。而在最新的 5.8 內(nèi)核中,平均每小時(shí) commit 數(shù)達(dá)到了 10.7 次。

繁雜且自成體系的內(nèi)核代碼

首個(gè)內(nèi)核版本 linux-0.01.tar.Z 由 88 個(gè)文件和 10,239 行代碼組成,運(yùn)行在 i386 這樣單一的硬件架構(gòu)上。到了 5.8 版本,這一數(shù)據(jù)擴(kuò)張為 69,325 個(gè)文件和 28,442,673 行代碼,并能夠在 30 多種主要的架構(gòu)上運(yùn)行。

數(shù)量上的龐大僅是 Linux 內(nèi)核代碼的表象,它自身更是形成了一套復(fù)雜的體系,不熟悉的人往往不知從何處下手,極有可能 “牽一發(fā)而動(dòng)全身”。這或許也是內(nèi)核維護(hù)者難尋的原因之一。

Linux 內(nèi)核發(fā)布第一天起的某些代碼仍在當(dāng)前版本中使用,例如 Torvalds 和大學(xué)好友 Lars Wirzenius 共同編寫(xiě)的 vsprintf 例程,它也是為數(shù)不多存在至今的首次 commit 中的源代碼。

29 年過(guò)百萬(wàn)次 commit,Linux 內(nèi)核何以發(fā)展至今?

今年的內(nèi)核報(bào)告提到,有 2,964 個(gè)能被追溯至 1991 年的 token 如今在 5.8 版本中也能找到。5.8 版本超過(guò)一半的代碼寫(xiě)于近 7 年內(nèi),但之前所有年份都對(duì)此版本有貢獻(xiàn)。過(guò)去的代碼不斷在后續(xù)的版本中留下痕跡。

持續(xù)膨脹的內(nèi)核文件量和代碼行數(shù)未見(jiàn)得完全是一件好事,為了使系統(tǒng)不變得臃腫,內(nèi)核維護(hù)者需要做一些修枝剪葉的工作。Linux 內(nèi)核中未使用的代碼和文件都會(huì)被視情況刪除,有一些版本還會(huì)進(jìn)行大的清理,例如 2018 年的 4.17 版本,刪除了 8 個(gè)架構(gòu),凈減少大約 180,000 行代碼。

不僅僅是源碼,Linux 內(nèi)核維護(hù)者還會(huì)關(guān)注空白行和代碼注釋?zhuān)源_保源碼的可讀性。

開(kāi)發(fā)者原創(chuàng)證書(shū)和標(biāo)簽管理

2004 年對(duì)開(kāi)發(fā)者原創(chuàng)證書(shū)(Developer Certificate of Origin,簡(jiǎn)稱(chēng) DCO)的標(biāo)準(zhǔn)化是 Linux 內(nèi)核史上的一個(gè)關(guān)鍵變化點(diǎn)。DCO 的引入為開(kāi)發(fā)者和用戶提供了法律保護(hù),同時(shí)又不至于增加程序負(fù)擔(dān)。它極大地提高了跟蹤補(bǔ)丁進(jìn)入內(nèi)核的路徑的能力,加上版本控制系統(tǒng)向 Git 的過(guò)渡,DCO 有效地減輕了開(kāi)發(fā)者做貢獻(xiàn)的開(kāi)銷(xiāo),因此變得很受歡迎,后來(lái)也被許多其他開(kāi)源項(xiàng)目采用。

隨著 DCO 的標(biāo)準(zhǔn)化使用,現(xiàn)在幾乎所有的 commit 都有一個(gè) Signed-off-by 標(biāo)簽。通常每個(gè) commit 平均會(huì)有兩個(gè)該標(biāo)簽,能夠反映代碼在合并之前的維護(hù)者層次結(jié)構(gòu),有助于追溯補(bǔ)丁進(jìn)入代碼的路徑。

29 年過(guò)百萬(wàn)次 commit,Linux 內(nèi)核何以發(fā)展至今?

Signed-off-by 之外,Linux 內(nèi)核還增加了表示審查的標(biāo)簽(Reviewed-by 和 Acked-by)。審查對(duì)內(nèi)核代碼的質(zhì)量來(lái)說(shuō)相當(dāng)重要,標(biāo)簽的加入令這個(gè)過(guò)程更加清晰,有越來(lái)越多的維護(hù)者選擇使用標(biāo)簽來(lái)表示已審查。

在審查 git 倉(cāng)庫(kù)時(shí),Linux 基金會(huì)發(fā)現(xiàn)了一些比較有趣的標(biāo)簽,像是 "Enithusiastically-ack'd by"、"Thanksto"、"Based-on-the-Original-screenplay-by"、"Catched-by-andrightfully-ranted-at-by" 等等。但這些標(biāo)簽并沒(méi)有像上述兩類(lèi)一樣被廣泛采用。

行之有效的發(fā)布模式

Linux 內(nèi)核的發(fā)布模式已漸趨成熟,現(xiàn)在基本固定為 Prepatch(或 "-rc")、Mainline、Stable 和 Long Term Stable 四類(lèi)版本。

29 年過(guò)百萬(wàn)次 commit,Linux 內(nèi)核何以發(fā)展至今?

社區(qū)曾對(duì)發(fā)布周期進(jìn)行了大量的探討和實(shí)驗(yàn),并逐漸找到了行之有效的發(fā)布模式,發(fā)布周期也幾乎完全可預(yù)測(cè)——每個(gè)發(fā)布周期由時(shí)長(zhǎng)兩周的 “合并窗口”開(kāi)始,這時(shí),新功能經(jīng)適當(dāng)?shù)?review 后可被納入接下來(lái)要發(fā)布的 git 倉(cāng)庫(kù)。一旦它被標(biāo)記為 rc1,那么集成測(cè)試、調(diào)試和穩(wěn)定化的周期就開(kāi)始了。然后每周對(duì) rc 候選版本進(jìn)行標(biāo)記,直到達(dá)到目標(biāo)質(zhì)量和穩(wěn)定性。發(fā)布后,隨著下一個(gè)合并窗口的到來(lái),這個(gè)周期又開(kāi)始循環(huán)。

內(nèi)核的主線樹(shù)由 Linus Torvalds 維護(hù),這棵樹(shù)引入了所有新功能。新的主線(Mainline)內(nèi)核每 2 到 3 個(gè)月發(fā)布一次。但這樣的發(fā)布節(jié)奏較慢,難以滿足大多數(shù)用戶的需求。因此,從 2005 年開(kāi)始,每周發(fā)行一次穩(wěn)定版(Stable)內(nèi)核。

用戶還想要受維護(hù)時(shí)間更長(zhǎng)的版本,于是 2006 年發(fā)布的 2.6.16 版本成為第一個(gè)長(zhǎng)期支持(LTS)版本內(nèi)核。此后每年都有一個(gè)新的 LTS 內(nèi)核,該內(nèi)核將由內(nèi)核社區(qū)維護(hù)至少 2 年(從 4.4 版本開(kāi)始延長(zhǎng)至 6 年)。Linux 內(nèi)核官網(wǎng)公布了所有現(xiàn)存 LTS 版本的發(fā)行日期、EOL 日期及維護(hù)者(目前 6 個(gè) LTS 版本都由 Greg Kroah-Hartman 和 Sasha Levin 這兩人維護(hù))。

29 年過(guò)百萬(wàn)次 commit,Linux 內(nèi)核何以發(fā)展至今?

貢獻(xiàn)者:長(zhǎng)尾的力量不可忽視

不少組織都在為 Linux 內(nèi)核做貢獻(xiàn),貢獻(xiàn)者排行榜前列幾乎都被 Intel、Red Hat、IBM、SUSE、Google、Samsung、AMD、Oracle、華為和 ARM 這樣的大企業(yè)占據(jù)。

從 2007 年到 2019 年,Linux 內(nèi)核共接受了來(lái)自 1,730 個(gè)組織的 780,048 次 commit。排在最前面的 20 個(gè)組織占了 68% 的 commit 量。

29 年過(guò)百萬(wàn)次 commit,Linux 內(nèi)核何以發(fā)展至今?

在過(guò)去十年中,每年有超過(guò) 400 個(gè)組織為 Linux 內(nèi)核做出貢獻(xiàn)。其中相當(dāng)一部分可能只有過(guò)一次 commit。從每年的 commit 比例來(lái)看,其中 1/3 貢獻(xiàn)來(lái)自神秘的長(zhǎng)尾。也就是圖中最上面淺灰色 “Others” 的部分。

Linux 基金會(huì)指出,企業(yè)的貢獻(xiàn)會(huì)根據(jù)業(yè)務(wù)需求和戰(zhàn)略的不同而有所變化。前 20 名貢獻(xiàn)者中,有些是 2007 年之后才加入,有些在此前做過(guò)很多貢獻(xiàn)的公司,被收購(gòu)后便不再繼續(xù)參與。貢獻(xiàn)者的多樣性為內(nèi)核發(fā)展賦予了一些彈性。

除了組織貢獻(xiàn)者,Linux 內(nèi)核社區(qū)成員也致力于增加個(gè)人貢獻(xiàn)者的多樣性,他們通常愿意花費(fèi)自己的時(shí)間來(lái)指導(dǎo)新的開(kāi)發(fā)者。Linux 基金會(huì)有一個(gè) Kernel Mentorship(LKMP)項(xiàng)目,用來(lái)幫助新加入開(kāi)源的開(kāi)發(fā)者進(jìn)行實(shí)驗(yàn)、學(xué)習(xí),并為開(kāi)源社區(qū)做出貢獻(xiàn)。

內(nèi)核社區(qū)的共同目標(biāo):高質(zhì)量、可靠性

報(bào)告的最后,Linux 基金會(huì)指出,內(nèi)核社區(qū)的重點(diǎn)是保持一個(gè)共同的目標(biāo),即擁有一個(gè)沒(méi)有回歸的高質(zhì)量操作系統(tǒng),愿意根據(jù)需要?jiǎng)?chuàng)建新的流程和工具,以幫助提高效率,并繼續(xù)提升 Linux 內(nèi)核的可靠性。

內(nèi)核測(cè)試現(xiàn)在也引入了一些自動(dòng)化測(cè)試工具:靜態(tài)分析工具如 sparse(語(yǔ)義解析器)、smatch(源匹配器)和 cocicheck(語(yǔ)義補(bǔ)丁,測(cè)試特定的 bug),由 0-day 和 Hulk Robot 這樣的自動(dòng)測(cè)試機(jī)器人在 Linux 內(nèi)核樹(shù)上運(yùn)行。機(jī)器人在發(fā)現(xiàn)和跟蹤 bug 上起到不少作用。這些測(cè)試工具能夠幫助開(kāi)發(fā)人員跟上上游內(nèi)核的速率變化,并繼續(xù)改進(jìn)內(nèi)核版本,提升其穩(wěn)定性。

Linux 內(nèi)核如今被應(yīng)用于諸多領(lǐng)域,基金會(huì)認(rèn)為,改進(jìn)基礎(chǔ)設(shè)施,進(jìn)行正確的安全分析,是接下來(lái)要應(yīng)對(duì)的重大挑戰(zhàn)之一。目前 Linux 內(nèi)核已擁有一個(gè)很好的基礎(chǔ),它應(yīng)當(dāng)繼續(xù)引領(lǐng)創(chuàng)造最佳實(shí)踐,以促進(jìn)整個(gè)開(kāi)源軟件行業(yè)的發(fā)展。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉