• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Linux系统的由来

系统初识 彭东稳 9年前 (2015-07-21) 28004次浏览 已收录 0个评论

Linux系统的由来

这就是现在的林纳斯·托瓦兹(Linus),他喜欢在演讲当中骂脏话,还有竖中指,而正是这样一位老男孩创建了伟大的开源操作系统Linux。一个热爱自由的黑客。你现在用的电子产品,或多或少都跟这个人做的操作系统有关系。好奇心:林纳斯·托瓦兹说,他的成功主要是因为他很懒,而且喜欢授权别人。这个认为娱乐价值高于商业的黑客,成了我们大部分科技产品的源头。如果不是这位讨厌知识产权的黑客,我们现在的电脑、手机、电视机,甚至是 ATM 机都不会是现在这个样子——事实上,如果没有林纳斯·托瓦兹(Linus Torvalds)创造的 Linux 操作系统,或许我们现在的电子设备的系统进展会更加四分五裂,发展也会慢很多。

 Unix操作系统的出现

现在让我穿越时空,回到还没有操作系统这个概念的时代。然后一点点地揭秘开源操作系统“Linux”的横空出世。在我们现代操作系统的前身就是批处理系统,当时没有操作系统概念,所有的程序都是在硬件上运行的,在一盘磁带机上表现为一个个的Job,也就是一个作业。这时候其实远远无法发挥我们硬件的能力,所以也就在这个时候,也就是1965年,有三个组织:分别是GE(通用电气)、美国AT&T的Bell实验室和麻省理工大学的人工智能实验室,三个组织联合起来做一个项目,就是研发一个多任务多用户的系统,这个系统大部分都是用汇编语言写成的。经过一段时间的努力,后来这个项目也都已经实现了一个系统的基本功能及多任务和多用户,由于体积庞大所以为这个系统取了一个名字叫“MULTICS”。这个项目进行到一定时间后,这个系统的基本功能都已经实现了,但是他们并没有有打算终止这个项目的意思,同时也失去了原本的目标,当时的GE和Bell都纷纷退出了这个项目只剩下麻省理工大学的人工智能实验室。但是当时Bell为了这个项目招收了大量的计算机工程师,而这个项目一撤,大量的人空闲下来了。其中有一个叫Ken(肯·汤普逊)的家伙它当时为Multics系统开发了一个游戏,叫“Space travel”,而这个游戏只能运行在Multics上,所以当Bell退出后,Ken就无法再使用Multics了,于是它找到了Bell实验室的领导想申请一台主机重新研究,来跑他的“Space travel”游戏。这个时候已经到了1972左右。

在当时生产计算机的公司除了IBM之外还有一个公司叫DEC(数字设备公司),DEC公司有一款小型机叫PDP主机,Ken想让公司买一台DEC公司的最新主机PDP-11,当时大概几十万美元,公司当然没有答应下来。但是后来Ken就在Bell实验室发现了一台PDP-7主机,性能很低,非常破的机器,它就用PDP-7来研究Space travel游戏。但是程序必须要依赖系统才能工作,不得已Ken就模仿Multics开发了一个最简单的类Multics系统,起名为Unics。没想到它的游戏还真的运行起来了。Ken这个家伙就在Bell实验室到处宣扬他的游戏,而让他更郁闷的是没人对他的游戏感兴趣而是对这个系统感兴趣,由于都是使用汇编写的无法在别的机器上运行,只能在PDP-7上工作。这里要明白一点程序的运行跟CPU是密切相关的,比如你在64位CPU上开发的程序而你在32位CPU上是无法运行的。每一个厂商生产的CPU都有自己的设计结构及微码(理解为汇编),比如AMD和Intel。有计算机基础的同学应该都知道CPU提供有非常多的针脚,每一个针脚都是一个特定的功能,而程序员就是需要根据CPU提供的微码进行编程,从而调用CPU针脚功能。所以一个使用汇编语言在PDP-7主机写的Unics是无法在别的主机上跑起来的,除非这两个主机CPU一模一样。

