1.2 Linux内核的诞生史与版本号
UNIX商业化是Linux诞生的一个重要因素。
AT&T公司,也就是UNIX操作系统的拥有者,为了与加州伯克利大学合作开发UNIX系统套件,将其核心源代码给共享了,因为当时并没有太严谨的限制规定,导致市面上陆续出现了许多通过UNIX演变出来的操作系统。
陆续出现的衍生版本的类UNIX操作系统对于AT&T公司而言,不仅会使其行业地位受到威胁,还会瓜分掉很多市场。所以在1979年,AT&T公司出于商业考量,决定将UNIX的版权收回,并且还提出了不可以向学生提供原始代码的严格限制。
AT&T公司政策的变化使得当时整个学术界都深受影响。影响最严重的就属教学生操作系统相关知识的教授们,因为当时的教材和工具都以UNIX为主,然而随着UNIX商业化,这些教授再也没办法给学生讲解UNIX的内部原理了,因为购买UNIX版权的价格过于昂贵,这种尴尬的局面导致课程难以为继。
就在这个时候,荷兰阿姆斯特丹自由大学的Andrew S.Tanenbaum教授为了能继续操作系统的教学,决定在不使用任何UNIX源代码的前提下,自行开发一款与UNIX兼容的操作系统。为避免版权上的争议,他将这款操作系统命名为Minix(小型的UNIX),并且将源代码全部开放,免费给各所大学教学和研究。这款操作系统虽然可以免费获取,但是Andrew S.Tanenbaum教授却严格规定它的用途(仅限于教学使用)。因此,Minix虽然是一款很不错的操作系统,但并没有获得很好的发展。
1988年,Linux的发明者Linus Benedict Torvalds进入芬兰赫尔辛基大学深造,并且选读计算机科学系,在学习期间接触到了UNIX操作系统。因为在当时UNIX已经商业化,1991年,Linus Benedict Torvalds在学习了操作系统原理之后,完全不满足这些概念性的知识,于是购买了一台计算机,安装上Minix操作系统,花费大量时间去研究Minix源代码,并尝试做一些开发。在此期间他积累了很多与内核程序设计相关的知识和经验,并且也认识到Minix虽然很不错,但只是一个用来教学的简单操作系统,所具备的功能并不完善,而且因为Andrew S.Tanenbaum教授严格规定它仅限于教学使用,所以也无法修改完善。说到底,还是因为版权的问题。这使得Linus Benedict Torvalds萌发了开发一款新操作系统的念头。
说做就做,1991年4月他便开始规划新操作系统的内核,到了9月份终于发布了第一个版本——Linux 0.01版,并邀请其他人一起来完善它,内核的源代码允许任何人自由地下载和修改,社区管理员为了便于管理就将其称为“Linux”。初期的Linux仅有1万行代码,虽然是个简易的开始,但由于Linus Benedict Torvalds的持续维护和世界各地程序员的无私贡献,原本由一个人撰写核心程序,竟然在不知不觉中逐渐转化成“虚拟团队”的运作模式。
由于在短时间内获得了大量反馈,同年10月份Linus Benedict Torvalds又发布了第一个正式稳定版——Linux 0.02版,并且正式对外宣布Linux内核的诞生。在世界各地程序员的支持下,Linux迅速发展,同时还形成了Linux的社区文化。
Linus Benedict Torvalds和社区里这群来自世界各地的程序员终于在1994年创作完成了Linux内核的正式版——Linux 1.0版。这个版本的源代码达到了17万行,同时还加入了X Window System的支持,当时是按照完全自由免费的协议进行发布的,随后正式采用GPL协议。
1996年,Linux 2.0版本发布,这是第一个在单系统中支持多处理器的稳定内核版本,同时也兼容更多的处理器类型。在发布Linux 2.0版本的同时,还将一只可爱的企鹅作为Linux内核的标识(Logo)和吉祥物同步发布,并取名为Tux,如图1-5所示。
浏览Linux内核官网容易发现,Linux内核版本号是由三组数字组成的,其格式为AA.BB.CC,如图1-6所示。版本类型又分成两种:一种是稳定版,另一种是开发版。
图1-5 Linux内核的Logo和吉祥物
图1-6 Linux内核版本号
(1)稳定版:系统本身已经十分稳定,可以广泛地在企业中使用,较旧的稳定版过渡到新稳定版只需要修正一些小Bug(漏洞)即可。
(2)开发版:这一类型的版本会向内核中加入了一些新功能,本身不很稳定,可能存在严重Bug,需要进行大量测试。
在图1-6中,主版本号的改变标志着Linux内核有重要的功能变动;次版本号主要用来区别内核是开发版还是稳定版,开发版用奇数表示,稳定版用偶数表示;修订版本号的改变表示较小的功能变动或者漏洞的修补次数。
这种通过奇数和偶数来表示开发版和稳定版的方案在Linux 2.6版本之后就被放弃了,现在开发版的内核用“-rc”表示。
Linux稳定版和开发版之间的升级路径如下:以一个稳定版的内核为基础,往这个内核中添加新的功能,在添加这些新功能的过程中会产生很多大大小小的Bug,通过不断测试,将严重的、致命的Bug修复了,这样一个开发版就完成了。将完成的开发版通过不断测试,不断地修复漏洞,使内核的运行越来越稳定,这样就逐步升级为一个稳定版。
稳定版本的升级迭代就是为了修复一些小Bug。那么开发版的升级又是怎么完成的呢?
➢ 开发版最初是稳定版的拷贝,随后不断添加新功能、修正错误;
➢ 开发版趋于稳定后将升级为稳定版。
Linux内核版本的升级路径如图1-7所示。
图1-7 Linux内核版本的升级路径
注
图1-6和1-7仅用于演示,并不直接对应实际的内核版本号。