Linux 历史初窥

| 分类 linux  | 标签 linux  历史 

周末无事,想简单复习一下《鸟哥的linux私房菜》。但是突然想起了一个困惑已久的问题:

什么是linux?它和UNIX究竟是什么关系?

刚学linux的时候着眼 于linux的使用,而没有关注过linux的来龙去脉。只是简单知道先有UNIX,然后linus开发了linux,仅此而已。仔细一想,亚历山大= =认真把第一章过了一遍,总算知道个大概了。。。。。

###一、计算机诞生

1946年2月14日诞生了世界上第一台电子数字计算机ENIAC(埃尼阿克)。随着纯手工走向自动化的发展,个人计算机PC也诞生了。

###二、UNIX历史

####1.Unics的诞生

早期的计算机并不像现在的个人计算机这么普遍,它可不是一般人碰的起的,除非是军事或者高科技,或者是高校的学术研究,否则真的很难接触到。而且那时候人机交互还停留在卡片打孔阶段。

然后经过改进,产生了键盘输入。这大大降低了输入成本。但是一个学校有一个主机、多个终端的情况下,多个用户轮流使用一段时间(单用户)是很悲催的事。然后MIT在20世界60年代开发了分时操作系统,跨时代的完成了多用户使用CPU,CPU通过时间片轮转算法同时提供多用户使用环境。

虽然MIT创造了一个伟大的奇迹,但是就算现金的主机也只能提供30台左右的终端使用。为了加强大型主机的功能,贝尔实验室/MIT/GE(通用电气)共同发起了“Multics”项目。这个项目的目的就是让大型主机可以同时提供300台以上的终端机连接使用。

不过由于各种问题,这个项目的进展缓慢(因为这是开创性的技术难题,所以没做出来也不能质疑3家顶尖实验室的人才)。后来,贝尔实验室考虑再三,退出了这个项目。

正是这次开发“Multics”项目的机会,让一些人有了灵感。Ken Thompson就是其中之一。喜感的是,Ken Thompson为了移植一套“太空旅游”的游戏,所以想开发一个Mini版本的“Multics”,本来他应该没这么多业余时间来搞这玩意的(拖家带口神马的,你懂的)。没想到1969年8月左右,他的妻儿探亲去了,于是孤独寂寞冷(随手一黑- -)的Ken Thompson有了一个月的空闲时间!必须开工啊~他吭哧吭哧写了4个星期,终于以汇编语言写出了一个内核程序,同时包括一些内核工具程序还有一个小的文件系统。该系统就是UNIX的原型。伤不起啊,他仅仅想移植一个游戏啊,有木有!因为好用,整个贝尔实验室都用。又因为这个系统是庞大的“Multics”的精简版本,于是这个系统被命名为“Unics”。

####2.C语言和UNIX的诞生

后来贝尔实验室的人发现,这个Unics太TM好用了啊。但是唯一的缺点就是汇编语言具有平台障碍,你用别的机器,就需要默默流泪改汇编,想死的心都有了!然后Ken和Ritchie合作,想把Unics改成更高级的程序编写的系统。虽然当时有B语言,但是B语言编译出来的内核性能不好。两人一怒,创造了C语言和C语言编写的UNIX。至此,光照千古的C和UNIX诞生,撒花~

因为高级语言和硬件联系不大,所以移植性很高。于是和伯克利大学合作开发。当时伯克利大学的Bill Joy取得UNIX源码后,修改成适合自己机器的版本后,又开发了一些工具软件和编译程序,并将之命名为Berkeley Software Distribution(BSD),然后Bill Joy创办Sun后,就以BSD作为商业UNIX版本进行营利。

因为UNIX移植性高,问题也来了。不同公司都根据UNIX开发了自己公司的UNIX商业版本。但是因为各家公司的硬件架构不同,所以开发出来的UNIX商业版本是没法在其他公司的机器上运行的。这时候AT&T由于商业的考虑,以及在当时现实环境的再三考虑下,特别提出了“不可对学生提供源码”的严格限制。

####3.伟大的1984年之一:x86架构的Minix操作系统诞生

毫无疑问,这个规定影响最大的就是学校里教授UNIX内核源码的老师了。于是AndrewTanenbaum教授在完全不看UNIX源码的情况下,用2年时间写了一个Minix(Mini的UNIX系统)!这个Minix有趣的地方在于它不是免费的,你必须通过磁盘/磁带购买,当然,会带有这个系统的源码。

####4.伟大的1984年之二:GNU项目与FSF基金会成立

Stallman在1984年发起的GNU项目,对于现今的自由软件风潮绝对有不可磨灭的地位。目前我们使用的很多自由软件,几乎都直接或间接受益于GNU这个项目。那么,stallman为什么要发起GNU项目呢?

原来stallman是一名黑客,当时的黑客指的是计算机技术高超的人。他们都乐于分享好用的软件,于是stallman想建立一个团队来编写一些好用的软件。但问题是他们使用的Lisp操作系统是MIT的专利,于是他找到了UNIX,虽然UNIX依旧是专利软件,但是架构上还是非常开放的,于是他开始把Lisp上写的工具软件移植到UNIX系统,并公布了源码

