一、Linux的诞生
Multics计划
上世纪六十年代,人们还在用批处理计算机,也就是一次性给一批任务到计算机,然后等待结果,中途不能和计算机进行交互,而且准备作业需要耗费大量时间。于是1965年,贝尔实验室(Bell),麻省理工学院(MIT)和通用电气(GE)准备联手开发“分时多任务处理系统”,即300台以上终端机可以同时连接一台大型计算机进行作业,并取名为Multics(Multiplexed Information and Computing System,多路信息计算系统)。但由于项目进度落后,资金短缺,1969年,贝尔实验室放弃了这个项目,决定退出(后来Multics成功开发完成,尽管没有再被重视)。
Unix的诞生与打飞机游戏
调回到贝尔实验室的工程师看到费时的批处理机器,十分怀念先进的Multics。一位工程师Ken Thompson在研发Multics的时候,写了一个叫太空大战(SpaceTravel),是飞机发射子弹那种类型的游戏,然而这个游戏只能运行在Multics上面,他很想要移植这个游戏继续玩。1969年8月,Thompson在库房发现了一台闲置的PDP-7,刚好此时休假并且妻儿都去加利福尼亚探亲度假去了,经过四个星期的努力,用BCPL(Basic Combined Programming Language,基本组合编程语言)汇编语言编写了一组内核程序,还包括内核工具程序,以及一个小的文件系统。完成之后,Thompson激动地把身边的同时叫过来,让他们来玩他的游戏。由于这个系统是由Multics简化而来,同事们就戏称这个系统为”UNiplexed Information and Computing Service”,即没路信息计算系统,缩写为Unics,取其谐音Unix。这时已经是1970年了,于是就将1970年定为Unix元年,现代计算机的计时也就是这个时候开始的(比如mysql数据库的TIMESTAMP)。
Unix的发展
Unix实在太好用了,这套系统在Bell实验室广为流传。但Unix是用汇编语言写的,高度依赖硬件,于是Thompson和Dennis Ritchie合作准备用更高级的语言改写,提高可移植性。Thompson改进了BCPL,称为了B语言,然而这套语言在内存方面有限制,一筹莫展。又和Ritchie尝试了Pascal,发现编译出来的内核性能并不好。最终Ritchie决定再对B语言进行改进,成为了大名鼎鼎的C语言,重新改写了Unix。1974年7月,Bell实验室公开了Unix,引起了学术界的广泛讨论,并大量应用于教育目的。1978年学术界老大伯克利大学,推出了以Unix第六版为基础并加入改进的新Unix,并命名为BSD(Berkeley Software Distribution伯克利分发版),于是Unix的分支BSD系列就诞生了。由于Unix的高度可移植性与强大的性能,加上当时并没有版权的纠纷,所以让很多商业公司开始了Unix操作系统的开发。然而当时Bell属于AT&T,AT&T被《谢尔曼反托拉斯法》规定了不能销售除了电话机电报机等之外的商品,后来随着AT&T的分解,Bell可以卖出Unix了,第七版Unix明确提出“不可对学生提供源码”,Unix走向了商业化。高昂的授权费导致很多大学停止了对Unix的研究。
Minix操作系统
Unix进行了商业化,教师们都用不起了,1987年,身为ACM和IEEE两会资深会员的荷兰数学与计算机科学系统教授Andrew S. Tanenbaum开发了Minix操作系统,是Unix的缩小版,用于学生学习操作系统原理,很多技术大牛希望改进Minix,但遭到了AST教授的丑拒,他认为Minix就是为了教学,让学生一学期学完,并不想被加入杂乱的东西。
GNU计划
Richard M.Stallman看不惯版权收费,于1984年创立自由软件体系GNU(Gun is Not Unix),拟定了普遍公用版权协议(General Public License,GPL),所有GPL协议下的自由软件都遵循着Copyleft(非版权)原则:自由软件允许用户自由拷贝、修改和销售,但是对其源代码的任何修改都必须向所有用户公开 。GNU希望开发一个类似UNIX并且是自由软件的完整操作系统——GNU系统。到90年代初,GNU项目开发出许多高质量的免费软件,包括emacs编辑器(已经在博哥的带领下中毒……)、bash shell程序、gcc系列编译程序、gdb调试程序。
POSIX标准
POSIX(Portable Operating System Interface for Computing Systems)是由IEEE 和ISO/IEC 开发的一簇标准,该标准是基于现有的UNIX 实践和经验,描述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系统上移植和运行。
Linux终于诞生了
此时,IBM公司开发的MS-DOS操作系统、Apple公司开发的Mac操作系统,Unix操作系统,Minix操作系统全都要收费。GNU尽管已经开发出最受期盼的GNU C编译器,开发的操作系统HURD却进度缓慢,渴求一款自由软件操作系统诞生来证明自己存在的价值。与此同时,Linus利用圣诞的压岁钱和贷款购买了一台386兼容电脑,并从美国邮购了一套Minix系统软件,在等待邮寄到达的期间,Linus认真学习了有关Intel 80386的硬件知识。为了能通过Modem拨号连接到学校的主机上,他使用汇编语言并利用80386CPU的多任务特性编制出了相关程序。甚至为了将老式电脑的软件复制到新电脑上,为一些硬件编写了驱动程序。Linus逐渐认识到了Minix的诸多限制,产生了自己编写一个新的操作系统的想法。1991年4月,Linus花费了全部时间研究Minix-386系统,并尝试移植GNU的gcc、bash、gdb到新系统上。1991年4月13日,Linus在comp.os.minix上发布信息说自己成功将bash移植到了Minix上,而且已经爱不释手,离不开这个shell软件了。1991年7月3日,Linus在comp.os.minix上透露了正在进行Linux系统的开发,并已经开始考虑POSIX的兼容了。1991年8月25日,Linus在comp.os.minix上发布了“What would you like to see in minix?”,透露出正在开发一个免费的386操作系统,新开发的系统会移植bash和gcc,并且声明他开发的操作系统没有用一行Minix的源代码。1991年10月5日,Linus在comp.os.minix上发布消息,正式向外宣布Linux内核诞生(Free minix-like kernel sources for 386-AT)。Linux遵循GPL协议,也给GNU运动送上了一份最好的礼物。Linux提供内核,GNU提供外围软件,GNU/Linux就成了密不可分的体系。
二、Linux不同版本的区别
Red Hat系列:点此进入官网
1991年的Linux只是一个内核,安装这个操作系统需要进行交叉编译,入门难度实在太高了,于是出现了这样的公司,他们将公开好的内核加上开源的周边软件编译成二进制文件放到网上供人使用。Red Hat就是这样的一家公司,盈利方式则是提供打补丁、安装等收费服务。Red Hat一般以RPM包和YUM包进行管理,包分发方式是编译好的二进制文件。
【运用建议】我们的操作系统实验就是在Red Hat上完成的,因为操作系统的老师好像十分喜欢Red Hat……反正我是感觉比较老……不想用……
CentOS:点此进入官网
既然有人收费,那又有人不高兴了。于是有一个社区把Red Hat源码拿过来,然后编译成操作系统放出去,并且Red Hat补丁包出来一个月后,就放出补丁包,这就是Cent OS。然而2014年Red Hat收编了Cent OS团队。
【运用建议】搭建VPS用这个用得比较多,因为稳定。
Fedora
Fedora是Red Hat的桌面版本发展而来,免费,稳定性较差。
【运用建议】没用过。
Debian:点击进入官网
apt-get/dpkg/deb包管理,deb会自动的分析依赖关系,力争获取所有的依赖包。是迄今为止最遵循GNU规定的linux系统,最早于1993年创立,有三个版本分支:stable(稳定)、testing(测试,相对稳定)、unstable(不稳定,最新)。Red Hat的YUM也是在模仿APT。
【运用建议】实习用过,非常好用,力荐。
Ubuntu:点此进入官网
属于debian系列,是基于Debian的unstable版本加强而来, apt-get/dpkg/deb包管理 ,适合桌面系统,衍生版本Kubuntu(桌面采用KDE,比较华丽),Xubuntu(要求配置较低),eubuntu(面向儿童和教育)。
【运用建议】大学用来搭建Hadoop集群,感觉不太好用,适合新手和用windows用习惯了的用户。
Gentoo:点此进入官网
最年轻的发行版本,被称为最完美的Linux发行版本之一,首个稳定版发行于2002年,拥有FreeBSD广受美誉的ports系统——Portage包管理系统,APT和YUM都是二进制文件分发的包管理系统,而Portage是基于源代码分发的,必须编译后才能运行,能将机器性能发挥到极致。
【运用建议】没用过,据说Linux老鸟用起来非常顺手。
PS:码字不容易,如果对您有帮助的话,帮忙转发一下,谢谢啦~
微信搜索公众号:轮子工厂
会定期分享一些实用工具和学习笔记~