后来在同事的要求之下Ken不得不把他的这个类Multics程序移植到别的系统上,也就是依照现有的Unics重写,后来也成功运行在别的主机平台了。接下来一个偶然的机会Bell要研发一个项目叫智能排版系统,Ken借此机会说自己负责研发这个项目,因此也获得了PDP-11的使用权,从此鸟枪换炮就开始大力研发自己的Unics系统。因此此后一年他的这款系统风靡Bell实验室,后来这个项目也引起了它的另一个同事的注意,就是他的一个同事叫丹尼斯·里奇,他就负责一起跟Ken一块研究使用Unics。而Unics也被重新命名为Unics的谐音成Unix。那一年正是1970也称为Unix元年。

Ken和丹尼斯·里奇为了让自己的系统具有通用性不得不一次次移植自己的操作系统,改写自己的操作系统,这让他们很痛苦。所以丹尼斯·里奇决定使用一个比汇编语言更高级的语言,能够在多个平台上运行Unix的语言来重写Unix系统。但当时没有合适的语言,只有一个脚本语言叫BPBL(B语言)语言,很简单且由于是脚本语言性能很差。于是丹尼斯·里奇后来又对B语言这种脚本语言做了一次改进加入了变量、指针使其摇身一变成为了编译型语言,也就是如今大名鼎鼎的C语言,于是他们两个就用C语言重写了Unix系统。经过高级语言C语言改写后的Unix已经可以运行在不同的平台上了,但是这中间有一个问题就是虽然说是可以运行在不同的CPU平台上了,但是中间需要一个编译器把C语言写的Unix编译成对应平台能够执行的二进制执行格式即可。编译器也是一个程序,但是可以做的非常通用,把高级语言编写的程序根据平台编译成对应的二进制执行格式,这样一来不管是在PDP还是M6800的CPU上都可以运行Unix系统了。

在1974年,丹尼斯·里奇和Ken就把Unix通过论文发了出去,这一下引起了计算机界很多人的关注并都想索要Unix代码回去研究。而当时的Bell属于AT&T美国电话电报公司,而这个公司在当时被美国政府反垄断法下令除了电话跟电报以外不允许销售任何东西,并且还要无条件提供给他人。于是很多人得到了Unix源代码,这其中包括当时的圣巴巴拉大学和伯克利大学。再后来Ken在Bell休假期间又到了伯克利大学任教(美国福利是只要有贡献的公司或组织都可以有一年的带薪假),而这个学校有一个叫Bill Joy(后来的SUN公司CEO)组织了一个叫BSRG的Unix研究小组,并且开发出了类Unix的BSD(Berkeley Software Distribution,伯克利软件套件)系统,并且以商业化的形式卖了不少钱。比较著名的基于bsd改进二次发行版有HP公司的HP Unix、SUN公司的Solaris、IBM公司的AIX(都是买的Freebsd版权)。而这个时候Bell实验室就不高兴了,但又没办法,Bell不允许销售Unix。而再后来Bell实验室被Novell公司收购了,这个时候就不归AT&T公司了,所以Bell实验室也迫不及待地将Unix商业化(Bell的Unix系统为System V,V表示第5版),一个许可证买到4万美元,这在当时美国也没有多少公司可以买的起,不但如此Bell实验室还跟BSD打起了官司,讨论谁该卖谁不该卖,但这个官司一打就打了10年之久。鹬蚌相争渔翁得利,他俩谁也没有想到10年的时间成就了另外一个传奇,那就是Linux系统的崛起。

现在我们知道了计算机语言大概有这么三类:机器语言、汇编语言、高级语言(兼容汇编语言)。下面就说一说他们的区别与特点。

计算机语言分类

编写计算机程序所用的语言是人与计算机之间交换的工具,按语言对机器的依赖程度分为机器语言、汇编语言和高级语言。

