2.1 Linux 简介
2.1.1 操作系统
Linux 就是一套操作系统。
不同的硬件支持不同的函数,所以同一套操作系统无法在不同硬件平台上运行。如果想让 x86 上面跑的操作系统也能够在 Power CPU 上运行,需要“软件移植”。
Windows操作系统只能在 x86 的个人计算机上面运行。Linux 具有 可移植性。
Linux 提供了一个完整的操作系统当中最底层的硬件控制与资源管理的完整架构, 该架构沿袭 Unix 的传统,稳定而强大。”
2.1.2 Unix
-
Unix 的前身是由贝尔实验室(Bell lab.)的 Ken Thompson 利用组合语言写成的, 后来在 1971-1973 年间由 Dennis Ritchie 以 C 语言进行改写,才称为 Unix。
-
1977 年由 Bill Joy 发布 BSD (Berkeley Software 套件),这些称为 Unix-like 的操作系统。
-
1984年由 Andrew Tanenbaum 开始制作 Minix 操作系统,该系统可以提供源代码以及软件;
-
1984 年由 Richard Stallman 提倡 GNU 计划,倡导自由软件(Free software), 强调其软件可以“自由的取得、复制、修改与再发行”,设计 GPL 授权模式, 任何 GPL(General Public License)软件均不可单纯仅销售其软件,也不可修改软件授权。
-
1991 年芬兰人 Linus Torvalds 开发出 Linux 操作系统。简而言之,Linux 成功的地方主要在于: Minix(Unix), GNU, Internet, POSIX 及虚拟团队的产生。
2.1.3 自由软件
自由软件的活动:
1984 年创立 GNU 计划与 FSF 基金会的 Stallman 先生认为,写程序最大的快乐就是开发好软件给所有人使用。如果使用者有能力完善别人开发的程序,可以互相促进,共同提高。
自由软件的版权
而为了避免自己的开发出来的开源自由软件被拿去做成专利软件,Stallman 同时将 GNU 与 FSF 开发的软件,都挂上 GPL 的版权声明,FSF 的核心观念是 “版权制度是促进社会进步的手段,版权本身不是自然权力。”
GNU = GNU’s Not Unix
自由
Stallman 对 GPL 一直是强调 Free:
Free Software 是一种自由的权力,并非是 “价格”,用户可以自由的使用、复制、再发行、学习、修改与强化自由软件。
-
GPL 软件版权声明意味着:
-
取得软件与源代码:可以根据自己的需求来使用该软件
-
复制:可以自由的复制该软件
-
修改:可以修改源代码
-
再发行:可以把修改过的程序,重新自由发布
-
回馈:应把修改过的源代码回馈于社区
-
禁止修改授权:禁止将一个 GPL 授权的自由软件,修改后取消 GPL授权
-
禁止单纯销售:禁止单纯销售自由软件,而不搭配售后服务与相关手册。
自由软件可以销售,但必须搭配售后服务和相关手册。
-
自由软件与商业行为
很多 Linux 开发商销售 Linux 的售后服务,他们使用的自由软件可以在其网站下载。
GPL 对于自由软件的作者的好处:
-
软件安全性好
-
软件使用性能好
-
软件除错时间较短
-
贡献的源代码永远都存在
开放源代码
1998 年成立开放源代码促进会(开源 Initiative),提出了开源(开放源代码)一词。
开源软件的授权要求
-
公布源代码且用户有修改权
-
任意再发布:该源代码全部或部份可以被销售,且源代码可成为其他软件的元件之一,作者不该宣称具有拥有权或收取其他额外费用。
-
允许修改衍生作品,且可让再发布的软件使用相似的授权来发表
-
用户可用与原软件不同的名称来发布
-
不可限制个人或团体使用
-
不可限制应用领域
-
源代码可用于多个不同产品
-
不可具有排他条款
根据上面的定义,GPL 自由软件也可以算是开源软件的一个,只是对于商业应用的限止稍微多一些而已。
闭源软件
凌源的程序仅发布可用的二进制程序。
免费的闭源软件授权模式:
-
Freeware: “免费软件”
-
Shareware: 共享软件,使用初期免费,超过试用期必须付费。
2.2 Linux 发展
2.2.1 Linux 历程
- Minix
Linus Torvalds 在购买了最新的 Intel 386 的个人计算机后,安装了 Minix 操作系统,该操作系统随机附送源代码,Torvalds 从源代码学到很多的内核程序设计概念。
- 对 386 硬件多任务测试
早期 Intel x86 架构计算机不是很受重视的原因,是因为 x86 的芯片对于多任务的支持不好,CPU 无法顺畅地在不同的工作之间切换。该状况在 386 计算机推出后有很大改善。托瓦兹是个性能癖。为了彻底发挥 386 的性能,他花了不少时间在测试 386 机器上。
- 初次发布 Linux 0.02
托瓦兹参考 Minix 的设计理念与书上的程序码,然后仔细研究出 386 个人计算机的性能最优化, 然后使用 GNU 的自由软件将内核程序码与 386 紧紧的结合在一起,最终写出他所需要的内核程序 Linux。为了让更多的软件能够在 Linux 上运行,托瓦兹开始参考标准的 POSIX 规范。
这个正确的决定让 Linux 在起步的时候就比别人优秀,因为 POSIX 标准主要是针对 Unix 与软件运行时标准,Unix 上的软件也遵循该标准,Linux 很容易就与 Unix 共享互有的软件了。
2.2.2 Linux 的开发
- 单人维护阶段
托瓦兹自己一人开发
- 众多志愿者加入
志愿者根据 Linux 的设计架构, 写出兼容的驱动程序或软件。托瓦兹将该驱动程序或软件测试成功后,加到内核中。
对于 Linux 内核所欠缺的项目,他保持 “先求有且能跑, 再求进一步改良” 的态度。
Linux 逐渐把某些功能剥离出内核,做为单独的模块,在需要的时候才加载到内核。
- 内核功能细分
全球各个角落的人们共同开发出现在的 Linux。
2.2.3 Linux 内核版本
早期奇偶数版本号
在 2.6.x 版本以前,托瓦兹将内核的开发方向分为两条,并根据这两条内核的开发分别给予不同的内核编号:
-
主、次版本为奇数:开发中版本(development) 如 2.5.xx
-
主、次版本为偶数:稳定版本(stable) 如 2.6.xx
奇数、偶数的编号格式在 3.0 版本之后就放弃了。
新版本号命名
在 3.0 以后,版本的格式为 3.A.B,A 是内核的版本,B是安全补丁。4.0 延续 3.A.B 的命名方法。
主线版本、长期维护版本
主线版本:MainLine
长期维护版本:Longterm
从 3.0 版开始,内核主要依据主线版本来开发,开发完毕后会往下一个主线版本进行。如 3.10 是在 3.9 的架构下继续开发出来的新的主线版本。通常新一版的主线版本大约在 2~3 个月会被提出,之所以会有新的主线版本,是因为加入了新功能。
旧的版本在新的主线版本出现之后,会有两种机制来处理,一种机制为结束开发(End of Live, EOL),另外一种机制为保持该版本的持续维护,亦即为长期维护版本,如 3.10 即为一个长期维护版本。
2.2.4 Linux 发行版
Linux 是一个操作系统最底层的内核及其提供的内核工具,GNU GPL 授权模式,参考 POSIX 设计规范,兼容于 Unix 操作系统。
Linux 发行版
Torvalds 开发的 Linux 仅包含内核及其工具。更完整的 “Kernel + Softwares + Tools + 可完整安装程序”,称为 Linux 发行版。
很多商业公司开始销售 Linux 发行版。而由于 Linux 的 GPL 版权宣告,这些 Linux 发行版通常也都可以从网上下载。
各发行版区别
发行版使用的内核都是 www.kernel.org 发布的,他们所选择的软件,几乎都是目前很知名的软件,重复性特别高。
此外,软件开发商在开发的时候必须遵循 LSB (Linux Standard Base)、FHS (Filesystem Hierarchy Standard)标准规范。各家的产品其区别在于自家开发出来的管理工具,以及发行版整体管理的模式。
发行版的两大系统:
RPM 软件管理 | DPKG 软件管理 | 其他未分类 | |
---|---|---|---|
商业公司 | RHEL (Red Hat ) SuSE (Micro Focus) | Ubuntu (Canonical Ltd.) | |
技术社区 | Fedora, CentOS, OpenSuSE | Debian, B2D | Gentoo |
使用者较多: RHEL、Fedora、SuSE、CentOS
更严谨:Debian
高性能:Gentoo
2.3 Linux 应用
2.3.1 企业环境
网络服务器
Linux网络功能特别的稳定与强大,开发了很多优秀的软件,服务器软件几乎都是自由软件。
关键任务的应用
金融业与大型企业都已经使用 Linux 做为他们的关键任务应用。
学术机构的高性能运算任务
Linux 有强大的运算能力,并且 Linux 具有支持度相当广泛的 GCC 编译软件, 因此 Linux 在这方面的优势可是相当明显的!
2.3.2 个人环境
桌面电脑:
-
上网浏览 + 实时通讯
-
文本处理
-
在线办公系统
-
Office
-
电子邮件
图形化软件 X Window System 仅只是 Linux 中的一套软件,不属于内核。
移动系统(PDA、手机):
Android 是 Linux 内核的一个分支,针对手机、平板这类的 ARM 机器设计。
嵌入式系统:
家电产品、PDA、手机、数码相机以及其他微型的计算机配备,其操作系统是直接嵌入于产品当中的,所以就称为嵌入式系统。
包括路由器、防火墙、手机、IP共享器、交换器、机器人控制芯片、家电用品的微计算机控制器等等,都可以是 Linux 操作系统。
2.3.3 云端运用
个人计算机的 CPU 内置的核心数越来越多,导致硬件资源经常闲置,虚拟化技术得以快速发展。
云程序
许多公司都有将资源集中管理的打算,公司可以选择建立自己内部的私有云,或使用公有云。
终端设备
运算资源都集中在云里面,连网到云程序的设备越来越轻量化,如智能手机、平板、树莓派、香蕉派等。