一、简单的说:一个名叫LinusTorvalds的美国学院生想要了解Intel的新CPU386。他觉得比较好的学习方式是自己编撰一个操作系统的内核。出于这些目的,加上他对当时Unix变种版本(即Minix)对于80386类机器的脆弱支持非常不满,他决定要开发出一个全功能的、支持POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和SystemV的优点,同时摈弃了它们的缺点。Linus独立把这个内核开发到0.02版,这个版本早已可以运行gcc、bash和极少的一些应用程序。这种就是他开始的全部工作了。后来,他又开始在因特网上寻求广泛的帮助。
二、具体的剖析:Linux操作系统的诞生、发展和成长过程依赖于以下五个重要支柱:
UNIX操作系统、MINIX操作系统、GNU计划、POSIX标准、Internet网路。
UNIX操作系统
Linux操作系统是UNIX操作系统的一个克隆版本。UNIX操作系统是俄罗斯贝尔实验室的Ken.Thompson和DennisRitchie于1969年夏在DECPDP-7大型计算机上开发的一个分时操作系统。KenThompson为了能在闲置不用的PDP-7计算机上运行他十分喜欢的星际旅行(Spacetravel)游戏,于是在1969年秋天乘他夫人回去乡加利福尼亚渡周末间,在一个月内开发出了UNIX操作系统的原型。当时使用的是BCPL语言(基本组合编程语言),后经DennisRitchie于1972年用移植性很强的C语言进行了改写,致使UNIX系统在本科高校得到了推广。
MINIX操作系统
MINIX系统是由AndrewS.Tanenbaum(AST)开发的。AST是在英国Amsterdam的Vrije学院物理与计算机科学系统工作,是ACM和IEEE的资深会员(全世界也只有极少人是人代会的资深会员)。MINIX是他1987年编制的,主要用于中学生学习操作系统原理。到1991年时版本是1.5。目前主要有两个版本在使用:1.5版和2.0版。其实目前MINIX系统早已是免费的,可以从许多FTP上下载。
对于Linux系统,他后来曾表示对其开发者Linus的赞扬。但他觉得Linux的发展很大缘由是因为他为了保持MINIX的大型化,能让中学生在一个学期内才能学完,因此没有接纳全世界许多人对MINIX的扩充要求。因而在这样的前提下迸发了Linus编撰Linux系统。其实Linus也刚好捉住了这个好时机。
作为一个操作系统,MINIX并不是优秀者,但它同时提供了用C语言和汇编语言编撰的系统源代码。这是第一次致使有志向的程序员或hacker才能阅读操作系统的源代码。在当时,这些源代码是软件商们仍然当心守护着的秘密。
GNU计划
软件产业在70年代成就了两位针锋相对的领袖人物,来自耶鲁学院的比尔·盖茨和RichardM.Stallman。后者宣布了Copyright(版权)时代的到来,并建立了谷歌帝国的辉煌;前者于1984年成立自由软件体系GNU,制定普遍公用版权合同(GeneralPublicLicense,简称GPL),明天Linux的成功就得益于GPL合同。
所有GPL合同下的自由软件都遵守着RichardM.Stallman的"Copyleft"(非版权)原则:即自由软件容许用户自由拷贝、修改和销售,并且对其源代码的任何更改都必须向所有用户公开。
GNU计划和自由软件基金会FSF(theFreeSoftwareFoundation)是由RichardM.Stallman于1984年一手创立的。致力开发一个类似UNIX而且是自由软件的完整操作系统:GNU系统(GNU是"GNU'sNotUnix"的递归简写,它的发音为"guh-NEW")。
各类使用Linux作为核心的GNU操作系统正在被广泛的使用。其实这种系统一般被叫做"Linux",并且Stallman觉得,严格地说,它们应当被称为GNU/Linux系统。
到上世纪90年代初,GNU项目早已开发出许多高质量的免费软件,其中包括有名的emacs编辑系统、bashshell程序、gcc系列编译程序、gdb调试程序等等。这种软件为Linux操作系统的开发创造了一个合适的环境。这是Linux才能诞生的基础之一,以至于目前许多人都将Linux操作系也称为“GNU/Linux”操作系统。
POSIX标准
POSIX(PortableOperatingSystemInterfaceforComputingSystems)是由IEEE和ISO/IEC开发的一簇标准。该标准是基于现有的UNIX实践和经验,描述了操作系统的调用服务插口。用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植和运行。它是在1980年初期一个UNIX用户组(usr/group)的初期工作基础上取得的。该UNIX用户组原先企图将AT&T的SystemV操作系统和BerkeleyCSRG的BSD操作系统的调用插口之间的区别重新调和集成。并于1984年订制出了/usr/group标准。
关于POSIX标准的制订过程:略。
在90年代初,POSIX标准的制订正处在最后投票敲定的时侯,那是1991-1993年间。此时正是Linux刚才起步的时侯,这个UNIX标准为Linux提供了极为重要的信息,致使Linux才能在标准的指导下进行开发,并才能与绝大多数UNIX操作系统兼容。在最初的Linux内核源代码中(0.01版、0.11版)就早已为Linux系统与POSIX标准的兼容做好了打算工作。在Linux0.01版内核的/include/unistd.h文件中就早已定义了几个有关POSXI标准要求的符号常数,并且Linus在注释中已写道:“OK,这似乎是个玩笑,但我正在着手研究它呢”。
Internet网路
Internet是linux开发、交流、发展的信息和资源的交流平台。
三、Linux的诞生
在1981年,IBM公司推出了遍及全球的微型计算机IBMPC。在1981-1991年间,MS-DOS操作系统仍然是微型计算机操作系统的主宰。此时计算机硬件价钱其实逐年增长,但软件价钱一直居高不下【a】。
当时Apple的MACs操作系统可以说是性能最好的,而且其天价促使没人就能轻易紧靠【b】。
当时的另一个计算机技术阵营就是UNIX世界。并且UNIX操作系统就除了是价位高昂的问题了。为了寻求高收益率,UNIX经销商们把价钱抬得极高,PC小用户根本不能紧靠它。以前一度收到BellLabs许可而能在学院中用于教学的UNIX源代码也仍然被当心地守卫着不许公开【c】。
对于广大的PC用户,软件行业的小型供应商们仍然没有给出有效的解决这个问题的手段。
正在此时,出现了MINIX操作系统【d】,而且有一本描述其设计实现原理的书同时发行。因为AST的这本书写的十分详尽,而且表述得有条有理linux操作系统介绍,于是几乎全世界的计算机爱好者都开始看这本书,以期能理解操作系统的工作原理。
其中也包括Linux系统的创始者LinusBenedictTorvalds。当时(1991年),LinusBenedictTorvalds是悉尼学院计算机科学系的二年级中学生,也是一个自学的计算机hacker。这个21岁的法国年青人喜欢摆弄他的计算机,测试计算机的性能和限制。但当时他所缺少的就是一个专业级的操作系统。
在同一年间,GNU计划早已开发出了许多工具软件。其中最受期待的GNUC编译器早已出现,但还没有开发出免费的GNU操作系统。虽然是教学使用的MINIX操作系统也开始有了版权,须要选购能够得到源代码。尽管GNU的操作系统HURD仍然在开发之中【e】,但在当时看来不能在几年内完成。
(早已有了【a-e】,而且还没有一个os)
为了能更好地学习计算机知识(其实也只是为了兴趣),Linus使用新年节的压岁钱和按揭订购了一台386兼容笔记本,并从英国邮购了一套MINIX系统软件。就在等待MINIX软件期间,Linus认真学习了有关Intel80386的硬件知识。为了能通过Modem拔号联接到中学的主机上linux操作系统介绍,他使用汇编语言并借助80386CPU的多任务特点编制出一个终端仿真程序。随后为了将自己一台旧式笔记本上的软件复制到新笔记本上,他还为软驱驱动器、键盘等硬件设备编制出相应的驱动程序。(他编撰了一些os相关的程序)
通过编程实践,并在学习过程中认识到MINIX系统的众多限制(MINIX其实挺好,但只是一个用于教学目的简单操作系统,而不是一个强有力的实用操作系统),但是通过上述实践Linus早已有了一些类似于操作系统硬件设备驱动程序的代码,于是他开始有了编制一个新操作系统的看法。(一个影响深远的看法诞生了)
从1991年4月份起(lettakethistimeasthestart),他通过更改终端仿真程序和硬件驱动程序,开始编制起自己的操作系统来。开始,他的目的很简单,只是为了学习Intel386体系结构保护模式运行方法下的编程技术。但后来Linux发展却完全改变了本意。(起始的时间)
按照Linus在comp.os.minix新闻组上发布的消息,我们可以晓得他逐渐从学MINIX系统阶段发展到开发自己的Linux系统的过程。(具体了解的来源)
Linus第1次向comp.os.minix投递消息是在1991年3月29日。所发贴子的题目是“gcconminix-386doesn'toptimize”,是有关gcc编译器在MINIX-386系统上运行优化的问题(由此可知,Linus在1991年早期就早已开始深入究了MINIX系统,并在这段时间有了改进MINIX操作系统的思想。在进一步学习MINIX系统以后,这个看法逐渐演弄成想重新设计一个基于Intel80386体系结构的新操作系统的构思。(思想的转变)
他在回答有人提出MINIX上的一个问题时,所说的第一句话就是“阅读源代码”(“RTFSC(ReadtheF**ingSourceCode:-)”)。他觉得答案就在源程序中。这也说明了对于学习系统软件来说,我们不光须要懂得系统的工作基本原理,还须要结合实际系统,学习实际系统的实现方式。由于理论虽然是理论,其中省略了许多枝节,而这种枝节问题其实没有太多的理论浓度,但却是一个系统必要的组成部份ubuntu linux,就像麻雀头上的一根羽毛。(实践的重要意义)
(以下是根据时间次序进行介绍)
从1991年4月份开始,Linus几乎耗费了全部时间研究MINIX-386系统(Hackingthekernel),但是尝试着移植GNU的软件到该系统上(GNUgcc、bash、gdb等)。并于4月13日在comp.os.minix上发布说自己早已成功地将bash移植到了MINIX上,并且早已爱不释手、不能离开这个shell软件了。
第一个与Linux有关的消息是在1991年7月3日在comp.os.minix上发布的(其实,那时还不存在Linux这个名称,当时Linus脑袋里想的名称可能是FREAX,FREAX的英语含意是荒诞的、怪物、异想天开等)。其中透漏了他正在进行Linux系统的开发,但是早已想到要实现与POSIX兼容的问题了。
在Linus另一个发布的消息中(1991年8月25日comp.os.minix),他向所有MINIX用户寻问“Whatwouldyouliketoseeinminix?”(“你最想在MINIX系统中看到哪些?”),在该消息中他首次透漏出正在开发一个(免费的)386(486)操作系统,而且说只是兴趣而已,代码不会很大,也不会象GNU的那样专业。希望你们反馈一些对于MINIX系统中喜欢什么特色不喜欢哪些等信息,但是说明因为实际和其它一些缘由,新开发的系统刚开始MINIX很象(但是使用了MINIX的文件系统)。而且早已成功地将bash(1.08版)和gcc(1.40版)移植到了新系统上,并且在过几个月就可以实用了。最后linux更改ip地址,Linus声明他开发的操作系统没有使用一行MINIX的源代码;并且因为使用了386的任务切换特点,所以该操作系统不好移植(没有可移植性),但是只能使用AT硬碟。对于Linux的移植性问题,Linus当时并没有考虑。并且目前Linux几乎可以运行在任何一种硬件体系结构上。
到了1991年的10月5日,Linus在comp.os.minix新闻组上发布消息,即将向外宣布Linux内核系统的诞生(Freeminix-likekernelsourcesfor386-AT)。这段消息可以称为Linux的诞生宣言,但是仍然广为留传。因而10月5日对Linux社区来说是一个特殊的日子,许多后来Linux的新版本发布时都选择了这个日子。所以RedHat公司选择这个日子发布它的新系统也不是碰巧的。(形成的时间)