① 机器语言(Machine Language)

机器语言是面向机器的语言,每一个由机器语言所编写的程序只适用于某种特定类型的计算机,即指令代码通常随CPU型号的不同而不同。它可以被计算机硬件直接识别,不需要翻译。一句机器语言实际上就是一条机器指令,它由操作码和地址码组成。机器指令的形式是用0、1组成的二进制代码串。

② 汇编语言(Assemble Language)

汇编语言是一种面向机器的程序设计语言,它是为特定的计算机或计算机系列设计的。汇编语言采用一定的助记符号表示机器语言中指令和数据,即用助记符号代替了二进制形式的机器指令。这种替代使得机器语言“符号化”,所以汇编语言也是符号语言。每条汇编语言的指令就对应了一条机器语言的代码,不同型号的计算机系统一般有不同的汇编语言。

计算机硬件只能识别机器指令,执行机器指令,对于用助记符表示的汇编指令是不能执行的。汇编语言编写的程序要执行的话,必须用一个程序将汇编语言翻译成机器语言程序,用于翻译的程序称为汇编程序(汇编系统)。

汇编程序是将用符号表示的汇编指令码翻译成为与之对应的机器语言指令码。用汇编语言编写的程序称为源程序,变换后得到的机器语言程序称为目标程序。

③ 高级语言

机器语言与汇编语言受机器限制费工费时,并且缺乏通用性,为解决此问题,人们努力创造一种独立于计算机的语言。从20世纪50年代中期开始到20世纪70年代陆续产生了许多高级算法语言。这些算法语言中的数据用十进制来表示,语句用较为接近自然语言的英文字来表示。它们比较接近于人们习惯用的自然语言和数学表达式,因此称为高级语言。高级语言具有较大的通用性,尤其是有些标准版本的高级算法语言,在国际上都是通用的。用高级语言编写的程序能使用在不同的计算机系统上。
但是,对于高级语言编写的程序计算机是不能识别和执行的。要执行高级语言编写的程序,首先要将高级语言编写的程序翻译成计算机能识别和执行的二进制机器指令,然后供计算机执行。

一般将用高级语言编写的程序称为“源程序”,而把由源程序翻译成的机器语言程序或汇编语言程序称为“目标程序”。把用来编写源程序的高级语言或汇编语言称为源语言,而把和目标程序相对应的语言(汇编语言或机器语言)称为目标语言。

计算机将源程序翻译成机器指令时,通常分两种翻译方式:一种为“编译”方式,另一种为“解释”方式。所谓编译方式是把源程序翻译成等价的目标程序,然后再执行此目标程序。而解释方式是把源程序逐句翻译,翻译一句执行一句,边翻译边执行。解释程序不产生将被执行的目标程序,而是借助于解释程序直接执行源程序本身。一般将高级语言程序翻译成汇编语言或机器语言的程序称为编译程序。

常见的CPU架构有哪些?

我们知道编程语言有计算机语言、汇编语言、高级语言(系统级语言和应用级语言)。然后语言越底层性能越好但使用难度越大,代码量也越大。如果高级语言编写的程序甚至汇编写的程序都需要通过编译器编译成对应机器CPU对应的二进制指令集处理方式。对于CPU而言只能处理01二进制,另外不同厂商的CPU内部设计和指令集都有所不同,比如说Intel生产的32位CPU叫X86系列,这个X86指的是PC兼容CPU,属于X86_32架构,简称X86架构;AMD 64位CPU也是X86系列,但属于X86_64架构;他们之间的二进制指令集和内部设计就完全不会相同,但注意一般CPU高版本都会兼容旧版本,比如64位操作系统在32位CPU上安装不了但32位系统可以安装在64位CPU上,因为64位向下兼容。这里说一个小插曲对于早期黑客级(黑客是指在某一个领域有特别突出的贡献和天赋的人)的玩家,他们通常会称64位CPU为AMD 64,包括你去下载Debian ISO包的时候不会发现有Intel64对应的ISO镜像,而是提供有amd64的ISO镜像,因为真正第一款X86系列的64位的CPU最早是由AMD公司研发出来的,后来Intel发现之后先假装自己也有了64位CPU,其实是后来才研发出来的。所以导致Debian系的发行版都以amd64命令,事实上他们都属于X86_64系列。

