下文主要内容为老师讲解的内容,我做整理工作。
本期嘉宾:画家(下文简称HJ)、苍狼、团子
视频回放:https://live.csdn.net/room/csdnstudent/NUGNaujr
推荐结合视频回放和笔记内容,会有较好的学习效果。
以下是正文部分
HJ:
大家好,又到了咱们每周一次的技术分享时间。咱们介绍了两期的Modern Java。我们都是知道Java最大的特点是跨平台,而互联网中,在服务器端统领江湖的是Linux,本次直播我们就来聊聊Linux的那些事儿。
说到Linux是怎么诞生的,我们必须分成两部分来讲,一个是GNU,另一个是Linux内核。可以这么说,这两拨人虽然刚开始没在一起,但机缘巧合,结果最终还是走到了一起,有情人终成眷属——它们结合诞生了Linux。下面我们就来给大伙讲一讲这些比较有意思的陈年旧事。
GNU计划诞生和Unix有着千丝万缕的关系。可以说是由于对Unix和当时软件生态的恨,大家记住Richard Stallman(理查德·斯托曼)这个名字,他在1983年发起了GNU计划。并且给这个计划取了一个在工程师看来很有范儿的名字:GNU。
GNU这三个字母是GNU's Not Unix的缩写,至于GNU又是什么东西呢?它又是GNU's Not Unix,很烧脑吧,像盗梦空间吧,梦中再做梦。你看,这个就无限循环下去了
所谓的递归,用一句简单的话来说就是「先递进,再回归」,比如拿一个阶乘函数来举例的话,它就是这个样子的
举例:
Unix是由贝尔实验室的人开发的一个系统,这个实验室的人都是计算机界上古大神级的人物,开始的时候,源码是开放的,大家使用也是自由的,很多人在Unix上开发软件,当然也包括贝尔实验室自己的人。
这样,参与的人越来越多,Unix也越来越好用,也越来越多的人来用。这个时候贝尔实验室所属的公司,看到了它的商业价值,就明确了Unix的所有权,并把Unix商业化。
之后要使用Unix就得买,而且超级贵。像 Richard Stallman 这些科研者(他当时在MIT的人工智能实验室)就不爽了,系统用不了,以前很多一起分享软件的小伙伴也看到了专有软件的巨大成功都纷纷去开发专有软件了,不分享了。
Richard Stallman 就很气愤,就在1983年发起了GNU计划。
GNU是意在为所有软件用户能够自由控制自己的计算机而构建一款由大家共同努力开发而成的操作系统。GNU计划就是我们要构建这么一个操作系统,里面软件和Unix兼容但是又是100%自由的,不是专有的。
Richard Stallman这个人很有气魄,这个时候他发起这个计划是有很周全的准备吗?没有。但是很多开发者或者说是黑客苦Unix久已,慢慢的,聚集在Richard Stallman周围参加GNU计划,开发这个系统。
GNU并没有一个明确的排期,大家有一个软件列表,就是专有软件,但是一个操作系统必要的,大家就挨着一个一个的重新实现一遍。并且这些软件以一个特定的版权协议发布,这个特定的版权协议也是一个重中之重,叫做GPL,是 Richard Stallman 拉着一群律师起草的。
这个协议有一个特定就是,你用我的软件以及源代码可以,但是你的这个软件也要按照GPL协议开源。这个是重点。星星之火,可以燎原。越来越多的软件在这个协议的作用下,也加入到了自由软件运动中来。
上面说了这么多GNU的计划,它是要开发一个操作系统。并且也列举了很多很多的必要的软件,开发者们在社区的领导下一个一个的开发着。最后开发完了吗?很遗憾,卡住了,有一个很重要的部分还没弄完。
时间来到了1991年,一个芬兰的大学生Linus Torvalds,21岁,当时他在上计算机相关的课程的时候,他们老师拿了一个教学操作系统MINIX的源码来演示操作系统是怎么运行的。他对这个很感兴趣,拿来之后一顿改,他觉得这个太简单了,毕竟是教学系统。一顿改之后支持了x86的CPU,他们那个时代各种CPU架构都有,但是个人电脑还是x86架构居多。改了之后,拿到论坛上发布。
所以我们看,Linux系统实际上是两拨人,一边是GNU计划的人,一边是Linus这边,齐心协力贡献了这样一个安全、可靠、高性能的系统。严格来说Linux系统应该叫 GNU/Linux 系统。
因为这是由GNU计划中的一堆上层软件和Linux这个内核构建起来的系统。 Richard Stallman 一直对Linux这个称呼耿耿于怀,坚持称为GNU/Linux,在很多公开场合他都会说到这个事。现在我们叫习惯了,不过我们要明白GNU计划功不可没。
上面我们说到Linux严格来说叫GNU/Linux,翻译成中文就是采用Linux内核的GNU操作系统。Linux内核有自己的版本,GNU又是一堆系统软件,也有自己的版本。
你看要发行一个版本的Linux系统,要考虑的东西太多了。由于各种各样的原因,人们解决上述问题(不只限于上述问题)会采取自己的方案(有可能是自认为好的,有可能就是随意的),这样最终产生的系统就有了差异,他们本质上一样,但是使用上产生了差异。我们就叫这是一个Linux系统的发行版。
谁能发行一个Linux系统呢?你们来说说看,根据之前说到的GPL这个协议来说。任何人,对,任何人都能根据自己的需求发布一个Linux发行版。就看别人用不用了。如果你上述问题处理的很好,当然不止这些问题,并且没有啥bug,时常保证更新,再加上一定的宣传,有自己的特色,那么自然就有人用你的系统。用的人多了,就会被承认是一个可用的发行版,从而在社区中传播开来。
Linux发行版大概有:Ubuntu、Debian、CentOS、Red Hat、SUSE,还有一个老大爷叫FreeBSD,虽然又老又古板,但是安全性非常好。
Debian:
广义的Debian是指一个致力于创建自由操作系统的合作组织及其作品,由于Debian项目众多内核分支中以Linux宏内核为主,而且 Debian开发者 所创建的操作系统中绝大部分基础工具来自于GNU工程 ,因此 “Debian” 常指Debian GNU/Linux。
非官方内核分支还有只支持x86的Debian GNU/Hurd(Hurd微内核),只支持amd64的Dyson(OpenSolaris混合内核)等。这些非官方分支都存在一些严重的问题,没有实用性,比如Hurd微内核在技术上不成熟,而Dyson则基础功能仍不完善。
Ubuntu:
上面说到Ubuntu是一个Debian的衍生版,那Ubuntu又有什么特点呢?Ubuntu基于Debian的unstable 或者 testing 分支,同时对来自 Debian 的部分软件包进行了一定的修改,以使其更加适合桌面使用。并且,优化了安装过程,使Ubuntu安装起来更加容易。同时Ubuntu也维护了一个自己的软件库。
Red Hat:
另外一个大的分支Redhat,也是一众衍生发行版的上游发行版,和Debian类似,Redhat是名为Redhat的公司的一个商业的Linux发行版。他有自己特有的二进制包格式,一般以.rpm结尾,用来进行软件包依赖管理的yum。Redhat公司同时还提供技术认证服务。目前Redhat公司已被IBM收购。
CentOS:
下面我们来说一下CentOS这个发行版,它可以理解为Redhat这个发行版,去掉其中的专有软件。基础的系统软件和内核一模一样。由于Redhat要钱,但是CentOS不要钱,并且也基本一样,所有也有很多公司用CentOS来部署他们的服务。
以上介绍了几种常见的发行版。那我们如何挑选呢?首先得明白自己的需求,你为啥需要Linux?你是工作需要?还是学习需要?你是想用来当做服务器使用还是用来当做普通桌面使用?你的电脑是最新的还是比较老式的?
上面只是一些需求,你可能有自己更独特的需求。如果你是当桌面使用,放在自己的笔记本上,那就别折腾那些专为服务器而存在的发行版了,直接选Ubuntu、Fedora、OpenSUSE、ArchLinux。如果你要用到服务器上的话,基本是Debian,CentOS。
如果是要在Linux系统上玩游戏,可能还要考虑显卡的开源驱动和闭源驱动的问题。一般来讲闭源驱动性能更好,但是安装麻烦,兼容性也不好,有时候还动不动就把系统弄崩掉。
在Linux系统中还有一个比较特殊的概念,就是软件源。软件源可以理解为官方的软件仓库。你如果一直使用windows也许不好理解这个概念,为啥会有一个官方的软件仓库呢?我们要下载qq使用就去腾讯官网下载咯,要下载迅雷就去迅雷官网下载是吧。
软件源的软件可以理解为官方认可的软件,官方在一定程度上保证这里面的软件没问题,可用。你在系统里面要安装某个软件,就执行安装的命令就好了,系统就自动去软件源里面下载安装了。
也许你在玩Linux系统的时候,看到各种博客文章都会讲到安装完第一步就是 把软件源的地址配置成国内某某镜像地址,例如网易开源镜像、阿里云开源镜像、以及各种大学开源镜像地址等等。这个主要是这些发行版大都是国外的,软件源地址也是在国外。国内下载就慢。所以有一些公司,或者大学利用自己的闲置的计算资源和闲置的带宽资源 把 原始源的东西同步到了国内,我们叫它们镜像源。这样把软件源的地址配置成国内的,整个下载速度就会快很多。
Linux整个系统的诞生是对标Unix的,它的主要的应用场景就是在服务器上,这和Unix的应用场景类似的。开始也许Linux稳定性和性能不如Unix,但是架不住Linux免费,Unix巨贵。慢慢的用Linux的人越来越多,开发Linux的人也越来越多,Linux的性能越来越好稳定性也越来越好。现在Linux在服务器领域基本上是遥遥领先。
但是Linux在桌面领域,则一直是半死不活。纵使有各种各样的可定制化的桌面软件,你要是精心配置起来也是十分的炫酷,但是架不住日常工作的软件少。Windows系统在桌面领域秒得Linux渣都不剩,这个没啥好说的。更可气的是,在服务器领域居然也在慢慢追赶。微软换了一个CEO后,拥抱开源,拥抱云服务,市值一路高涨,这个印度人有一套。
Linux 在服务器领域很稳,短处基本没救了。最近几年新兴的容器技术把Linux又一次推到了风口浪尖。容器技术说白了是一帮人利用Linux系统很早就有的一些特性,组合起来使用,实现了在软件级别的虚拟化。
在这种基于容器技术的云服务领域,Linux几乎成了唯一选择。这也是IBM收购Redhat的原因之一。
关于Linux系统的接触是上个月才开始的,因为做项目中需要用到云服务器,我就去在华为云用学生优惠购买了一个月的云服务器。刚开始安装系统的时候,就不知道那要安装的几个系统是什么,还查找了一番安装哪一个系统最好。现在才知道,那些系统是Linux系统的不同发行版。真是学海无涯呀!