认识 Linux 操作系统和开源社区

前言

Linux,全称 GNU/Linux,是一种免费使用和自由传播的类 UNIX 操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到 Minix 和 Unix 思想的启发,是一个基于 POSIX 和 Unix 的多用户、多任务、支持多线程和多CPU的操作系统。
本文综合整理自各大书籍、文献,来处较多,此处不一一列举,本文仅作为个人笔记。

UNIX 与 Linux 发展史

UNIX 发展史

1965年,美国麻省理工学院(MIT)、通用电气公司(GE)及 AT&T 的贝尔实验室联合开发 Multics 工程计划,其目标是开发一种交互式的具有多道程序处理能力的分时操作系统,但因 Multics 追求的目标过于庞大复杂,项目进度远远落后于计划,最后贝尔实验室宣布退出。

1969年,美国贝尔实验室的肯·汤普森在 DEC PDP-7 机器上开发出了 UNIX 系统。

1971年,肯·汤普森的同事丹斯尼·里奇发明了 C语言;1973年,UNIX 系统的绝大部分代码用 C语言重写,这为提高 UNIX 系统的可移植性打下基础。

Linux 发展史

UNIX 系统是开源而且免费的,但是在 1979年时,AT&T 公司宣布了对 UNIX 系统的商业化计划,随之开源软件转变成了版权式软件产业,源代码被当做商业机密,成为专利产品,人们不能再自由地享受科技成果。

1984年,Richard Stallman 面对封闭的软件创作环境,发起了 GNU 源代码开放计划并制定了著名的 GPL 许可协议。

1987年,GNU 计划获得了一项重大突破——gcc 编译器发布,这使得程序员可以基于该编译器写出属于自己的开源软件。

1991年10月,芬兰赫尔辛基大学的在校生 Linus Torvalds (李纳斯·托沃兹)编写了一款名为 Linux 的操作系统。该系统因为较高的代码质量且基于 GNU GPL 许可协议的开放源代码特性,迅速得到了 GNU 计划和一大批黑客程序员的支持,随后 Linux 系统进入如火如荼的发展阶段。

1994年1月,Bob Young 在 Linux 系统内核的基础之上,集成了众多的源代码和程序软件,发布了红帽系统并开始出售技术服务。

1998年后,随着 GNU 源代码开放计划和 Linux 系统的继续火热,以 IBM 和 Intel 为首的多家 IT 企业巨头开始大力推动开放源代码软件的发展。

Linux 的组成

Linux 内核:内核是系统的核心,是运行程序和管理硬件的核心程序

文件系统:文件存放在磁盘等存储设备上的组织方法

Shell:Shell 是系统的用户界面,提供了用户与内核进行交互操作的一种接口

应用程序:运行于系统之上的软件程序

Linux 的内核版本

命名规则

版本号经历了三种不同的命名方案

1.0~2.6之前的版本:A.B.C
  • A——有大幅度变动的主版本号;
  • B——有一些重大修改的次版本号;
  • C——是指有轻微修订的修正号,C为奇数开发版,偶数是稳定版。
2.6.0.0~2.6.39.4版本:A.B.C.D
  • A和B——依次固定为2和6;C——是内核的版本;D——安全补丁号。
3.0版本开始:X.A.B
  • X ——主版本号,目前有3、4、5;A——内核的版本,B——安全补丁。

从本版本开始不再使用偶数代表稳定版,奇数代表开发版这样的命名方式

  • mainline——主线版本(代表目前主力在做的版本或曰开发版)
  • stabled——稳定版
  • longterm ——长期支持版
  • EOL (End of Life)——已停止技术支持的旧版本。

版本

1994年,Linux 1.0问世
1999年,Linux Kernel 2.2
2003年,Linux Kernel 2.6
2012年,Linux Kernel 3.5.3
2014年,Linux Kernel 3.15
2018年,Linux Kernel 4.15
2020年,Linux Kernel 5.85

Linux 内核官网:http://www.kernel.org/

Linux 发行版本

Linux 内核和 Linux 发行版本

Linux 系统内核指的是一个由 Linus Torvalds 负责维护,提供硬件抽象层、硬盘及文件系统控制及多任务功能的系统核心程序。

Linux 发行版本是我们常说的 Linux 操作系统,也即是由 Linux 内核与各种常用软件的集合产品。

常见版本

全球大概有上百款 Linux 系统的发行版本,每个系统都有自己特定的人群和目标。

红帽企业版 Linux (RedHat Enterprise Linux,RHEL)

红帽公司是全球最大的开源技术厂商, RHEL 是全世界内使用最广泛的 Linux 系统。 RHEL 系统具有极强的性能与稳定性,并且在全球范围内拥有完善的技术支持。
社区企业操作系统(Community Enterprise Operating System,CentOS)
通过把 RHEL 系统重新编译并发布给用户免费使用的 Linux 系统,具有广泛的使用人群。 CentOS 当前已被红帽公司“收编”。

Fedora

由红帽公司发布的桌面版系统套件(目前已经不限于桌面版)。用户可免费体验到最新的技术或工具,这些技术或工具在成熟后会被加入到 RHEL 系统中,因此 Fedora 也称为 RHEL系统的“试验田”。运维人员如果想时刻保持自己的技术领先,就应该多关注此类 Linux 系统的发展变化及新特性,不断改变自己的学习方向。

openSUSE

