Linux——站在巨人的肩上
一,unix与linux
1968年,⼀一些来⾃自通⽤用电器公司、⻉贝尔实验室和⿇麻省理⼯工学院的研究⼈人员开发了⼀一个名叫Multics的特殊操作系统。Multics在多任务⽂文件管理和⽤用户连接中综合了许多新概念。
UNIX从满⾜足个⼈的设计需求开始,逐步成⻓长为由许多不同开发商所⽀支持的标准软件产品。
第⼀一个UNIX版本是免费给许多知名⼤大学的计算机系使⽤用的。
- 1975年伯克莱由下属部⻔门BSD发⾏行了⾃自⼰己的UNIX版本。UNIX的BSD版本成为AT&T⻉贝尔实验室版本的主要竞争者,⽽而其它的独⽴立开发出的UNIX版本也开始萌⽣生。
- 1980年微软公司开发了叫做Xenix的UNIX PC版本。AT&T发⾏行了第⼀一个商业版本。名叫System Ⅲ,后来被成为对商⽤用软件产品良好⽀支持的System Ⅴ所替代
- 同时UNIX的BSD版本不断发展,在70年代末期,BSD UNIX成为了国防部的⾼高科技研究机构科研项目的基础。其结果,伯克莱发⾏行了⼀一个叫做BSD Release 4.2的有效版本。
- 它包括了⾼高级的⽂文件管理器和基于TCP/IP⺴⽹网络协议的⺴⽹网络特点。现在TCP/IP被Internet所使⽤用。BSD Release 4.2被许多⼚厂商所采⽤用,例如SUN Microsystem。
- UNIX不同版本的出现导致了UNIX标准的需要,软件开发商不知道他们的程序运⾏行在哪些版本上⽐比 较合适
到80年代中期,两个竞争的标准出现了,一个是基于AT&T的UNIX版本,另一个是BSD版本。在今 天的书店⾥里你能发现分别适⽤用于这两个版本的不同的UNIX的书,一些是System V,另⼀些集中在BSD UNIX。AT&T建⽴立了⼀一个叫UNIX系统实验室的新组织,它的作⽤用就是综合UNIX的不同版本,集中开发⼀一 个标准系统。
1991年,UNIX综合实验室综合了System V Release3,SUN OS和Xenix的所有特点,发⾏行了System V Release 4。为了与System V Release 4 竞争,⼀一些其它公司,如IBM和惠普Open Software Foundation(OSF)去产⽣生⾃自⼰己的UNIX标准版本,继⽽而出现了两个标准商业版本OSF版本和System Release 4。
- 1993年,AT&T把它的UNIX转卖给Novell公司。UNIX系统实验室成为了Novell的UNIX系统⼩小组的一部分。Novell发⾏行了基于System V Release 4的⾃自⼰己的UNIX版本UNIXWare,它可以和Novell公司的Netware系统相联。SUN公司已经把System V Release 4 融进了它的SUN OS,发⾏行了Solaris。两个相互竞争的UNIX使⽤用的图形⽤用户界⾯面(一个叫Motif,另⼀一个叫Openlook),已经合并为⼀一个新的⼯工作平台标准,叫做通⽤用平台环境
- 1991年10⽉月5⽇,赫尔辛基⼤大学的⼀一名研究⽣生Linus Benedict Torvalds在⼀一个Usenet新闻组(comp.os.minix)中宣布他编制出了⼀一种类似UNIX的⼩小操作系统,叫Linux。新的操作系统是受 到另⼀一个UNIX的⼩小操作系统——Minix的启发,该系统是由⼀一名叫Andrew S Tanenbaum的教师开发的。读者也许猜想所发布的这个系统应该是Linux的0.01版本,实际上不是这样0.01版本并没有被发布,原因是0.01版本不实⽤用。Linus仅仅在第⼀一个Linux的FTP站点(ftp://nic.funet.fi)上提供过这个版本的的源代码。
- Torvalds于10⽉月5⽇日发布的这个Linux版本被称为0.02版,它能够运⾏行GNU Bourne Again Shell(bash)和GNU的C编译程序(gcc)以及为数不多的其它语⾔言。Torvalds绝对没有想到他设想 的⼀一种能够针对⾼高级业余爱好者和⿊黑客们的操作系统已经产⽣生,这就是⼈人们所称的Linux。
- Linux发布时的版本是0.02,后来⼜又有0.03版,然后⼜又跳到0.10版。因为世界各地越来越多的程序 员都开始开发Linux,它已经达到0.95版。这就意味着正是公布1.0版本的时间已经为期不远了。正式的1.0版本是在1994年公布的 。
二,Linux发行版(Linux distributions)
Linux发行版是一种为一般用户预先集成好的Linux操作系统及各种应用软件。一般不需要用户重新编译,在直接安装之后,只需要作出小幅度的更改设置即可。Linux发行版通常包含了桌面环境、办公包、媒体播放器、数据库等应用软件。这些操作系统通常使用Linux、以及来自GNU计划的软件、和基于X Window的图形界面组成。
Linux发行版通常分为商业发行版和社区发行版。也有少部分既不属于发行版又不属于社区发行版,其中最有名的是Slackware.
目前主流的发行版本有以下几个:
Slackwar(openSUSE), Debian, Ubuntu, Fedora, CentOS, RHEL;
这几个发行版的联系与区别如下:
1 Slackwar(openSUSE)系列:
S.u.S.E衍生了后面的, SUSE Linux Enterprise Server (SLES), 和openSUSE 之间的关系类似于 Fedora, Red Hat Enterprise Linux, 和CentOS的关系.
openSUSE 背后的 SUSE 公司是最老的 Linux 企业,它成立于 Linus Torvalds 宣布放出 Linux 的一年后。它其实早于 Red Hat 的诞生,它也是社区主导的发行版 openSUSE 的赞助商。
在2015,openSUSE 团队决定靠拢 SUSE Linux 企业版(SLE)以便用户可以共享企业服务版本的 DNA ,就像 CentOS 和 Ubuntu 一样。之后,openSUSE 变成了 openSUSE Leap,直接基于 SLE SP1 。这两个发行版将共享代码库以互惠互利,SUSE 将吸取 openSUSE 的优秀内容,反之亦然。通过这一举措,openSUSE 也抛弃了常规的发行周期,一个新的版本将和 SLE 保持一致。这意味着每个版本将有更长的生命周期。这一举措的结果是 openSUSE 将变成一个非常重要的发行版,因为潜在的 SLE 用户可以使用 openSUSE Leap 。然而,这还不是全部,openSUSE 同时发布了一个纯粹的滚动发行版—— Tumbleweed.
所以现在用户可以使用超稳定的 openSUSE Leap 和 始终保持最新的 openSUSE Tumbleweed 。
Red Hat系列:
包括RHEL、Fedora Core、CentOS。可以说是国内使用最多的Linux发行版。
Fedora是基于Linux的集最新*开源软件于一体的操作系统。Fedora始终允许任何人*使用,修改和发布。它由来自世界各地的人们在Fedora项目社区下共同合作而成。Fedora项目对外开放,欢迎任何人加入。Fedora项目就在您眼前,它引领着*、开源软件以及内容的前进。 特点是常常引入创新性的技术,被视为”新技术的试验场”。版本升级很快(约6个月),每个版本的支持较短,约为13个月。Red Hat 公司为 Fedora Project 提供赞助。Fedora基于Red Hat Linux。在Red Hat Linux终止发行后,红帽公司项目以Fedora来取代Red Hat Linux在个人领域的应用,而另外发行的Red Hat Enterprise Linux (Red Hat企业版)则取代Red Hat Linux在商业应用的领域。目前Fedora的最新版本是于2015年11月发布的23。更新方式是DNF,软件包管理系统是RPM,默认用户界面是GNOME/KDE/XFCE/LXDE。
官网地址: https://getfedora.org/
*: https://zh.wikipedia.org/wiki/Fedora
Red Hat Enterprise Linux是Red Hat公司定位于企业级应用的商业性质的Linux发行版,提供付费的技术支持和更新服务。红帽公司对企业版Linux的每个版本提供7年的支持。
CentOS是一个服务器级别的Linux发行版,由社区重新编译Red Hat公开的SRPM,去除了Red Hat的商标,更换LOGO得到。由于和Red Hat Enterprise Linux来自于同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。
CentOS的最新稳定版本是7.0,更新方式是yum,软件包管理方式是RPM,默认用户界面是GNOME/KDE。
官网地址: https://www.centos.org/
*: https://zh.wikipedia.org/wiki/CentOS
Debian系列:
包括Debian和Ubuntu,以及相应的衍生版。
Debian是由GPL和其他*软件许可协议授权的*软件组成的操作系统,由Debian项目组织维护。Debian以其坚守Unix和*软件的精神,以及其给予用户的众多选择而闻名。Debian主要分三个版本:稳定版本(stable)、测试版本(testing)和不稳定版本(unstable)。目前的稳定版本为Debian Jessie,上一个稳定版本是Wheezy,不稳定版本永远为Debian sid。Debian以稳定性闻名,所以很多服务器都使用Debian作为其操作系统。在桌面领域,Debian的一个修改版Ubuntu Linux获得了很多Linux用户的支持。对比Ubuntu、Fedora和CentOS等Linux发行版,Debian以三年为更新周期,故对新上市硬件支持较差,但极注重稳定性。低于现在Windows主流配置1~2年的PC在Debian上可以得到很好的支持。
官网地址: https://www.debian.org/
*: https://zh.wikipedia.org/wiki/Debian
Ubuntu是以桌面应用为主的GNU/Linux操作系统,其名称来自非洲南部的”ubuntu”一词,意思是“人性”,“我的存在是因为大家的存在”,是非洲传统的一种价值观。
Ubuntu的最新版本是15.10,市场取向是个人电脑、服务器、平板电脑、智能电视和智能手机。Ubuntu是基于Debian发行版和GNOME桌面环境。
Ubuntu的更新方式是高级包装工具、Software Updater或Ubuntu软件中心。软件包管理系统是Dpkg。
Ubuntu严格来说不能算一个独立的发行版本,Ubuntu是基于Debian的unstable版本加强而来,可以说Ubuntu是一个拥有Debian的所有的优点,以及自己所加强的优点的近乎完美的Linux桌面系统。根据选择的桌面系统不同,有三个版本可以选择,基于Gnome的Ubuntu、基于KDE的Ubuntu和基于Xfc的Xubuntu。特点是界面非常友好,对硬件的支持非常全面,最适合做桌面系统的Linux发行版。
官网地址: http://www.ubuntu.com/index_kylin
*: https://zh.wikipedia.org/wiki/Ubuntu
Linux不同发行版之间的联系和区别:
总结: 其实发行版只是由人们与不同组织编译后, 把源码编译成二进制格式所给的各种各样的分支版本而已。
Linux发行版本数百种之多,但是大体可以分为两类,一类是商业公司维护的发行版本,一类是社区组织维护的发行版本,前者的代表是RedHat,后者的代表是Debian。商业公司的发行版一般是收费的,比如RedHat Enterprise Linux: RHEL,收费的同时提供稳定性服务,在使用过程中出现什么问题,供应商会提供服务;社区的发行版免费,但使用过程中没有相应的服务。centOS社区工作者在RedHat的基础上发展下来的一个分支,后背RedHat承认属于RedHat,目前不同于RedHat其他发行版,属于免费发行版。
三,开源协定
四大开源协定:GPL, LGPL, BSD, Apache
GPL
GPL同其它的*软件许可证一样,许可社会公众享有:运行、复制软件的*,发行传播软件的*,获得软件源码的*,改进软件并将自己作出的改进版本向社会发行传播的*。
GPL还规定:只要这种修改文本在整体上或者其某个部分来源于遵循GPL的程序,该修改文本的 整体就必须按照GPL流通,不仅该修改文本的源码必须向社会公开,而且对于这种修改文本的流通不准许附加修改者自己作出的限制。因此,一项遵循GPL流通 的程序不能同非*的软件合并。GPL所表达的这种流通规则称为copyleft,表示与copyright(版权)的概念“相左”。
GNU General Public Licence (GPL) 有可能是开源界最常用的许可模式。GPL 保证了所有开发者的权利,同时为使用者提供了足够的复制,分发,修改的权利:
可*复制
你可以将软件复制到你的电脑,你客户的电脑,或者任何地方。复制份数没有任何限制。可*分发
在你的网站提供下载,拷贝到U盘送人,或者将源代码打印出来从窗户扔出去(环保起见,请别这样做)。需要注意的是,分发的时候,需要明确提供源代码和二进制文件。可以用来盈利
你可以在分发软件的时候收费,但你必须在收费前向你的客户提供该软件的 GNU GPL 许可协议,以便让他们知道,他们可以从别的渠道免费得到这份软件,以及你收费的理由。可*修改
如果你想添加或删除某个功能,没问题,如果你想在别的项目中使用部分代码,也没问题,唯一的要求是,使用了这段代码的项目也必须使用 GPL 协议。
GPL许可证的由来
1980,一个叫Richard Stallman的美国人因为无法容忍软件私有化,而建立了GPL许可证。他认为,软件的源代码是全人类的财富,应该允许程序员*共享。
GPL许可证的核心含义是,允许任何人观看、修改,并散播程序软件里的原始程序码,条件是如果你要发布修改后的版本就要连源代码一起公布。
在GPL的序言里,清楚的写道:“ 大多数软件许可证决意剥夺你的共享和修改软件的*。对比之下,GNU通用公共许可证力图保证你的共享和修改*软件的*。——保证*软件对所有用户是*的。GPL适用于大多数*软件基金会的软件,以及由使用这些软件而承担义务的作者所开发的软件。(*软件基金会的其他一些软件受GNU库通用许可证的保护)。你也可以将它用到你的程序中。当我们谈到*软件(free software)时,我们指的是*而不是价格。”
GPL最原则、最重要的一段话:“任何*软件不断受到软件专利的威胁。我们希望避免这样的风险,*软件的再发布者以个人名义获得专利许可证。事实上,将软件变为私有。为防止这一点,我们必须明确:任何专利必须以允许每个人*使用为前提,否则就不准许有专利。”
LGPL
GNU 还有另外一种协议,叫做 LGPL (Lesser General Public Licence),它对产品所保留的权利比 GPL 少,总的来说,LGPL 适合那些用于非 GPL 或非开源产品的开源类库或框架。因为 GPL 要求,使用了 GPL 代码的产品必须也使用 GPL 协议,开发者不允许将 GPL 代码用于商业产品。LGPL 绕过了这一限制
BSD
BSD 在软件分发方面的限制比别的开源协议(如 GNU GPL)要少。该协议有多种版本,最主要的版本有两个,新 BSD 协议与简单 BSD 协议,这两种协议经过修正,都和 GPL 兼容,并为开源组织所认可。
新 BSD 协议(3条款协议)在软件分发方面,除需要包含一份版权提示和免责声明之外,没有任何限制。另外,该协议还禁止拿开发者的名义为衍生产品背书,但简单 BSD 协议删除了这一条款。
BSD开源协议是一个给于使用者很大*的协议。可以*的使用,修改源代码,也可以将修改后的代码作为开源或者专有软件再发布。当你发布使用了BSD协议的代码,或者以BSD协议代码为基础做二次开发自己的产品时,需要满足三个条件:
如果再发布的产品中包含源代码,则在源代码中必须带有原来代码中的BSD协议。
如果再发布的只是二进制类库/软件,则需要在类库/软件的文档和版权声明中包含原来代码中的BSD协议。
不可以用开源代码的作者/机构名字和原来产品的名字做市场推广。
BSD代码鼓励代码共享,但需要尊重代码作者的著作权。BSD由于允许使用者修改和重新发布代码,也允许使用或在BSD代码上开发商业软件发布和销 售,因此是对商业集成很友好的协议。很多的公司企业在选用开源产品的时候都首选BSD协议,因为可以完全控制这些第三方的代码,在必要的时候可以修改或者 二次开发。
BSD许可证的由来
BSD许可证原先是用在加州大学柏克利分校发表的各个4.4BSD/4.4BSD-Lite版本上面(BSD是Berkly Software Distribution的简写)的,后来也就逐渐沿用下来。1979年加州大学伯克利分校发布了BSD Unix,被称为开放源代码的先驱,BSD许可证就是随着BSD Unix发展起来的。
BSD授权许可证(FreeBSD Copyright Information)具有多种授权许可证。总的来说你可以对软件任意处理,只要你在软件中注明其是来自于那个项目的就可以了。也就是说你具有更大的自 由度来处置软件。如果你对软件进行了修改,你可以限制其他使用者得到你修改的软件的*。
BSD授权许可证没有实现”通透性”*,也就是其不保证软件源代码开放的连续性。这样如果你希望采用别人开发的BSD软件,进行一些修改,然后作为产品卖,或者仅仅保密自己的做的一些除了软件开发以外的工作,那么你就可以从中得利。
从赚钱为目的的商务角度看来,如果你使用了BSD授权许可证的软件,那么你就可以任意进行。
MIT
MIT 协议可能是几大开源协议中最宽松的一个。
核心条款是:
该软件及其相关文档对所有人免费,可以任意处置,包括使用,复制,修改,合并,发表,分发,再授权,或者销售。唯一的限制是,软件中必须包含上述版 权和许可提示。
这意味着:
你可以*使用,复制,修改,可以用于自己的项目。
可以免费分发或用来盈利。
唯一的限制是必须包含许可声明。
MIT 协议是所有开源许可中最宽松的一个,除了必须包含许可声明外,再无任何限制。
Apache
Apache 协议还有以下需要说明的地方:
永久权利
一旦被授权,永久拥有。
全球范围的权利
在一个国家获得授权,适用于所有国家。假如你在美国,许可是从印度授权的,也没有问题。
授权免费,且无版税
前期,后期均无任何费用。
授权无排他性
任何人都可以获得授权
授权不可撤消
一旦获得授权,没有任何人可以取消。比如,你基于该产品代码开发了衍生产品,你不用担心会在某一天被禁止使用该代码。
分发代码方面包含一些要求,主要是,要在声明中对参与开发的人给予认可并包含一份许可协议原文。
四,linux特性
linux系统主要有以下特性:
1,多用户
2,多任务
3,多平台
4,良好的用户界面
5,强大的网络功能
6,安全、稳定和高效
7,良好的可移植性
8,开放和免费
五,Linux 内核版本
uname -r 命令查看当前内核版本。
内核版本号及其含义:
主版本号:当内核有重大改动时,主版本号+1。
次版本号:当内核有较小改动时,次版本号+1。次版本号为奇数,代表此内核版本为测试版、为偶数则代表此内核版本为稳定版。
末版本号:当内核有轻微的改动时,末版本号+1。
修订次数:。
内核与发行版:内核只实现了操作系统最关键的部分,在此基础上提供用户界面、安装界面、管理工具和一些应用软件便成为“发行版”。发行版本主要有:Red Hat 、Ubuntu 、 Fedora 、SuSe 、Debian、Centos 、Red Flag。
六,Linux的哲学思想
1,一切皆文件
把几乎所有资源统统抽象为文件形式,包括硬件设备,甚至通信接口等 比如说:
物理终端:/dev/console
虚拟终端:/dev/tty#(#为1~6)
串行终端:/dev/ttyS#
伪终端:/dev/pts/#
把所有资源抽象成文件,不仅便于理解,且有助于管理
2,由众多功能单一目的的小程序组成;一个程序只做好一件事,组合小程序完成复杂任务
3,尽量避免跟用户交互
易于以编程的方式实现自动化任务
4,使用文本文件保存配置信息
最易于实现的底层接口表现形式。通过文本保存,就可以使用文本编辑器实现大多数程序的管理工作
5,提供机制,而非策略
机制,是实现某个功能需要的原语操作和结构
策略,是某功能的具体实现
提供机制,而非策略,指的就是要给用户充分的自主可调配性