GNU/Linux和它的发行版

:: 杂谈, 运维, 操作系统

By: David Gao

为读者介绍下GNU/Linux,以及GNU/Linux的一些比较常见的发型版本。

GNU/Linux历史背景

什么是GNU/Linux

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多 任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协 议。它支持32位和64位硬件。GNU/Linux继承了Unix以网络为核心的设计思想,是一个性能稳定 的多用户网络操作系统。

但是,其中Linux只是GNU/Linux的内核部分,不过由于GNU的内核(详细可以参见GNU Hurd) 迟迟无法推出,并且人们已经习惯将GNU/Linux简称为Linux。

Linux怎么来的

一个名叫Linus Torvalds的芬兰大学生想在他的Intel 80386上使用类似Unix的系统,最开 始他使用了Minx这个类Unix的变种(因为Minix是微内核,而Unix当时主要为宏内核)。但 是Minx当时对于80386 的支持是非常脆弱的,因此他决定要开发出一个全功能的、支持 POSIX标准的、类Unix的操作系统内核,该系统吸收了BSD和System V的优点,同时摒弃了它 们的缺点。

什么是Unix

UNIX也是一个操作系统,该操作系统是美国贝尔实验室的Ken.Thompson和Dennis Ritchie 于1969 年夏在DEC PDP–7 小型计算机上开发的一个分时操作系统。Ken Thompson 为了能在 闲置不用的PDP–7 计算机上运行他非常喜欢的星际旅行(Space travel)游戏,于是在1969 年夏天乘他夫人回家乡加利福尼亚渡假期间,在一个月内开发出了UNIX 操作系统的原型。 当时使用的是BCPL语言(基本组合编程语言),后经Dennis Ritchie 于1972 年用移植性很 强的C语言进行了改写,使得UNIX 系统在大专院校得到了推广。现在所说的Unix一般指代的 是Unix商标和符合该规范并得到授权的系统,现在还可以称为的Unix系统的有,IBM的AIX, Orcale的Solaris和Apple的MacOS X。

什么是GNU

GNU代表GNU not Unix,GNU是自由软件之父Richard Stallman在1984年组织开发的一个完全 基于自由软件的软件体系,与此相应的有一分通用公共许可证(General Public License, 简称GPL)。Linux以及与他有关的大量软件是在GPL的推动下开发和发布的。该组织为 GNU/Linux外围软件做出了巨大的贡献,例如说编译器GCC,常用的Bash等。

什么是POSIX标准

这个概念非常重要。POSIX(Portable Operating System Interface for Computing System)是由IEEE 和ISO/IEC 开发的一簇标准。 该标准是基于现有的UNIX实践和经验,描 述了操作系统的调用服务接口,用于保证编制的应用程序可以在源代码一级上在多种操作系 统上移植运行。

为什么GNU/Linux得到了发展

在当时有Unix了和很多Unix的变种,为什么发展到今天,只有GNU/Linux得到了更广泛的发 展呢?

版权之争的Unix

当时Unix的两个主流版本是AT&T的System V和加州伯克利分校开发的BSD。和AT&T的System V分支不同,BSD由大学发布,主要是用于学术研究,希望可以开源和免费软件的形式发布。 但是,4.3版本以及之前的BSD中都包括了AT&T的源代码,毫无疑问,这些源代码应该服从 AT&T的License。因此Unix版权的拥有者和相关公司,为了这些代码和版权问题,打的不可 开交,这大大的影响了Unix的两个发行版的开发和发展。

过于学术的Minx

MINIX 系统是由Andrew S. Tanenbaum(AST)开发的。因为AT&T的政策改变,在Version 7 Unix推出之后,发布新的使用许可协议,将UNIX源代码私有化,在大学中不再能使用UNIX源 代码Andrew S. Tanenbaum为了能在课堂上教授学生操作系统运作的实务细节,决定在不使 用任何AT&T的源代码前提下,自行开发与UNIX兼容的操作系统,以避免版权上的争议。他以 小型UNIX(mini-UNIX)之意,将它称为MINIX。到1991 年时版本是1.5,到2017年Minx的版 本是3.0。Minix在核心设计上采用微核心,即将操作系统分成微核心和其上的提供文件系统、 存储器管理、驱动程序等服务的服务程序,但是正如人们后来所知的微内核过于复杂以及效 率问题,在开发和实用上困难很多。

