1.2 Torvalds的Linux发展
1.2.1 与Minix之间
Linus Torvalds(托瓦兹, 1969年出生)在购买了最新的Intel 386的个人计算机后,就立即安装了Minix这个操作系统。 另外,上个小节当中也谈到,Minix这个操作系统是有附上源代码的, 所以托瓦兹也经由这个源代码学习到了很多的核心程序设计的设计概念。
1.2.2 对386硬件的多任务测试
早期的计算机性能没有现在这么好,所以压榨计算机性能就成了工程师的一项癖好。
要达到多工(multitasking)的环境,除了硬件(主要是CPU)需要能够具有多任务的特性外,操作系统也需要支持这个功能喔! 一些不具有多任务特性的操作系统,想要同时执行两个程序是不可能的。除非先被执行的程序执行完毕,否则, 后面的程序不可能被主动执行。
1.2.3 初次释出Linux 0.02
有GNU计划提供的bash工作环境软件以及gcc编译器等自由软件, 让托瓦兹得以顺利的撰写核心程序。他参考Minix的设计理念与书上的程序码,然后仔细研究出386个人计算机的性能最优化, 然后使用GNU的自由软件将核心程序码与386紧紧的结合在一起,最终写出他所需要的核心程序。
因为托瓦兹放置核心的那个FTP网站的目录为:Linux, 从此,大家便称这个核心为Linux了。
为了让所有的软件都可以在Linux上执行,于是托瓦兹开始参考标准的POSIX规范。
POSIX是可携式操作系统接口(Portable Operating System Interface)的缩写,重点在规范核心与应用程序之间的接口, 这是由美国电器与电子工程师学会(IEEE)所发布的一项标准!
这个正确的决定让Linux在起步的时候体质就比别人优良~因为POSIX标准主要是针对Unix与一些软件运行时候的标准规范, 只要依据这些标准规范来设计的核心与软件,理论上,就可以搭配在一起执行了。 而Linux的发展就是依据这个POSIX的标准规范,Unix上面的软件也是遵循这个规范来设计的, 如此一来,让Linux很容易就与Unix相容共享互有的软件了!
1.2.4 Linux 的发展:虚拟团队的产生
Linux能够成功除了托瓦兹个人的理念与力量之外,其实还有个最重要的团队!
- 单一个人维护阶段
Linux虽然是托瓦兹发明的,而且内容还绝不会涉及专利软件的版权问题。不过,如果单靠托瓦兹自己一个人的话,那么Linux要茁壮实在很困难~ 因为一个人的力量是很有限的。好在托瓦兹选择Linux的开发方式相当的务实!首先,他将释出的Linux核心放置在FTP上面,并请告知大家新的版本信息, 等到使用者下载了这个核心并且安装之后,如果发生问题,或者是由于特殊需求亟需某些硬件的驱动程序,那么这些使用者就会主动回报给托瓦兹。 在托瓦兹能够解决的问题范围内,他都能很快速的进行Linux核心的更新与除错。
- 广大骇客志工加入阶段
Linux的核心是Open Source的,骇客志工们很容易就能够跟随Linux的原本设计架构, 并且写出相容的驱动程序或者软件。志工们写完的驱动程序与软件托瓦兹是如何看待的呢? 首先,他将该驱动程序/软件带入核心中,并且加以测试。 只要测试可以运行,并且没有什么主要的大问题,那么他就会很乐意的将志工们写的程序码加入核心中!
托瓦兹是个很务实的人,对于Linux核心所欠缺的项目,他总是“先求有且能跑, 再求进一步改良”的心态!这让Linux使用者与志工得到相当大的鼓励! 因为Linux的进步太快了!使用者要求虚拟内存,结果不到一个星期推出的新版Linux就有了! 这不得不让人佩服啊!
另外,为因应这种随时都有程序码加入的状况,于是Linux便逐渐发展成具有模块的功能! 亦即是将某些功能独立出于核心外,在需要的时候才载入到核心中。如此一来, 如果有新的硬件驱动程序或者其他协定的程序码进来时,就可以模块化, 大大的增加了Linux核心的可维护能力!
- 核心功能细部分工发展阶段
因为Linux核心加入了太多的功能,光靠托瓦兹一个人进行核心的实际测试并加入核心原始程序实在太费力~ 结果,就有很多的朋友跳出来帮忙这个前置作业!
这些托瓦兹的Linux发展副手,以及自愿传送修补程序的骇客志工, 其实都没有见过面,而且彼此在地球的各个角落,大家群策群力的共同发展出现今的Linux, 我们称这群人为虚拟团队!而为了虚拟团队数据的传输,于是Linux便成立的核心网站:http://www.kernel.org!
这群素未谋面的虚拟团队们,在1994年终于完成的Linux的核心正式版!version 1.0。 这一版同时还加入了X Window System的支持呢!且于1996年完成了2.0版、2011 年释出 3.0版,更于 2015 年 4 月释出了 4.0 版哩! 发展相当迅速喔!此外,托瓦兹指明了企鹅为Linux的吉祥物。
1.2.5 Linux的核心版本
Linux的核心版本编号有点类似如下的样子:
3.10.0-123.el7.x86_64
主版本.次版本.释出版本-修改版本
◈
➡ 奇数、偶数版本分类
2.6.x 版本以前,托瓦兹将核心的发展趋势分为两股,并根据这两股核心的发展分别给予不同的核心编号,那就是:
-
主、次版本为奇数:发展中版本(development)
如2.5.xx,这种核心版本主要用在测试与发展新功能,所以通常这种版本仅有核心开发工程师会使用。 如果有新增的核心程序码,会加到这种版本当中,等到众多工程师测试没问题后,才加入下一版的稳定核心中; -
主、次版本为偶数:稳定版本(stable)
如2.6.xx,等到核心功能发展成熟后会加到这类的版本中,主要用在一般家用计算机以及企业版本中。 重点在于提供使用者一个相对稳定的Linux作业环境平台。
释出版本则是在主、次版本架构不变的情况下,新增的功能累积到一定的程度后所新释出的核心版本。
如果你有针对某个版本的核心修改过部分的程序码, 那么那个被修改过的新的核心版本就可以加上所谓的修改版本了。
- 主线版本、长期维护版本(longterm version)
这种奇数、偶数的编号格式在 3.0 推出之后就失效了。从 3.0 版开始,核心主要依据主线版本 (MainLine) 来开发,开发完毕后会往下一个主线版本进行。 例如 3.10 就是在 3.9的架构下继续开发出来的新的主线版本。通常新一版的主线版本大约在 2~3 个月会被提出喔! 之所以会有新的主线版本,是因为有加入新功能之故。
而旧的版本在新的主线版本出现之后,会有两种机制来处理,一种机制为结束开发 (End ofLive, EOL),亦即该程序码已经结束,不会有继续维护的状态。 另外一种机制为保持该版本的持续维护,亦即为长期维护版本 (Longterm)!例如 3.10 即为一个长期维护版本,这个版本的程序码会被持续维护,若程序码有 bug 或其他问题, 核心维护者会持续进行程序码的更新维护喔!
如果你想要使用 Linux 核心来开发你的系统,那么当然要选择长期支持的版本才行!要判断你的 Linux 核心是否为长期支持的版本, 可以使用“ uname -r ”来查阅核心版本,然后对照下列链接来了解其对应值喔!
- Linux 核心版本与 Linux 发布商版本
“我的Linux是7.x版,请问....”之类的留言, 这是不对的提问方式,因为所谓的Linux版本指的应该是核心版本, 而目前最新的核心版本应该是4.0.0(2015/04) 才对,并不会有7.x的版本出现的。
常用的Linux系统则应该说明为distribution才对!因此,如果以CentOS这个distribution来说, 你应该说:“我用的Linux是CentOS这个 distribution,版本为7.x 版,请问....”才对。
1.2.6 Linux distributions
Linux是一个操作系统最底层的核心及其提供的核心工具。 他是GNU GPL授权模式,所以,任何人均可取得源代码与可执行这个核心程序,并且可以修改。 此外,因为Linux参考POSIX设计规范,于是相容于Unix操作系统,故亦可称之为Unix Like的一种。
- 可完整安装的Linux发布套件
由于Linux核心是由骇客工程师写的,要由源代码安装到x86计算机上面成为可以执行的binary文件, 这个过程可不是人人都会的~所以早期确实只有工程师对Linux有兴趣。 一直到一些社群与商业公司将Linux核心配合自由软件,并提供完整的安装程序, 且制成光盘/DVD后,对于一般使用者来说,Linux才越来越具有吸引力! 因为只要一直“下一步”就可以将Linux安装完成!
由于GNU的GPL授权并非不能从事商业行为,于是很多商业公司便成立来贩售Linux distribution。 而由于Linux的GPL版权宣告,因此,商业公司所贩售的Linux distributions通常也都可以从Internet上面来下载的! 此外,如果你想要其他商业公司的服务,那么直接向该公司购买光盘来安装,也是一个很不错的方式的。
- 各大Linux Distributions的主要异同:支持标准!
发展Linux distributions的社群与公司实在太多了,例如在台湾有名的Red Hat,SuSE, Ubuntu, Fedora, Debian等等,所以很多人都很担心,如此一来每个distribution是否都不相同呢? 这就不需要担心了,因为每个Linux distributions使用的kernel都是http://www.kernel.org所释出的,而他们所选择的软件,几乎都是目前很知名的软件,重复性相当的高, 例如网页服务器的Apache,电子邮件服务器的Postfix/sendmail,文件服务器的Samba等等。
为了让所有的Linux distributions开发不致于差异太大,且让这些开发商在开发的时候有所依据,还有Linux Standard Base (LSB)等标准来规范开发者,以及目录架构的Filesystem Hierarchy Standard (FHS)标准规范! 唯一差别的,可能就是该开发者自家所开发出来的管理工具,以及套件管理的模式吧! 所以说,基本上,每个Linux distributions除了架构的严谨度与选择的套件内容外, 其实差异并不太大。
鸟哥认为distributions主要分为两大系统,一种是使用RPM方式安装软件的系统,包括Red Hat, Fedora, SuSE等都是这类; 一种则是使用Debian的dpkg方式安装软件的系统,包括Debian, Ubuntu, B2D等等。若是加上商业公司或社群单位的分类,那么我们可以简单的用下表来做个解释喔!
RPM 软件管理 | DPKG 软件管理 | 其他未分类 | |
---|---|---|---|
商业公司 | RHEL (Red Hat 公司) SuSE (MicroFocus) | Ubuntu (Canonical Ltd.) | |
社群单位 | Fedora CentOS OpenSuSE | Debian B2D | Gentoo |
- 几个主要的Linux distributions发行者网址:
Red Hat: http://www.redhat.com
SuSE: https://www.suse.com
Fedora: https://getfedora.org/
CentOS: http://www.centos.org/
Debian: http://www.debian.org/
Ubuntu: http://www.ubuntu.com/
Gentoo: http://www.gentoo.org/