内核是我们通常所说的“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协议的支持。