Linus本人的推广

Linus在互联网和GNU发展的初期,就很有远见的看到了互联网会推动软件的发展。充分的善 用了人和(在comp.os.minix推广Linux,以及和Andrew的对喷,可见英文写作和嘴炮能力多 重要),天时(Unix的版权之争,让BSD足足晚了好多年才被人们认知)和地利(GNU/Hurd 难产,Linux又使用GPL,Linux和GNU一拍即合)。抓住了互联网和免费的的大潮。

GNU/Linux的发行版

什么是GNU/Linux的发行版

就Linux的本质来说,它只是操作系统的核心,负责控制硬件、管理文件系统、程序进程等, 并不给用户提供各种工具和应用软件。所谓工欲善其事,被必先利其器,一套在优秀的操作 系统核心,若没有强大的应用软件可以使用,如C/C++编译器、C/C++库、系统管理工具、网 络工具、办公软件、多媒体软件、绘图软件等,也无法发挥它强大的功能,用户也无法仅仅 使用这个系统核心进行工作,因此人们以Linux内核为中心,再集成搭配各种各样的系统管 理软件或应用工具软件组成一套完整的操作系统,如此的组合便称为GNU/Linux发行版。

知名的发型版

因为GNU/Linux本身是开源的,所以任何人,任何厂商只要在遵循社区游戏规则的前提下构 建自己的发行版本,目前已知大约有300个GNU/Linux的发行版(看着头就疼,还是BSD系列好, OpenBSD和FreeBSD主打,DragonFlyBSD和NetBSD玩票)。所以这里只介绍一些比较知名的发 行版本。

Slackware

Slackware可以说是历史悠久,与很多其他的发行版不同,它坚持KISS(Keep It Simple Stupid)的原则。配置系统会有一些困难,但是更有经验的用户会喜欢这种方式的透明性和 灵活性。Slackware 很多特性体现出了KISS原则,最为有名的一些例子就是不依赖图形界面 的文本化系统配置、传统的服务管理方式和不解决依赖的包管理方式。它的最大特点就是安 装灵活,目录结构严谨,版本力求稳定而非追新。Slackware的软件包都是通常的 tgz(tar/gzip) 或者txz(xz) 格式文件再加上安装脚本。Tgz/Txz 对于有经验的用户来说, 比RPM更为灵活,并避免了APT 之类管理器可能带来的的依赖地狱。

Fedora

Fedora是一套从Red Hat Linux发展出来的免费Linux系统。Fedora的前身就是Red Hat Linux。Fedora由一个强大的社群开发,这个社群的成员以自己的不懈努力,提供并维护自 由、开放源码的软件和开放的标准。Fedora项目由 Fedora 基金会管理和控制,得到了Red Hat, Inc. 的支持。Red Hat会将一些先行技术放入Fedora进行试验(我会告诉你,你是Red Hat的小白鼠嘛),它尤其可以为在Red Hat和CentOS环境下工作的那些人带来便利。它使用 RPM包来安装软件,并且提供repo这种包管理器来简化软件包的安装流程和进行软件包升级。

Debian

Debian的目标是提供一个稳定容错的Linux版本。支持Debian的不是某家公司,而是许多在 其改进过程中投入了大量时间的开发人员,这种改进吸取了早期GNU/Linux的经验。Debian以其 稳定性著称(我会告诉你,这个版本的软件万年不更新嘛),是很多服务器和程序员所喜爱 的版本之一。Debian的创始人自杀了,实在是让人惋惜。Debian作为一个服务器专用发行版 是非常稳定的,基本上都不需要折腾。

Red Hat

可能这是最著名的Linux版本了,Red Hat Linux已经创造了自己的品牌,越来越多的人听说 过它。Red Hat在1994年创业,当时聘用了全世界500多名员工,他们都致力于开放的源代码 体系。它拥有自己的公司,能向用户提供一套完整的服务,这使得它特别适合在公共网络中 使用。这个版本的Linux也使用最新的内核,还拥有大多数人都需要使用的主体软件包。 Red Hat Linux的安装过程也十分简单明了。它的图形安装过程提供简易设置服务器的全部 信息。磁盘分区过程可以自动完成,还可以选择GUI工具完成,即使对于Linux新手来说这些 都非常简单。选择软件包的过程也与其他版本类似;用户可以选择软件包种类或特殊的软件 包。系统运行起来后,用户可以从Web站点和 Red Hat那里得到充分的技术支持。Red Hat是 一个符合大众需求的最优版本(我会告诉你,你只要拿钱就行了嘛)。在服务器和桌面系统 中它都工作得很好。Red Hat的唯一缺陷是带有一些不标准的内核补丁,这使得它难于按用 户的需求进行定制。 Red Hat通过论坛和邮件列表提供广泛的技术支持,它还有自己公司的 电话技术支持,后者对要求更高技术支持水平的集团客户更有吸引力。

