什麼是Linux內核?
內核是我們通常所說的“Linux技術奇跡”的最重要特征。
在IT術語中,內核既是操作系統的心髒,也是它的大腦,因為內核控制著基本的硬件。內核是操作系統的核心,具有很多最基本功能,如虛擬內存、多任務、共享庫、需求加載、共享的寫時拷貝(copy-on-write)可執行程序和TCP/IP網絡功能。
Linux內核的起源可追溯到1991年芬蘭大學生Linus Torvalds編寫和第一次公布Linux的日子。盡管到目前為止Linux生態系統早已遠遠發展到了Torvalds本人之外的范圍,但Torvalds仍保持著對Linux內核的控制權,並且是Linux名稱的唯一版權所有人。自發布Linux 0.12版起,Linux就一直依照GPL(通用公共許可協議)自由軟件許可協議進行授權。
Linux內核本身並不是操作系統,它是一個完整操作系統的組成部分。Red Hat、Novell、Debian和Gentoo等Linux發行商都采用Linux內核,然後加入更多的工具、庫和應用程序來構建一個完整的操作系統。
Linux發行商一般會根據自己的需要對基本內核進行定制,在一些情況下,不同的Linux版本會在自己的內核中加入主內核中沒有的特性和支持,如Red Hat將部分2.6內核的特性向前移植到它自己的2.4.x內核中;再如Ubuntu Linux版本最近在Ubuntu的2.6.15 Linux內核中增加了對Sun T1處理器的支持,而這種支持目前還沒有出現在主內核中。
內核的發展
Linux操作系統隨每一個版本升級而變得更加穩定。
以2003年12月進入開源世界的第一個2.6內核版本為例,與其前任2.4內核相比,它在很多方面進行了改進,如支持多處理器配置和64位計算;它還支持實現高效率線程處理的本機POSIX線程庫(NPTL)。實際上,性能、安全性和驅動程序的改進是整個2.6.x內核的關鍵。
到2004年12月,即第一個2.6.x內核發布一年後,隨著“Woozy Numbat” 2.6.10 Linux內核的推出,表明一年中已經發布了10個版本,聽起來數量很多,但仍少於2.4.x內核發布頭一年的數量。
在2.4.0內核發布的2001年1月到這一年的12月間,共發布了這一內核的17個版本。不過,2.4.x系列中沒有帶有次小數點的版本號,即沒有四個數字組成的版本號,而在2.6.x系列中,從2.6.8.1內核開始,一直持續到2.6.11,較小的內核隱患和安全補丁被賦予了次小數點版本號(例如2.6.11.1)。
2005年2月發布的2.6.11內核開始支持InfiniBand。
到2005年6月,Torvalds 用來幫助管理Linux內核開發的BitKeeper工具引發了一次影響很廣的爭論,並引發了一場開發工具的變化。2.6.12內核是第一個利用Torvald的Git程序取代BitKeeper的內核。
2005年8月,2.6.x Linux內核中代碼質量得到極大的改進。代碼分析機構Coverity公司當時所做的一次調查發現,2004年12月到2005年7月間,Linux內核中的“缺陷密度”下降了。雖然在此期間,Linux內核代碼本身由2004年12月的576萬行增加到了2005年7月的603萬行,但缺陷密度卻下降了2.2%。2.6.13內核在2005年8月底亮相,包含“Kexec”。Kexec提供無需經過引導加載程序(bootloader)的快速重新引導。它還包含Inotify文件系統事件監測機制,這種機制采用一種比其前任dnotify效率更高的API。
2.6.15內核是在2006年頭幾天發布的。對IPv6的支持在這個內核中有了很大的改進。PowerPC用戶現在有了一個用於64位和32位PowerPC的泛型樹(generic tree),它使這兩種架構上的內核編輯成為可能。
2.6.16版本引進了對Cell處理器和Oracle的 OCFS2集群文件系統的支持。2.6.16版還包含大量修補利用Coverity代碼分析工具發現隱患的補丁。
兩個挑戰
2.6.x Linux內核目前面臨著安全和法律上的挑戰。
在法律方面,Unix廠商SCO在一場復雜的訴訟中宣稱Linux在一些方面侵犯了SCO的知識產權。
Torvalds 率領的Linux社區在2004年5月采取了一系列行動,以更好地記錄Linux內核的提交過程,其目標是幫助減少SCO或其他公司未來提出知識產權要求的可能。
無論如何,這起宣稱Linux內核中包含剽竊自SCO Unix代碼的案例,清楚地表明企業對使用開源代碼所懷有的一些擔心。
在安全方面,Linux開發人員繼續在安全問題出現時迅速修補內核。不過,我們經常看到的現象是:在每一個三位數的版本正式發布不久後很快就推出一個修補隱患或潛在安全問題的帶有次小數點的四位數字的版本。例如,2.6.16.1版在2.6.16版發布一周後發布,它修補了一個潛在的安全漏洞。而2.6.15內核僅僅在發布後兩周就進行了修補,修補了3個潛在的安全漏洞。
下一個內核
2.6.17 Linux內核將引進對Sun 最新的T1處理器系列的支持。它包括驅動程序升級、性能改進以及漏洞修補補丁。
Sun的UltraSPARC T1 處理器是在去年年底上市的。它包含多達8個處理內核,每個處理器內核支持4個線程,總共支持32個線程。
來自kernel.org的正式2.6.17內核並不是第一個支持Sun的Niagara架構的Linux內核。5月底推出的Ubuntu “Dapper Drake”是第一種支持Niagara的主流Linux版本。
新2.6.17內核使Linux可以更容易地處理斷開/重新連接事件。Linux內核開發員Stefan Rompf解釋說,2.6.17內核將使用戶空間(userspace)可以影響連接事件信號,這樣DHCP客戶程序可以得到連接終止的通知,因此客戶程序可以嘗試獲得一個新IP地址。
新內核還包含很多其他的新特性和支持,包括Linux VoIP H.323協議的iptable特性中對防火牆的支持。
新內核中還增加了名為splice 的新I/O機制。Linus Torvalds解釋說,splice背後的真正概念是暴露給用戶空間的“隨機內核緩沖區”的概念。“也就是說,splice和tee運行在用戶控制的內核緩沖區上,在這個緩沖區中,splice將來自任意文件描述符的數據傳送到緩沖區中(或從緩沖區傳送到文件描述符),而tee將一個緩沖區中的數據復制到另一個緩沖區中。因此,從一個很真實(而抽象)的意義上講,splice相當於內核緩沖區的read/write,而tee相當於從內核緩沖區到另一個內核緩沖區的memcpy。”
2.6.17內核能夠滿足業界的最新需求,而它也改進了對老技術的支持,例如對老DECnet協議的支持。