继而stallman想在UNIX系统中创建一个自由开放的环境,于是就酝酿出了GNU项目。只是当时只有stallman一个人在推广,聪明的stallman反其道而行之:既然操作系统太复杂,我就先写一些在UNIX上好用的软件扩大名气呗。于是干净利索的写出了Emacs…..跪了!然后stallman发现,虽然GNU项目有了知名度,但是能见度还是不够呀,他又想:无论什么软件,都得编译成二进制文件才能执行,那如果我写个牛逼的编译程序,那UNIX开发者写的程序都会使用我的编译程序了嘛。于是创建自由软件基金会(Free Software Foundation,FSF)请更多的工程师和志愿者来编写软件,然后就搞出了GNU C Compiler(GCC)……

总结一下stallman的成就,你就发现哪一个都是牛逼闪闪的:

  • Emacs
  • GNU C Compiler
  • GNU C Library
  • Bash Shell

####5.关于GNU项目

stallman相信编程最大的快乐就是开发好用的软件并得到用户的认可,但因为每个人的需求都不一样,所以提供特定的软件就有点尴尬。所以,提供源码,让需要的人改动一部分满足自己的需求就是一个美好的结局。而GNU就是为了这个目的而诞生的。同时,如果你将源码公布,全世界的程序员都会改进这个程序让它更好用,极大的提升了代码质量/功能。

当然,为了避免自己开发的软件被别人拿去当成商业软件卖钱,stallman和FSF决定挂上GPL的版权声明。所谓GPL就是General Public License,通用公共许可证。你如果把你开发的软件挂上GPL版权声明,就代表它是一个自由软件,那自由是什么呢?stallman认为GPL是Free的:

“Free software“is a matter of liberty, not price.To understand the comcept,you should think of “free speech”, not “free beer”.”Free sofrware” refers to the users’ freedom to run, copy, distribute, study, change, and improve the software.

所以,一个自由软件不能有下面的要求:

  • 修改授权:不能将一个GPL授权的自由软件在你修改后取消GPL授权
  • 单纯销售:不能销售自由软件 也就是说,你不同将大家辛辛苦苦开发出来的东西据为己有。但是,GPL的Free不是free beer,而是free speech。所以,很多人会觉得你既然遵从GNU项目,为啥还不是全部免费的呢?

这个涉及太多东西。简而言之,程序员辛辛苦苦开发一个好用的软件,如果全部免费,那么我连饭都吃不起,我还怎么优化?所以,自由和商业是可以共赢的。从这些大师身上真的可以学到很多东西,现在的我,也开始购买一些正版图书支持作者了:)

###三、Linux终于来了

敲了半天,终于来了啊。。。手都疼了= =额,继续:)

####1.linux产生

我们知道是linus开发了linux,下面就八卦一下。linus的外祖父是赫尔辛基大学的统计学家,为了让小孙子学点东西,就让linus玩一些微计算机。后来linus考取赫尔辛基大学CS专业,因为当时UNIX满足不了linus的需求,他就想自己开发一个内核程序。但是,开发一个内核是非常难的,正巧上面提到的Minix出现了,linus发现这玩意正是自己想要的东西,只是过于简陋。可是等啊等,Minix死活不更新了。。。于是linus也怒了,通过使用GCC和bash,仿照Minix和自己的想法搞了一个新内核!它在BBS上发布了这个版本,这个版本另一个伟大之处在于linus考虑了兼容性的问题,他使用了POSIX标准。因为UNIX也遵守了POSIX标准,所以linux很容易就与UNIX兼容共享互有的软件了。这导致linux的使用率大增!

####2.linux发展壮大

现在看来,stallman对于linux的产生有巨大的作用。如果他没开发GCC和bash这样好用的软件,linus还真不一定能搞出来linux。而且在linux的发展壮大过程中,也是GNU项目起到了关键的作用。

刚开始是linus自己开发,用户反馈信息后linus自己鼓捣;但因为linus将linux挂了GPL版本声明,于是全世界的工程师一起改进linux,所以linux的进展神速!据说有用户想要虚拟内存,结果不到一星期推出的新版就有了这个功能!如此一来,linux便壮大起来了。

####3.linux distribution

关于linux的发行版,可以简单了解一下即可。

由于linux刚开始只是一个内核,后来慢慢加入了系统调用,成为了一个操作系统。但是对小白用户来说,使用命令行简直是要他们的命(就好像一些神人买了Mac立马格机装windwos….)。所以,一些公司嗅到了商业气息。他们将”内核+内核工具+常用软件“搞成一个傻瓜式安装包,就成为该公司独有的linux发行版了。

但因为linux有GNU的GPL授权,所以他们销售的linux发行版都可以从网络上下载。只是,不同公司在发行版中加入了本公司开发的软件,这些软件没有挂GPL授权,就可以不公开源码。这样你使用他们公司开发的软件遇到问题时,就可以付费让他们解决。而这也是目前很多linux商业版本的营利模式,著名的有red hat系列。

目前来说,常用的linux发行版有:

  • red hat
  • fedora
  • debian
  • ubuntu
  • centos

如果感兴趣,可以到它们的网站看看。至于怎样选择合适的版本,就看各位的需求了。到此为止,linux的历史就八九不离十了。累死鸟,去吃饭了。。。。


上一篇     下一篇