我们Linux操作系统是使用C语言外加汇编编写而成的,具有很好的可移植性。而这个可移植性是指,可以运行在X86系列CPU上,也可以运行在别的CPU架构上。但是前提就是需要通过编译器把Linux操作系统源代码编译成对应CPU架构可以执行的二进制程序,针对X86系列需要在X86主机上编译,针对其他平台也要进行重新编译。这些工作都需要一个编译器来完成,但是编译器(gcc编译器)是一个软件,它也需要安装在操作系统之上,那么问题来了。gcc编译器也是C语言写的,它也需要转换成对应平台的二进制可执行程序,谁来编译gcc呢?这就成了是先有鸡还是先有蛋的问题了。先不考虑这么绕,我们一般在下载ISO镜像时会让你选择对应平台的安装包,那就是别人针对特定平台编译好的,你直接安装你使用的平台下载镜像直接安装即可,但现在大多数都是使用X86架构CPU,除非移动设备使用的是 ARM架构CPU。当你系统安装完成后你也可以利用你现有的系统平台同样去安装现有的Gcc编译器,然后利用Gcc编译器你也可以去编译其他源程序软件了。Gcc会安装你的CPU架构编译出对应的二进制可执行程序了,当然你也可以选择交叉编译,比如编译出可以在ARM平台执行的程序。

X86与X64

X86是对基于intel处理器的系统的标准缩写。X与处理器没有任何关系,它是一个对所有*86系统的简单的通配符定义,是一个intel通用计算机系列的编号,也标识一套通用的计算机指令集合,由于早期intel的CPU编号都是如8086、80286来编号,由于这整个系列的CPU都是指令兼容的,所以都用X86来标识所使用的指令集合如今的奔腾,P2,P4,赛扬系列都是支持X86指令系统的,所以都属于X86家族。

这里的64位技术是相对于32位而言的,这个位数指的是CPU GPRs(General-Purpose Registers,通用寄存器)的数据宽度为64位,64位指令集就是运行64位数据的指令,也就是说处理器一次可以运行64bit数据。64bit处理器并非现在才有的,在高端的RISC(Reduced Instruction Set Computing,精简指令集计算机)很早就有64bit处理器了,比如SUN公司的UltraSparc Ⅲ、IBM公司的POWER5、HP公司的Alpha等。

64bit计算主要有两大优点:可以进行更大范围的整数运算;可以支持更大的内存。不能因为数字上的变化,而简单的认为64bit处理器的性能是32bit处理器性能的两倍。实际上在32bit应用下,32bit处理器的性能甚至会更强,即使是64bit处理器,目前情况下也是在32bit应用下性能更强。所以要认清64bit处理器的优势,但不可迷信64bit。要实现真正意义上的64位计算,光有64位的处理器是不行的,还必须得有64位的操作系统以及64位的应用软件才行,三者缺一不可,缺少其中任何一种要素都是无法实现64位计算的。

CPU常见架构(指令集)

1)ARM系列,属于移动硬件平台架构,是英国一家公司的,但这家公司非常神秘只设计芯片做知识产权而不做产品,真正生产是由三星,高通,华为所生产。

2)X86系列,现在我们使用的基本上都是X86结构的CPU,位宽有32位和64位(位宽越大性能越好),Intel和AMD都有做X86 CPU,但真正的64的CPU是AMD先开发的。

3)安腾系列,是Intel公司买HP公司的,当时AMD开发了64位CPU,Intel当时也急需一种64位架构的CPU,无奈就从HP收购了安腾CPU。但由于都是Intel公司,所以X86是兼容安腾的。

