每個(gè) Linux 內(nèi)核版本都有一個(gè)與之關(guān)聯(lián)的不同版本號(hào)。你有沒有想過 Linux 內(nèi)核版本號(hào)是如何形成的? 如果是 Linux 有段時(shí)間了,應(yīng)該知道 Linux 發(fā)行版具有獨(dú)特的版本,并且每個(gè)版本都有特定的代號(hào)。Linux 內(nèi)核也有不同的版本號(hào),作為內(nèi)核所屬系列的標(biāo)識(shí)符。但是,內(nèi)核版本的早期形成方式與 Linus Torvalds 現(xiàn)在的命名方式有所不同。 到最后,你將更加熟悉 Linux 內(nèi)核版本控制方案,并且會(huì)更輕松地閱讀內(nèi)核版本號(hào)并識(shí)別與特定版本相關(guān)的各種功能。
傳統(tǒng)的 Linux 內(nèi)核版本控制
當(dāng) Linus 剛開始開發(fā)內(nèi)核時(shí),所使用的版本控制系統(tǒng)只是由一個(gè)從零(0.x)開始的遞增變量方案組成。最初,Linus 是該項(xiàng)目的唯一工作人員,這個(gè)版本控制系統(tǒng)足以滿足記錄和分發(fā)新內(nèi)核版本的需要。 以下是遵循此命名方案的一些內(nèi)核版本:
后來,隨著越來越多的開發(fā)人員開始為該項(xiàng)目做出貢獻(xiàn),并且修訂和補(bǔ)丁數(shù)量的顯著增加,決定這種版本控制方案不適用于內(nèi)核等軟件。從 1.0 版本開始,Linus 采用了一個(gè)帶有一些附加變量的新方案。
引入更具描述性的版本控制系統(tǒng)
1994 年,隨著 Linux 1.00 內(nèi)核 發(fā)布,Linus 開始使用新的版本控制系統(tǒng),該系統(tǒng)在語(yǔ)法中使用了三個(gè)變量:“abc”。這些變量(a、b 和 c)分別代表特定內(nèi)核版本的主要版本、次要版本和修訂號(hào)。 以 Linux 1.1.95 內(nèi)核為例。你可以將其解碼為第一個(gè)主要版本、第一個(gè)次要版本和第 95 個(gè)修訂版。 當(dāng)時(shí),即使是次要版本號(hào)也表示穩(wěn)定的內(nèi)核版本,而奇數(shù)則表示開發(fā)版本。擁有單獨(dú)的分支很重要,這樣開發(fā)人員可以在內(nèi)核中添加和測(cè)試新功能而不會(huì)影響穩(wěn)定分支。 內(nèi)核開發(fā)人員在開發(fā)分支中添加和改進(jìn)新功能,直到它足夠穩(wěn)定以作為 LTS 內(nèi)核發(fā)布。LTS 內(nèi)核 3.2 是通過穩(wěn)定版本 3.1 中的新特性而開發(fā)的,同樣,新的開發(fā)內(nèi)核 3.3 從 3.2 分支出來,為隨后將在 Linux 3.4 中引入的新特性讓路。 從 Linux 2.4 內(nèi)核 開始,內(nèi)核名稱中的第四個(gè)變量表示補(bǔ)丁版本。你可以說版本 2.4.37.10 是內(nèi)核 2.4.37 的第十個(gè)補(bǔ)丁版本。 補(bǔ)丁版本并不意味著內(nèi)核版本中修補(bǔ)的問題數(shù)量。相反,它計(jì)算在修補(bǔ)發(fā)現(xiàn)的問題后發(fā)布更新內(nèi)核的次數(shù)。 在 Linux 2.6 之前,一直使用這個(gè)版本控制系統(tǒng),它可以有效地將特定版本與其他版本區(qū)分開來。在版本號(hào)中添加修訂計(jì)數(shù)和補(bǔ)丁版本是描述性的,但這意味著具有更長(zhǎng)和更復(fù)雜的內(nèi)核版本。再一次,需要一個(gè)新的更好的方案。
Linux 內(nèi)核版本現(xiàn)在是如何命名的?
在 Linux 3.0 版中,Linus 從版本號(hào)中刪除了第四個(gè)變量。現(xiàn)在,內(nèi)核版本是根據(jù)語(yǔ)法形成的:abc,其中 a、b 和 c 分別是主要版本、次要版本和修訂計(jì)數(shù)。此版本控制方案類似于 1.0 和 2.4 內(nèi)核版本之間使用的方案。
Linux 3.2.0-23 由于版本控制系統(tǒng)的進(jìn)步,貢獻(xiàn)者現(xiàn)在可以無縫地在穩(wěn)定的分支上工作并添加新功能,而不會(huì)意外破壞已經(jīng)工作的穩(wěn)定版本。因此,在內(nèi)核版本 4.0 推出后,內(nèi)核的穩(wěn)定分支和生產(chǎn)分支使用偶數(shù)和奇數(shù)次要版本號(hào)變得多余,并且4.x系列中的第一個(gè) LTS 版本(4.1)有一個(gè)奇數(shù)次要版本號(hào)。 你可能還會(huì)注意到版本號(hào)末尾的一些字符,例如rcX。審查候選(或簡(jiǎn)稱“rc”)是內(nèi)核的預(yù)覽版本和預(yù)補(bǔ)丁版本,開發(fā)人員需要修補(bǔ)它們以消除錯(cuò)誤和其他問題。這些是以前由奇數(shù)次要版本號(hào)表示的開發(fā)版本的替代品。 盡管這些版本是專門為內(nèi)核開發(fā)人員保留的,因此他們可以修復(fù)報(bào)告的問題并實(shí)現(xiàn)新功能,但你也可以根據(jù)需要下載和測(cè)試這些內(nèi)核審查候選者,但通常不建議這樣做,因?yàn)檫@是大多數(shù)開發(fā)發(fā)生的地方。在撰寫本文時(shí),最新的內(nèi)核預(yù)覽版是5.19-rc6。 為了創(chuàng)建新版本,當(dāng)變量的值達(dá)到特定數(shù)字時(shí),前面的變量會(huì)遞增。例如,每當(dāng)次要版本計(jì)數(shù)接近 20 時(shí),主要版本就會(huì)更新到下一位。 Linus 在他的 5.0 內(nèi)核開發(fā)郵件中提到,他只是將主要版本更新為 5,因?yàn)榇我姹緮?shù)量太大,無法指望手指和腳趾(20!)。同樣,根據(jù)kernel.org,當(dāng)?shù)谝粋€(gè)點(diǎn)之后的數(shù)字開始看起來“太大”時(shí),主版本號(hào)會(huì)增加。3.x系列的最終內(nèi)核版本是 3.19,最后一個(gè)主要的4.x內(nèi)核系列是 4.20,然后升級(jí)到 5.0。
Linux 5.18.0-2 自 3.0 版以來,Linux 內(nèi)核一直遵循此版本控制方案,并且已證明它在三個(gè)主要內(nèi)核版本(版本3.x、4.x和5.x)中都是有效的。
使用版本號(hào)識(shí)別 Linux 內(nèi)核版本
考慮到發(fā)布的 Linux 內(nèi)核版本數(shù)量之多,因此需要一個(gè)適當(dāng)?shù)南到y(tǒng)來識(shí)別和區(qū)分特定版本與其他版本。使用新的內(nèi)核版本控制方案,現(xiàn)在可以有效地識(shí)別和比較內(nèi)核版本,并且很容易知道哪個(gè)內(nèi)核版本是最新的,哪個(gè)是較早發(fā)布的。 如果你想檢查系統(tǒng)上當(dāng)前安裝的 Linux 內(nèi)核版本,可以使用 uname 來完成,這是一個(gè) Linux 命令,可讓你列出與系統(tǒng)相關(guān)的信息。根據(jù)你運(yùn)行的發(fā)行版,uname 顯示的版本號(hào)可能與實(shí)際的 Linux 內(nèi)核版本不同。
審核編輯 :李倩
-
控制系統(tǒng)
+關(guān)注
關(guān)注
41文章
6548瀏覽量
110493 -
內(nèi)核
+關(guān)注
關(guān)注
3文章
1363瀏覽量
40229 -
Linux
+關(guān)注
關(guān)注
87文章
11231瀏覽量
208937
原文標(biāo)題:你知道什么是 Linux 內(nèi)核版本控制方案嗎?
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論