SuSE

SuSE的总部设立在德国,已经奋斗了多年。SuSE一直致力于创建一个连接数据库的最佳 GNU/Linux版本。为了实现这一目的,SuSE与Oracle 和IBM合作,以使他们的产品能稳定地工作。 SuSE还开发了SuSE Linux eMail Server III,一个非常稳定的电子邮件群组应用。在SuSE 发行版,可以非常方便地访问Windows磁盘,这使得两种平台之间的切换,以及使用双系统 启动变得更容易。SuSE的硬件检测非常优秀,该版本在服务器和工作站上都用得很好。SuSE 拥有界面友好的安装过程,还有图形管理工具,可方便地访问Windows磁盘,对于终端用户 和管理员来说使用它同样方便,这使它成为了一个强大的服务器平台。

CentOS

CentOS(Community ENTerprise Operating System)是来自于Red Hat Enterprise Linux 依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度 稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用(我会告诉你,以为 企业想省钱,运维要靠这个东西来赚钱嘛,国内运维主流是CentOS剩下版本很少)。两者的 不同,在于CentOS并不包含封闭源代码软件,CentOS 是一个基于Red Hat Linux 提供的可 自由使用源代码的企业级GNU/Linux发行版本。每个版本的CentOS都会获得十年的支持(通过安 全更新方式)。新版本的 CentOS 大约每两年发行一次,而每个版本的 CentOS 会定期(大 概每六个月)更新一次,以便支持新的硬件。这样,建立一个安全、低维护、稳定、高预测 性、高重复性的 GNU/Linux 环境。

Ubuntu

Ubuntu是一个基于Debian的发行版本,但是软件更新频度相对较高。它提供两个主要版本, 一个是桌面版本,一个是服务器版本,但是Ubuntu比较注重桌面版本。Ubuntu在发布版本的 时候,会发布一个LTS版本,这个版本会提供长达三年的升级支持。

Gentoo

Gentoo它能为几乎任何应用程序或需求自动地作出优化和定制。追求极限的配置、性能,以 及顶尖的用户和开发者社区,都是Gentoo体验的标志特点。 Gentoo的哲学是自由和选择, 得益于一种称为Portage的技术,Gentoo能成为理想的安全服务器、开发工作站、专业桌面、 游戏系统、嵌入式解决方案或者别的东西。Gentoo Linux是滚动升级的发行版,所以在上游 软件发布很短时间后,其上就会有软件包可用。Gentoo的基础系统和软件包都是根据用户指 定的USE标识直接从源代码构建(我会告诉你,这玩意难用死了嘛,至少不要用Python写好 不好)。

Arch

Arch Linux是一个 “以用户为中心”的发行版。此发行版是为了满足贡献者的需求,而不是 为了吸引尽可能多的用户。Arch 适用于乐于自己动手的用户,他们愿意花时间阅读文档, 解决自己的问题。 报告问题、完善 Wiki 社区文档、为其它用户提供技术支持。Arch 用户 仓库 收集用户贡献的软件包,Arch的最大优势就是滚动升级。

Linux发行版选择

新手

作为Linux的新手,简单易用的Ubuntu桌面的LTS或者Debian是非常不错的选择,因为这两个 版本的包管理系统非常成熟,桌面也非常简洁。

动手能力强的

可选发型版本就比较多了,例如说Gentoo,Arch和Slackware,包括这里没有列举的LFS(我 会告诉你,用了之后你会怀疑,这也算发行版嘛)。

研发或运维

根据公司实际使用情况选吧,但是绝大部分国内公司都会选CentOS(我会告诉你,运维圈内 不会CentOS会被鄙视嘛)。所以好好的用Fedora,CentOS和Red Hat才是正道。