4)alpha系列,是HP公司收购了DEC公司的CPU。

5)Ultrasparc系列,是斯坦福大学设计的CPU,后来转让给SUN公司了,再后来Sun以被Oracle收购了。

6)Power系列,是IBM公司的CPU,也是世界上第一个双核芯、8核芯、64核芯等,CPU性能超强,当然价格也超贵,同时也是第一个超过4GHZ/s的CPU,现在CPU的制作工艺已经到了4GHZ/s以及到了瓶颈,只能往多核心发展了。

7)M68000系列,是摩特拉拉公司早期生产的CPU。

8)Power Pc系列,由于Power CPU性能非常好但价格非常贵,于是IBM和摩特拉拉和苹果共同生产的超强CPU,一般使用在小型机上。

但这些CPU架构中,我们最熟悉的就属于intel CPU配合Windows系统了,但现在这种格局以及在慢慢打破。自上个世纪80年代起,微软和英特尔狼狈为奸,而组成了所谓的Wintel联盟,即两家公司在PC产业内密切合作,以推动Windows操作系统在基于英特尔CPU的PC机上运行,那时Windows只要是Intel公司的CPU都支持,但对于alpha、Power这种性能强劲的CPU都是不支持的。自那时以来,Wintel联盟制定的一些技术规范,已成为PC产业事实上的标准,该联盟也因此在全球PC产业形成了所谓的“双寡头垄断”格局。微软一直都是这么干的,当年为了发展自己的IE浏览器,尽然把IE浏览器绑定在Windows系统中,从而慢慢侵蚀了网景浏览器,可能现在我们都没有见过网景浏览器,但我们可以知道的就是SSL协议就是网景公司的。所以我们要清楚操作系统不是随便跑在硬件架构上的,比如alpha系列的CPU上都是跑着HP Unix操作系统;在IBM的Power PC上跑的是AIX操作系统;还有Ultrasparc系列上跑的是Solaris操作系统。而造就这种格局的原因就是因为每个厂商所生产的机器语言与其他厂商不兼容,自家针对自家的CPU开发的操作系统无法跑在别的架构上。

这里聊一聊苹果的系统为什么不能安装在普通PC机上,因为苹果刚出来的时候使用的CPU是摩托拉拉的M8600,而我们普通的PC机使用的是X86系列的Intel或AMD的CPU。由于CPU的指令集不同,所以在硬件级别就杜绝了两者的兼容性。后来苹果又把芯片换成了IBM的Power PC,再后来也就是我们现在使用Macbook都使用的是Intel的CPU。这回底层硬件都相同了,应该苹果系统安装在普通PC机上就没有问题了吧?但是很遗憾地告诉你,虽然Windows系统可以在苹果机上安装,但是苹果系统由于做了隔离层所以还是很难在普通PC机上安装Max系统。但据说,破解后的苹果系统能装在PC机上了,但不是很稳定,因为官方不允许,都是个人进行破解后才能支持PC机的。 装了苹果系统除了好看以外没有什么好处,因为现在的软件大多都不支持苹果系统,游戏就更少了,而且很容易乱码。

硅谷传奇

到了1981年,这个时候PC机已经问世,而IBM就生产PC机,但所有的PC想要运行必须要有操作系统。但Unix系统当时只能运行在PDP-系列的机器上,而不往PC兼容机上移植(因为当时PDP用的是M6800的CPU,而PC机大多用的是intel的8086或80168上,而intel当时的CPU非常难看包括编程界面,那么这个Unix程序员不屑于把Unix运行在PC机上去了)。但是我们的PC机也得用系统啊!于是美国一个大学的教授就开发了一个CP/M系统,而这个系统加IBM的硬件就需要6万美元,这可是一般人玩不起的。但IBM公司和其他的PC生产商肯定希望自己的计算机可以卖的好啊!于是迫切需要一个廉价的系统运行在自己的机器上。

