GNU计划,又称革奴计划,是由Richard Stallman在1983年9月27日公开发起的。它的目标是创建一套完全自由的操作系统。Richard Stallman最早是在net.unix-wizards新闻组上公布该消息,并附带一份《GNU宣言》等解释为何发起该计划的文章,其中一个理由就是要“重现当年软件界合作互助的团结精神”。
GNU是“GNU's Not Unix”的递归缩写。Stallman宣布GNU应当发音为Guh-NOO以避免与new这个单词混淆(注:Gnu在英文中原意为非洲牛羚,发音与new相同)。UNIX是一种广泛使用的商业操作系统的名称。由于GNU将要实现UNIX系统的接口标准,因此GNU计划可以分别开发不同的操作系统部件。GNU计划采用了部分当时已经可自由使用的软件,例如TeX排版系统和X Window视窗系统等。不过GNU计划也开发了大批其他的自由软件。
为保证GNU软件可以自由地“使用、复制、修改和发布”,所有GNU软件都在一份在禁止其他人添加任何限制的情况下授权所有权利给任何人的协议条款,GNU通用公共许可证(GNU General Public License,GPL)。这个就是被称为“反版权”(或称Copyleft)的概念。
1985年Richard Stallman又创立了自由软件基金会(Free Software Foundation)来为GNU计划提供技术、法律以及财政支持。尽管GNU计划大部分时候是由个人自愿无偿贡献,但FSF有时还是会聘请程序员帮助编写。当GNU计划开始逐渐获得成功时,一些商业公司开始介入开发和技术支持。当中最著名的就是之后被Red Hat兼并的Cygnus Solutions。
到了1990年,GNU计划已经开发出的软件包括了一个功能强大的文字编辑器Emacs,C语言编译器GCC,以及大部分UNIX系统的程序库和工具。唯一依然没有完成的重要组件就是操作系统的内核(称为HURD)。
1991年Linus Torvalds编写出了与UNIX兼容的Linux操作系统内核并在GPL条款下发布。Linux之后在网上广泛流传,许多程序员参与了开发与修改。1992年Linux与其他GNU软件结合,完全自由的操作系统正式诞生。该操作系统往往被称为“GNU/Linux”或简称Linux。(尽管如此GNU计划自己的内核Hurd依然在开发中,目前已经发布Beta版本。)
许多UNIX系统上也安装了GNU软件,因为GNU软件的质量比之前UNIX的软件还要好。GNU工具还被广泛地移植到Windows和Mac OS上。
GPL:GNU通用公共许可证(GNU General Public License) LGPL:GNU较宽松公共许可证 (GNU Lesser General Public License),旧称GNU Library General Public License (GNU 库通用公共许可证); GFDL : GNU自由文档许可证(GNU Free Documentation License)的缩写形式。
它要求软件以源代码的形式发布,并规定任何用户能够以源代码的形式将软件复制或发布给别的用户。 如果用户的软件使用了受 GPL 保护的任何软件的一部分,那么该软件就继承了 GPL 软件,并因此而成为 GPL 软件,也就是说必须随应用程序一起发布源代码。 GPL 并不排斥对自由软件进行商业性质的包装和发行,也不限制在自由软件的基础上打包发行其他非自由软件。
由于GPL很难被商业软件所应用,它要求调用它的库的代码也得GPL,全部开放,并且一同发布,不能直接连接。所以后来GNU推出了LGPL许可证,如果你准备在你的项目中使用Linux,那么你必须了解的两个上述两个两个许可证,GPL与LGPL
GPL和LGPL,都是自由软件基金会建立的,所以它们之间非常类似,它们都具备Copyleft的重要特性.
在GPL与lgpl许可证保护下发布源代码的结果很相似,对旧代码所做的任何修改对于想知道这些代码的人必须是公开的,唯一真正的不同之处在于私人版权代码是否可以与开放源代码相互连接,LGPL允许实体连接私人代码到开放源代码,并可以在任何形式下发布这些合成的二进制代码。只有这些代码是动态连接的就没有限制。(使用动态链接时,即使是程序在运行中调用函数库中的函数时,应用程序本身和函数库也是不同的实体)
由于AT&T在V6版的时候,他们并不知道拿UNIX能干什么。所以AT&T就向外界(特别是大学)免费发放UNIX及其源代码。其中有一个不得不提的大学:美国加州大学的伯克利(Bekely)分校。到了70年代末,也就是在V7版的时候,AT&T认识到UNIX的价值,成立了UNIX系统实验室(Unix System Lab)。1993年初被Novell收购。Novell于1993年末将UNIX这个注册商标转让给X/Open组织来继续发展UNIX。
Open Group是一个协调各大公司利益,设计和推广大家都能接受的技术方案,引导学术研究、消费者使用习惯的一个组织.
同时AT&T也宣布对UNIX产品拥有所有权,对UNIX强制实施版权。几乎同时,加州大学伯克利分校计算机系统研究小组(CSRG,Computer Science Research Group)对UNIX进行研究,增加了很多当时非常先进的特性,很多其它大学和商业机构,都希望能得到CSRG改进的UNIX系统。
因此CSRG中的研究人员把他们的UNIX组成一个完整的UNIX系统-BSD UNIX(Berkeley Software Distribution UNIX),向外发行。BSD很自然成为第2个主要“UNIX”版本。当然,除了BSD之外,还有很多UNIX的厂商也纷纷出现,但他们大多只是在AT&T UNIX或DSB UNIX基础上进行一些修改,这样就形成了UNIX的许多变体。
从此,我们习惯上就把这种UNIX的变体称为类UNIX操作系统,或者干脆为UNIX操作系统。因为发展到现在,UNIX已经演变为操作系统的一个种类了。
从1977年到1982年,AT&T把这些变体综合成一个单一的系统,这就是UNIX System Ш。1983年又宣布了System V。(System 4只是实验室内部使用,并没有公布)。
到了80年代末,AT&T放弃了System X的命名方式,对于其以后的版本,记为System V Release X(缩写为SVR X)如:SVR3、SVR4等。其中SVR4就是AT&T UNIX 和BSD UNIX完美结合的产物。
同时,BSD的程序员也积极改进AT&T的源代码,BSD UNIX被很多商业厂家采用,成为很多商用UNIX的基础,同时很多研究项目也是以BSD UNIX为研究系统,例如美国国防部的项目─ARPANET(Advanced Research Projects Agency NET,原来是军事网络,后来发展成为了今天的Internet)。
几年后,在作了许多修改工作之后,伯克利大学注意到原来的贝尔实验室的Unix源码已经所剩无几,不需要一个源码许可证(由于AT&T的商业控制,所有使用AT&T源代码的单位都需要AT&T发布的源码许可证)了,于是就自己推出了一个操作系统:BSD/386,由伯克利软件设计公司(BSDI,Berkeley Software Design, Inc.)生产。
到了1992年的时候,UNIX系统实验室(USL)指控BSDI──在没有得到许可的情况下发布自己的UNIX版本 ,违反了AT&T的许可权,并进一步指控伯克利计算机系统研究组泄漏了UNIX的商业机密,虽然此时的4.3BSD(4.3BSD几乎和BSD/386相同)中来自AT&T UNIX的代码已经不足10%。一场旷日持久的诉讼开始了,法庭最终宣判BSD/386不得再发布。
然而,此时的宣判已经意义不大了,因为4.4版的BSD的已经准备就绪,我们称之为4.4BSD-Lite。这个版本不包含任何的AT&T源代码。从这个版本开始,BSD已经不在再需要AT&T的源代码许可证了。BSD可以任意发放自己的源代码。但是无论UNIX的版本如何复杂,目前为止,UNIX的版本主要还是“AT&T发布的System V”与“美国加州大学伯克利分校发布的BSD”。现在市场上的UNIX也基本上都是这两大流派的变体和衍生物。
在讲UNIX和linux两者关系之前,我们先了解一下Minix。
Minix最初是由Andrew Tanenbaum教授在4.3BSD的基础上,但不通过修改4.3BSD的源代码而是白手起家几乎一个人完成了12000行C语言程序的编写工作。
它的特点功能简单、易懂可以在8086上运行(后来也能在80386上运行),当然我们称它为UNIX操作系统。但这个Minix的功能也非常的有限,几乎没什么实用价值,但它能很好地作为教学使用。后来网上很多人给Tanenbaum教授寄来了改进,可是Tanenbaum教授没有接受。他想保持Mnix小而简单的特性。从它的名字中不难看出,Minix是一个迷你型的操作系统。
PS: Minix 宝刀不老,推出了第三个全新版本,http://www.minix3.org/
读到这里,大家应该清楚UNIX和Linux的关系了:
可以总结出:Minix是linux的父亲,而UNIX则是linux的祖父了。虽然UNIX和linux的源代码完全无关,可是linux中的许多特性和UNIX有很多相等之处。
如:
1.Linux 采用了 SVR4 的进程间通信(IPC)机制:共享内存、消息队列、信号灯
2.Linux 支持 BSD Socket 网络编程接口 3.许多 Linux 发行版采用 SysV init 机制,支持运行级别
所以我们认为linux是个起源于UNIX操作系统,但其实这时候的Linux(由林纳斯·托瓦兹开发的)并不是一个完整的操作系统,而仅仅是一个类Unix内核。
GNU计划始于1984年,终极目标是完成一套基于自由软件的完整作业操作系统。到1991年Linux的第一个版本公开发行时,GNU计划已经完成除了操作系统内核之外的大部分软件,其中包括了一个壳程序(shell),C语言程序库以及一个C语言编译器。林纳斯·托瓦兹及其他早期Linux开发人员加入了这些工具,而最终完成了Linux操作系统,因此Linux又被称为GNU/Linux。
| 系统类别 | 描述 | 代表人物 |
|---|---|---|
| UNIX | 少林正宗,功夫高深,招式难度高 | 扫地僧,乔峰 |
| Linux | 源于少林,但精通百家拳,取长补短,不拘于何门何派 | 方世玉(方世玉外公是少林俗家弟子),黄飞鸿 |
| FreeBSD | 武当派,出自少林,但不拘于少林武术,独创一派 | 张三丰 |
具体请参见: ChinaunixWiki
从技术的角度来说,BSD的核心技术出自名门名家,代码质量更有保证,我更喜欢它。但是正是由于这场持久的诉讼,持续时间从1992~2001.9月近10年时间,同时这段时间也是美国及全球互联网蓬勃发展的大好时光,也正是Linux从诞生到通过互联网逐渐强壮的10年,Linux已经变得非常强壮而有活力,这些优点让FreeBSD失去了优势,试想一下,如果没有这10年的浪费,现在是否应该就是BSD的天下呢?
FreeBSD是一个宁静的家园,但是这样的宁静太安静了点,这样的宁静也包含着困惑。相反Linux世界充满着活力,发展也是日新月异。如果你所寻找的是兴奋和创新的地方,那么毫无疑问Linux就是你所向往的世外桃源。