GNU项目在当时的首要目的是创立一个类Unix的操作系统,当然操作系统不仅仅有内核啦,还包含一些底层的基本应用程序,如编译器,链接器,汇编器,文本编辑器,还有很多API(ApplicationProgrammingInterface,应用程序编程接口是一些预先定义的函数,目的是提供应用程序与开发人员基于某软件或硬件得以访问一组例程的能力,而又无需访问源码,或理解内部工作机制的细节)等。
自由的软件意味着源代码必须公开。例如Linux是一个自由的操作系统,我们在网上可以搜索到其所有版本的源代码。而相反,Windows和MacOS则不是自由的,而是私有的,它们的源代码你是找不到的,不然微软和苹果就要疯了。Windows和MacOS这两个操作系统就有点像可口可乐,我们可以享用,但谁也不知道可口可乐的配方。对于不开源的软件,我们无法修改其源代码(源代码就像配方对吗),也不知道内部运作机制。
自由的软件大部分时候是免费的,但也可以复制,修改和出售。
自由软件的拥护者认为:如果开放源代码,可以使软件得到多方协助,更新速度更快。
自由运动的口号是:团结就是力量(我党的真知灼见如此高瞻远瞩)。
LinusTorvalds霸气侧漏
1991年,LinusTorvalds(李纳斯·托沃兹),今天在编程领域应该无人不知,无人不晓了吧,就是Linux操作系统(严格地说是Linux内核)的作者。当时是芬兰的赫尔辛基大学的一位学生,他决定在自己的业余时间编写一个类Unix的操作系统(内核),最终还真给他开发出了1.0版。
Linux这个名字可以说是Linus和Unix的合并,也可以说是LinuxIsNotUnix的递归缩写。下图是Linus的照片:
正如GNU有它的吉祥物,一只牛羚。Linux也有它的吉祥物:一只名叫Tux的萌萌哒雄性企鹅(爷们,24K纯滴)。Tux在英语里是燕尾服(正式名称是男士无尾半正式晚礼服)的意思,企鹅黑不溜秋的后背是不是很像一件燕尾服呢?而且有点神似Linus大叔。
关于这个吉祥物还有一个真实的典故,那时候为Linux系统设计吉祥物的画家征求广大意见,其他人提议模仿其他软件,用一些霸气的吉祥物,比如鲨鱼,鹰之类。最后LinusTorvalds说:我以前在澳大利亚被一只企鹅咬过,我觉得企鹅是很有趣的生物(简直是逗x啊,此邮件目前还保留着)。所以最后Linux的吉祥物就定为了企鹅,还是很可爱的。事实证明,Linus的决定并没有错,这只呆萌的企鹅不知道萌化了多少程序员的心。至少小编对其喜爱有加。
那么Linux和GNU项目有什么联系呢?
好问题。
可以说这两个项目是互补的:在1991年Linus释出Linux的第一个版本时,GNU项目已经创建了不少操作系统的外围软件了,例如:拷贝文件的程序(cp命令),删除文件的程序(rm命令)文本编辑器(Emacs),编译器(GCC),调试器(GDB),等一系列的程序,但是还没有自己的内核(Kernel),而Linux的出现(Linus其实就是写了一个类Unix的内核,然后移植成功了一些GNU的程序)。后来完善Linux的工作交给了Linus和广大开源社区的黑客们。他们一直兢兢业业,才有了今天Linux的辉煌。所以不是Linus一个人的功劳,他是站在开源社区的巨人肩膀上的芬兰小毛孩子。
所以说,GNU项目(开源的各种程序)+Linux(操作系统内核)=GNU/Linux这一个完整的操作系统。
生活在非洲大草原上的牛羚和象征芬兰冰天雪地的企鹅,相得益彰,冰火交融,成就了一个传奇。(只是因为在人群中多看了你一眼...)
来理清一下思路:
《操作系统的核心称为内核,但内核并不就等于操作系统,内核提供系统服务,比如文件管理、虚拟内存、设备I/O等。除内核以外,在应用软件与内核之间通常还有些作为中间件的API,可以供应用程序调用,还包含一些基本的程序,例如文本编辑器,编译器,外壳程序(shell,如常用的Bash),等。
单独的Linux内核是没办法工作的,必须要有GNU项目的众多应用程序来给它添砖加瓦。你可以想象内核就有点类似房屋的根基(钢筋混凝土),周边的基本应用程序就相当于房屋的各种设施,这样一幢房子才可以提供不同的人或动物(第三方应用程序,例如QQ,迅雷等)来使用。》
因此,Linux的官方称谓应该是GNU/Linux,但是这样的名字有点复杂,发音也不容易,所以一般我们都用简称:Linux。
约定:下面的课程中,如果是指Linux内核,那么小编会使用Linux内核;如果是指GNU/Linux这个操作系统整体,那么小编会使用Linux。
用一张图来总结各个系统的关系吧:
现在我们应该对全球三大最常用的桌面操作系统(Windows,Linux和MacOS)的缘起有了一定认识了吧。
MacOS和Linux都是基于Unix,Unix可以说是它们的祖先。而Windows的祖先是DOS,虽然我们目前使用的大部分Windows版本是基于革命性的WindowsNT内核(可以阅读《观止-微软创建NT和未来的夺命狂奔》这部相当精彩的书,小编那时看得热血沸腾)。
我们说MacOS和Linux基于Unix,只是说他们复刻了Unix的运行模式。源代码是基本不同的,特别是Linux的内核,完全是Linus从零开始写的,虽然很多代码类似Unix。而GNU项目的很多程序也和Unix的类似,连名字都一样,例如cp命令,rm命令,mv命令等。
说了这么多,希望读者朋友不要嫌小编啰嗦(当然是有点啰嗦的...咳咳),但是如此苦口婆心(人家是纯爷们好吗...24K的)只是为了让大家心里对这些基本概念有个大体的框架,这样后续的课程就比较容易理解了。
不同的Linux发行版
Linux发展到今天,已经是一个相当复杂和丰富的操作系统了,其大部分源代码还是GNU项目的。
因为是开源自由的,所以Linux不像Windows那么死板,你可以自己定制属于自己的Linux系统,只要你够厉害,可以自己裁裁剪剪,修修改改Linux的源代码。
不过也正因为如此,一些初学者就有点头大了,网上一搜Linux,版本那么多,用哪一个内核版本呢?然后安装哪些应用程序呢?而且安装方法又不同。。。
这都是令到普通用户作难之处。相比之下,Windows的选择和安装就简单很多。
为了简化用户安装的过程,以及提供一些基本的软件,例如浏览器,通讯软件,终端,绘图软件,文本编辑器,等等,产生了不少的Linux发行版,这些Linux的操作系统可以说是一整套使用环境:有内核,有API,有各种预装的应用程序。
这种发行版的概念在Windows可以说并没有,虽然我们有Win7家庭版和Win7旗舰版,但是不太一样。
不同的Linux发行版之间主要区别如下:
安装方法不一样:有的复杂,有的简单
安装应用程序的方式不一样:如果设计得好,那么一个Linux发行版安装起应用程序来是非常方便的,比Windows下简单快捷多了。我们之后的课程会看到
预装的应用程序不一样:就好比Windows有预装的软件,比如IE浏览器,媒体播放器(WindowsMediaPlayer)等,不同的Linux发行版也有不同的预装软件
可以把Linux的不同发行版想象成拥有同样核心(Linux的内核在Linux发行版上几乎是差不多的),而有不同装饰的摩登女郎。
不同的Linux发行版
全球有很多Linux的发行版,五花八门,而又都是免费的(也有个别版本收费,比如RedHat的企业版),很难选择啊。我们接下来简单介绍最常见的Linux发行版,然后小编会为你做最好的选择。
RedHat:国内,乃至是全世界的Linux用户所最熟悉、最耳闻能详的发行版想必就是RedHat了。性能稳定,老牌的Linux发行版。收费的是RedHatEnterpriseLinux(RHEL,RedHat的企业版),而正统的RedHat版本早已停止技术支持,最后一版是RedHat9.0。于是,目前RedHat分为两个系列:由RedHat公司提供收费技术支持和更新的RedHatEnterpriseLinux,以及由社区开发的免费的FedoraCore(也就是目前很流行的Fedora)。
Mandriva:最早由GarlDuval创建并在1998年7月发布。以前国内刚开始普及Linux时,Mandrake非常流行。说起Mandrake的历史,其实最早Mandrake的开发者是基于Redhat进行开发的。Redhat默认采用GNOME桌面系统,而Mandrake将之改为KDE。而由于当时的Linux普遍比较难安装,不适合第一次接触Linux的新手,所以Mandrake还简化了安装系统。
SUSE:德国最著名的Linux发行版,在全世界范围中也享有较高的声誉。SUSE自主开发的软件包管理系统YaST也大受好评。SUSE于2003年年末被Novell收购。
Debian:最早由IanMurdock于1993年创建。可以算是迄今为止,最遵循GNU规范的Linux系统。Debian系统分为三个版本分支(branch):stable,testing和unstable。
Gentoo:最初由DanielRobbins(前StampedeLinux和FreeBSD的开发者之一)创建。Gentoo的出名是因为其高度的自定制性:因为它是一个基于源代码的(source-based)发行版。尽管安装时可以选择预先编译好的软件包,但是大部分使用Gentoo的用户都选择自己手动编译。
Slackware:由PatrickVolkerding创建于1992年。算起来应当是历史最悠久的Linux发行版。曾经Slackware非常的流行,但是当Linux越来越普及,用户的技术层面越来越广(更多的新手)后,Slackware渐渐的被新来的人们所遗忘。
MEPIS:由WarrenWoodford在2003年建立。MEPIS虽然刚建立不久,但是迅速的传播在Linux用户间。简单来说,MEPIS是一个集合了DebianSid和Knoppix的产物。用户即能将之当作LiveCD使用,也能使用常规的图形界面进行安装。
Xandros:建立在已经成为历史的CorelLinux之上。当初CorelLinux的公司由于财政上的困难,被迫终止了CorelLinux的开发,而Xandros适时的将CorelLinux部门买下,于2002年10月推出全新的XandrosDesktop。Xandros的卖点在于极其简单的安装和使用。
FreeBSD:首先要强调的是:FreeBSD不是一个Linux系统!因为FreeBSD的用户也相当多,其许多特性都与Linux相类似。事实上,Linux和BSD(BerkeleySoftwareDistribution)均是UNIX的演化分支。并且,Linux中相当多的特性和功能(比如用于配置DNS的Bind软件)都是取自于BSD的。而FreeBSD便是BSD家族中最出名,用户数量最多的一个发行版。
Debian这个Linux发行版
我们会把精力集中在Debian这个Linux发行版上,因为它算是最符合开源精神的发行版了,也是最符合GNU标准的,是由开源社区维护。上述不少的Linux发行版都是公司来维护的。
Debian如此成功,所以继承Debian,又出现了不少Linux发行版:
Knoppix:由德国的KlausKnopper开发的Knoppix,是一个基于Debian的发行版。Knoppix严格算起来是一款LiveCDLinux,所谓的LiveCD就是整个操作系统都在一张光盘上,只要开机从光盘启动,就能拥有一个完整的Linux系统!无需安装!
Skolelinux:是一份由DebianEdu项目制作的Linux分发版,作为DebianPureBlends分发版,其为Debian正式辅助项目,以提供全面配置好的学校网络环境和学校适用方案
Ubuntu:本课程所要使用的Linux发行版
等等
如果您觉得不够清楚,那么下图应该可以帮你理清思路:
Ubuntu这个Linux发行版
为什么我们要选择Ubuntu(发音:乌班图)作为本系列课程的Linux发行版呢?
有以下几个原因(小编不会坑你的,放心):
简便易用,适合普罗大众:现在有了Ubuntu手机就是明证。即使是对Linux初学者,Ubuntu系统也已经很简单易用了,除了命令行。Ubuntu这个名称来自非洲南部祖鲁语或豪萨语的ubuntu一词,意思是人性、我的存在是因为大家的存在,是非洲传统的一种价值观,类似华人社会的仁爱思想。
更新定期而频繁:每6个月就有一个新的Ubuntu版本,不会过时
使用者众多,支持社区很多,文档完整:使用一个软件(操作系统也是软件)最怕的就是社区支持不够,文档不全,遇到问题没处问。使用Ubuntu的你完全没有这类问题。全球有无数的Ubuntu用户可以给你提供技术支持。
标准化:Google的Android源代码的默认编译环境就是Ubuntu
总结
操作系统是你的电脑和应用程序之间的连接工具
Windows,MacOS和Linux是最常用的操作系统
Linux是开源的,即是说:Linux的源代码是开放的,所有人都可以看到。相反地,MacOS和Windows的源代码则是闭源的,我们不能看到它们的代码。
有很多不同的Linux变体,术语称为Linux发行版
在众多的Linux发行版中,Ubuntu是最流行的。它是Debian这个Linux发行版的大家族的一员,可以说是一个后继。Ubuntu将成为我们这个课程后续一直使用的Linux发行版。