这个时候在美国西雅图有三个年轻人成立一个小公司叫Microsoft(微软),其中比尔盖茨的母亲是IBM的董事会成员,以及微软联合创始人艾伦有一个朋友非常牛,仿照CP/M写出了一款系统能够运行在PC机上的。而盖茨发现了商机通过母亲的关系找到了IBM的领导人说他可以为IBM的PC机提供一款系统并且是以License(许可证)的方式卖给IBM(这就是比尔盖茨的商业天才体现之处,不一次性卖断,而是买许可证,也就是说IBM公司卖出一台电脑就需要付给比尔盖茨一定的许可证费用,如果卖不出去那么当然比尔也没有钱赚。但事实证明比尔赢了),其实这个时候比尔盖茨并没有获得这个系统,于此同时他让艾伦找到了这个朋友试图买断这个系统,以5万美元买下这个系统,艾伦的这个朋友一听简直高兴坏了,二话没说就给卖了。比尔盖茨跟艾伦将这个系统改改并取名为DOS,然后转手以许可证的方式卖给IBM。后来IBM的PC机卖出了上百买台,他的DOS也获得了千万美元的利润。但他的DOS在当时是单用户单任务的,不过这在当时已经是非常好了;而这种好的景象在另外三个年轻人创了另外一家公司之后就发生了变化,这一家公司就是乔布斯的苹果公司。

苹果公司是自己研发硬件PC机并配套销售自己的Apple系统,其实乔布斯并不是搞技术的,他的一个朋友叫沃茨尼亚克是一个技术天才。苹果公司跟微软之后的一些故事这里就不在详细说了,苹果从apple I到apple II再到丽萨,到收购施乐的鼠标跟图形化界面,再到Mac和iphone,Mac系统就是施乐的图形化界面内部是freebsd系统。而Mac系统发布前,比尔盖茨也知道了这个图形化界面的存在,一想自己的蹩脚的Dos还是命令行界面肯定干不过Mac系统啊,于是就通过各种手段骗到了乔布斯从施乐搞到的图形界面,并且抄袭到抄袭了苹果的图形化界面,更名为Windows系统,在Mac发布之前发布了自己的Windows系统(所以乔布斯一直很看不起比尔盖茨,认为他是一个小偷)。但由于Dos很蹩脚在配上图形化界面所以就导致了一个经常蓝屏的问题,并且比尔盖茨经常在发布会的时候系统蓝屏,这就很尴尬了。但是微软技术有限也没有办法处理。在后来微软合并了DEC公司的VMS系统开发团队,并把VMS系统核心合并到了Dos系统中,硬是敲敲打打组合了一个系统才减少了Windows的蓝屏次数,并取名为windows NT,再后来就是2000、XP、2003、2008、2012等,而到如今Windows的图形化界面也是靠硬件性能来提升的,并且还是去不掉它那先天性的缺陷蓝屏。

在这个期间Unix和BSD在干什么呢?依然在打口水仗,在挣谁谁到底可以卖Unix,就在这个夹缝中两大巨头公司就这样诞生了。当发现的时候已经晚了,此时的微软已经成了巨头了。后来这个官司判下来了,裁决BSD系统要移除Bell实验室System V系统的代码,据说BSD正是因为移除了这段代码系统性能大降。慢慢没落,但是BSD社区也有很多人不甘心BSD就这样被遗弃又纷纷衍生出了另外一个机遇Unix分支BSD的衍生版,比如OpenBSD、FreeBSD、NetBSD等等。Bell实验室被Novell公司收购之后不久就把Unix商标捐献给了开源组织,所有Unix现在不属于任何商业机构了。

具体可以看一部电影叫“硅谷传奇”里面介绍了微软公司、苹果公司、以及施乐公司在那个年代是如何崛起的。另外还推荐一部电影叫“社交网络”是讲述Facebook如何创立的,还有一部纪录片叫“操作系统革命”讲的是GNU/Linux的发展过程,都非常不错。