源自德国的一款著名的 Linux 系统,在全球范围内有着不错的声誉及市场占有率。

Gentoo

具有极高的自定制性,操作复杂,因此适合有经验的人员使用。

Debian

稳定性、安全性强,提供了免费的基础支持,可以良好地支持各种硬件架构,以及提供近十万种不同的开源软件,在国外拥有很高的认可度和使用率。

Ubuntu

是一款派生自 Debian 的操作系统,对新款硬件具有极强的兼容能力。 Ubuntu 与 Fedora 都是极其出色的 Linux 桌面系统,而且 Ubuntu 也可用于服务器领域。

Arch Linux

是通用 X86-64 GNU/Linux 发行版。Arch 采用滚动升级模式,尽全力提供最新的稳定版软件。初始安装的Arch只是一个基本系统,随后用户可以根据自己的喜好安装需要的软件并配置成符合自己理想的系统。

其他

中标麒麟、UOS、Deepin、红旗 Linux、中兴新支点、银河麒麟、优麒麟、openEuler、Kali Linux 等。

开源社区

开源精神

源软件的特点就是把软件程序与源代码文件一起打包提供给用户,让用户在不受限制地使用某个软件功能的基础上还可以按需进行修改,或编制成衍生产品再发布出去。用户具有使用自由、修改自由、重新发布自由以及创建衍生品的自由。

开源软件特性

低风险:使用闭源软件无疑把命运交付给他人,一旦封闭的源代码没有人来维护,你将进退维谷;而且相较于商业软件公司,开源社区很少存在倒闭的问题。

高品质:相较于闭源软件产品,开源项目通常是由开源社区来研发及维护的,参与编写、维护、测试的用户量众多,一般的 bug 还没有等爆发就已经被修补。

低成本:开源工作者都是在幕后默默且无偿地付出劳动成果,为美好的世界贡献一份力量,因此使用开源社区推动的软件项目可以节省大量的人力、物力和财力。

更透明:没有哪个笨蛋会把木马、后门等放到开放的源代码中,这样无疑是把自己的罪行暴露在阳光之下。

开源许可协议

GNU GPL (GNU General Public License,GNU 通用公共许可证)

只要软件中包含了遵循 GPL 协议的产品或代码,该软件就必须也遵循 GPL 许可协议且开源、 免费,因此这个协议并不适合商用软件。遵循该协议的开源软件数量极其庞大,包括 Linux 系统在内的大多数的开源软件都是基于这个协议的。

GPL 开源许可协议最大的 4 个特点

复制自由:允许把软件复制到任何人的电脑中,并且不限制复制的数量。

传播自由:允许软件以各种形式进行传播。

收费传播:允许在各种媒介上出售该软件,但必须提前让买家知道这个软件是可以免费获得的;因此,一般来讲, 开源软件都是通过为用户提供有偿服务的形式来盈利的。

修改自由:允许开发人员增加或删除软件的功能,但软件修改后必须依然基于GPL 许可协议授权。

BSD(Berkeley Software Distribution,伯克利软件发布版本)许可协议

用户可以使用修改和重新发布遵循该许可的软件,并且可以将软件作为商业软件发布和销售,前提是满足下面三个条件:

  • 如果再发布的软件中包含源代码,则源代码必须继续遵循 BSD 许可协议。
  • 如果再发布的软件中只有二进制程序,则需要在相关文档或版权文件中声明原始代码遵循了 BSD 协议。
  • 不允许使用原始软件的名字、作者名字或机构名称进行市场推广。

Apache 许可证版本(Apache License Version)许可协议

在为开发人员提供版权专利许可的同时,允许用户拥有修改代码及再发布的自由。该许可协议适用于商业软件,现在热门的 Hadoop、Apache HTTP Server、MongoDB 等项目都是基于该许可协议研发的。使用该协议是需要遵守以下四个条件:

  • 该软件及其衍生品必须继续使用 Apache 许可协议。
  • 如果修改了程序源代码,需要在文档中进行声明。
  • 若软件是基于他人的源代码编写而成的,则需要保留原始代码的协议、商标、专利声明及其他原作者声明的内容信息。
  • 如果再发布的软件中有声明文件,则需在此文件中标注 Apache 许可协议及其他许可协议。

MPL(Mozilla Public License,Mozilla 公共许可)许可协议

相较于 GPL 许可协议,MPL 更加注重对开发者的源代码需求和收益之间的平衡。

MIT(Massachusetts Institute of Technology)许可协议

目前限制最少的开源许可协议,只要程序的开发者在修改后的源代码中保留原作者的许可信息即可,因此普遍被商业软件使用。

GUN LGPL(GNU Lesser General Public License,GNU 宽通用公共许可证)

LGPL 是 GPL 的一个衍生版本,也被称为 GPL V2,该协议主要是为类库设计的开源协议。

LGPL 允许商业软件通过类库引用(link)的方式使用 LGPL 类库,而不需要开源商业软件的代码。这使得采用 LGPL 协议的开源代码可以被商业软件作为类库引用并发布和销售。

但是如果修改 LGPL 协议的代码或者衍生品,则所有修改的代码,涉及修改部分的额外代码和衍生的代码都必须采用 LGPL 协议。因此LGPL协议的开源代码很适合作为第三方类库被商业软件引用,但不适合希望以 LGPL 协议代码为基础,通过修改和衍生的方式做二次开发的商业软件采用。

bg2011050101

图源:阮一峰的网络日志


THE END