Linux横空出世

回到1990年左右,当时的Unix都商业化了之后很多的一些科研机构和大学讲课就无法在免费使用了Unix。这包括当时荷兰的一所大学的一个教授Andrew一直在使用Unix教学,于是后来他自己就仿照Unix开发了一个操作系统叫Minix。他说他是小的Unix,和Unix系统完全相像,包括API接口只是它的体积非常小。后来安德鲁就拿着它的系统在欧洲教学,但是这个Minix是在教授自己的电脑上开发的使用了很多汇编语言;这就导致他的很多学生在使用这个系统时要自己写很多的驱动,有些比较牛的学生就专门为这个系统写了很多驱动并跟教授谈希望把这个驱动写进MINIX。而这个教授不让加别的代码,污染他的系统,这就让很多黑客很不爽了;这其中包括赫尔辛基大学的Linus,他想要更加自由、更加不限制编程者的操作系统,于是他把自己要做自由才做系统的消息放了出去,偶尔还跟 Minix 的黑客们打打嘴仗。后来参照Minix系统,在两个月没日没夜的编程工作后,林纳斯写出来了一个漏洞百出,但是勉强可用的程序。1991 年 9 月 17 日,他把这个小小操作系统上传到 FTP 目录上,当即决定公布了所有的源代码,给所有想要做修改的黑客们使用。为了配合这个自由的操作系统,他选择了理查德·斯托曼创造的 GPL 许可协议,它允许人们出于任何目的自由地使用、修改以及分享软件。而这个系统就是今天总所周知的Linux系统,这使得Linux在当时迅速弥漫全球。

这个可以随便玩的操作系统在发布之初,就获得了不少黑客的关注。1994 年,当 Linux 1.0 推出时,林纳斯已经积累了一个很大的用户技术,Linux 核心开发团队也已经建立起来了。在 Linux 系统数以千计的文件当中,还有一个专门记录 Linux 黑客姓名和邮件地址的文件夹,里面包含了来自世界各地的 100 多个名字。Linux 后来几年的发展再简单不过,和林纳斯的关系也不太大:黑客们写出来了很多基于 Linux 自娱自乐的软件,还将 Linux 适配到千奇百怪的运行环境中,而这些软件当中的一些,后来甚至构建成了一个巨大的商业生态。林纳斯本人已经没有在忙活这些具体的适配问题,他去一家名为全美达的公司任职,然后移居美国了。而同时,Linux 的开源模式,在也从各个方面赢得世界的关注。在 Linux 1.0 版本推出之后,不少基于这个操作系统的公司便出现了,例如“红帽”公司,连 IBM 和英特尔也支持 Linux。在 1999 年,IBM 甚至花费了 10 亿美元进行 Linux 的推广。

开源运动的崛起

介绍完Linux系统后,不得不从头说一下GUN项目,在Unix商业化的时候,在美国的麻省理工大学的一个著名的教授叫Richard Stallman,他认为程序是全人类的,软件应该公开全人类使用,并举起了自由的大旗。不但如此很多程序员都支持Stallman,为此他专门成立了一个组织就叫GNU(GNU is not unit)并建立了一种许可证就叫GPL(general public license)通用公共许可证。任何人只要遵循这个GPL都可以出于任何目的自由地使用、修改以及分享软件。当时有很多人为GNU提供了自己的力量并迅速开发了几款著名的软件,如文本编辑器“Emacs”和Gcc编译器以及Bash程序等等。但是让Richard Stallman很郁闷的是程序需要在内核上才能运行起来,所以还是离不开Unix系统,当时Stallman也说要自己开发出一个内核,可是一晃5年过去了依然没有什么成果(可见一个系统开发的难度之大)。就在这个时候,一次偶然的机会Richard Stallman和Linus相遇了,两人真是相见恨晚,一拍即合。至此GUN和Linux相遇了,而Linux就很好地和GNU项目需要一个内核这样的一种现象达成共识,真所谓是珠联璧合。大概在1991年LINUX发布了内核的0.1版本,而后在全球所有黑客都集中精力为Linux注入力量,移植到各种架构上去。但是我们要知道Linux只是一个内核,全称叫GNU/linux,而人们只记得Linux却不知道GNU,这让Richard Stallman非常郁闷;但是我们应该注意无论是GNU的软件还是Linux的内核它们都是源代码(使用C语言开发的程序),因此我们说过任何程序语言开发的程序要想运行起来就必须使用编译器把写好的语言翻译成计算机能识别的二进制语言之后才可以在计算机上运行。

(但是能有多少人有能力编译呢?何况编译必须要有编译器,能够运行也要借助一个很好的系统平台。但是更重要的是编译必须要两个平台完全一样,也就意味着编译之后要是想在X86平台上运行就必须在X86上编译,就算是编译成二进制之后也不能在不同的CPU上运行,因为每个CPU所支持的二进制格式不一样,而这种格式我们称为ABI,应用二进制接口。)

Linux通过源代码的方式向全球公布,不是谁能够编译并使用的?作为一个计算机初学者,要想学计算机就需要系统,需要软件各自编译。而这些人连编译是什么都不知道,所以很多人就用不成计算机也用不了Linux了,这时候就出现了第三方组织专门负责去编译Linux内核和各种外围程序,并把它们打包到一起做成一个发行版系统给普通用户可以直接使用的系统。而这种组织就有1993年成立的RedHat公司,当然也包括1992年德国的一个研究生发明的一个叫Suse和另外一个叫Debian,它们只是在Linux和GNU发布的源代码上加入了自己对系统的理解和公司LOGO,包括参数配置文件的调整等工作。使得现在有那么多不同的Linux发行版系统,其实内部都是一样的,万变不离其宗!这些公司并为各自的系统提供了一个软件管理器,如DEbian的叫dpt,RedHat模仿DEbian做了一个叫rpm。这些软件包管理器就是用来管理编译好的软件,包括安装软件、卸载软件等工作,大大地降低了使用GNU/Linux的难度。

 

Linux 现象是一种有组织传播技术、知识、财富的方式,同时能让参与的人非常过瘾,这种娱乐是商业世界里闻所未闻的”。“当“开源”的理论应用到政治和政府时,人们看到了其中的弊端,但说到商业领域和开源理念,人们却没有什么感觉。讽刺的是,在商业领域,开源理念甚至让人们感到不安。”他说的是类似微软、苹果这样的科技巨头。因为这个系统的不同版本、不同用途,在于众多软件公司和操作系统公司手上,这也就意味着微软的对手可能并不止于 PC 市场,对于包罗万有的软件公司微软来说,这是一种潜在的威胁。同样不安的,还有竭力保护知识产权的人们。但林纳斯对于知识产权法规态度也十分的“黑客”:“也许你不会感到惊讶,主张强化知识产权法规的,正是那些从知识产权中获利最多的组织。不是艺术家或创造者自己,而是那些知识产权交易所,那些靠别人的创造力挣钱的公司。对了,当然还有律师”。

“结果怎么样呢?版权修正案,比如说不太有名的《数字千年版权法案》等,把消费者使用版权作品材料的最后一点权利给彻底剥夺了。”但到现在,Linux 在这场战斗中优势已经太明显——从航天科技,到手机的芯片,Linux 的免费和开源让更多的电子产品有了快速发展的可能。其中最好的例子,也许就是本来也是基于 Linux 的搜索引擎 Google,以及同样基于 Linux 的手机操作系统 Android。从证券交易系统,ATM 柜员机,科技巨头的服务器,甚至是梦工厂、迪斯尼、皮克斯等公司制作的电影都和 Linux 有关,我们每天的生活都少不了 Linux。微软?他们还在挣扎着将资源和优势转移到移动端,转移到不同的企业服务当中。


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (0)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!