# “源产控”系列（一）CentOS 8之初相识

> 作者：zning（https://ning.ae） · 发布：2020/06/27 18:19 下午 (UTC+8) · 原文：https://zning.me/15932531416990.html

> **作者按：**当下国内外软件开发领域，开源队伍的壮大趋势随着微软收购Github达到了新的高度，众多业界巨头例如Google、Facebook、IBM、Oracle、亚马逊、腾讯、阿里等亦在开源社区之中贡献着自己的智慧，并且带动了开源理念与风气。而随着开源的蓬勃发展，国产化软件也势头正猛，以阿里云OceanBase为代表的一系列国产化软件，凭借着它们强大的业务背景和一定体量的业务需求锤炼，成为了国产化软件的排头兵，带动了更多行业领域企业加入这股洪流之中。这两股强大的东风之流行，伴随着宏观经济贸易的不确定性，点燃了国民核心行业核心技术“自主可控”的星星之火。开源、国产化、自主可控，三个议题的碰撞会出现怎样的火花？“源产控”专题就在此应运而生。
> 
> 慧响技术角“源产控”专题，将聚焦开源、国产化、自主可控三个方向的技术，以操作系统、中间件、数据库、程序应用等为粗分类，更新相关技术的发展趋势、探究技术核心的深度使用、系统总结技术整体架构，为对相关技术的学习者提供可观的资料，亦为个人同步学习总结的笔记，以飨读者。
> 
> 本系列首文，即本文，以近期更新的开源操作系统CentOS 8的介绍为开篇，对CentOS 8进行一些简要的介绍，未来对开源操作系统CentOS 8，将陆续更新其基本使用总结、特性使用总结等方面的系列文章，敬请期待。

## CentOS是什么

下面简介摘自CentOS维基百科词条：

> CentOS（**C**ommunity **Ent**erprise **O**perating **S**ystem）是Linux发行版之一，它是来自于Red Hat Enterprise Linux（RHEL）依照开放源代码规定发布的源代码所编译而成。由于出自同样的源代码，因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同，在于CentOS并不包含封闭源代码软件。CentOS 对上游代码的主要修改是为了移除不能自由使用的商标。2014年，CentOS宣布与Red Hat合作，但CentOS将会在新的委员会下继续运作，并不受RHEL的影响。

比较通俗直白一点的说法，CentOS是Red Hat发行的商业版RHEL的开源替代版，也是作为Linux服务器使用的比较主流的开源操作系统之一。

CentOS第一次接触在2014年，也就是CentOS与Red Hat宣布合作的那一年。印象比较深的也是那一年发行的CentOS 7，由于其与Red Hat合作后，将RHEL 7的一些新特性例如`systemd`等引入，导致与其CentOS 6一些操作差距过大，再加上新系统教程较少，在系统上折腾了很久，也因此印象深刻。

截止本文撰稿，CentOS最新版本是`CentOS 8-2004`，其RHEL基础版为`RHEL 8.2`。

![](media/15932531416990/15932603351520.jpg)

![](media/15932531416990/15932603152658.jpg)

## CentOS 8的新特性

关于CentOS 8，主要的特性介绍如下：

CentOS项目是对`Red Hat Enterprise Linux`的100％兼容的重建，完全符合Red Hat的重新发布要求，并发布了一个新版本：`CentOS 8.0.1905`，适用于所有受支持的体系结构。

紧随`CentOS Linux 7.7`发行版之后，CentOS Linux 8现已正式发布，新版本基于`Red Hat Enterprise Linux 8.0`源，这意味着它具有混合云时代的所有强大的新特性和增强功能。

`CentOS` 完全遵守 Red Hat 的再发行政策，并且致力与上游产品在功能上完全兼容。CentOS 对组件的修改主要是去除 Red Hat 的商标及美工图。

该版本还包含全新的 `CentOS Streams`，Centos Stream 是一个滚动发布的 Linux 发行版，它介于 Fedora Linux的上游开发和 RHEL 的下游开发之间而存在。你可以把 CentOS Streams 当成是用来体验最新红帽系 Linux 特性的一个版本，而无需等太久。

CentOS 8 主要改动和 `RedHat Enterprise Linux 8`是一致的，基于`Fedora 28`和内核版本 4.18, 为用户提供一个稳定的、安全的、一致的基础，跨越混合云部署，支持传统和新兴的工作负载所需的工具。此次发布的亮点包括：

**发行版**

通过 `BaseOS`和应用流 (`AppStream`) 仓库发布.

`AppStream`是对传统 `rpm`格式的全新扩展，为一个组件同时提供多个主要版本

**软件管理**

YUM 包管理器基于 DNF 技术，提供模块化内容支持，增强了性能，并且提供了设计良好的 API 用于与其他工具集成

**Shell 和命令行工具**

RHEL 8 提供了版本控制工具: `Git 2.18`, `Mercurial 4.8`, 和 `Subversion 1.10.`

**动态编程语言、Web 和数据库服务器**

Python 3.6 是默认的 Python 环境，有限支持 Python 2.7

Node.js 是在 RHEL 最新包含的，其他动态语言更新包括: PHP 7.2, Ruby 2.5, Perl 5.26, SWIG 3.0

RHEL 8 提供的数据库服务包括：MariaDB 10.3, MySQL 8.0, PostgreSQL 10, PostgreSQL 9.6, 和 Redis 5.

RHEL 8 提供Apache HTTP Server 2.4 以及首次引入的Nginx 1.14.

Squid 版本升级到 4.4 ，同时也首次提供Varnish Cache 6.0.

**桌面环境**

GNOME Shell 升级到 3.28.

GNOME 会话和显示管理使用 Wayland 作为默认的显示服务器，而 RHEL 7 默认的 X.Org server 依然提供

**安装程序以及镜像的创建**

Anaconda 安装程序可使用 LUKS2 磁盘加密，支持 NVDIMM 设备.

Image Builder 工具可以创建不同格式的自定义系统镜像，包括满足云平台的各种格式

支持使用硬件管理控制台 HMC 从 DVD 安装，同时也提供 IBM Z 主机的 Support Element (SE)

**内核**

扩展 Berkeley Packet Filtering (eBPF) 特性使得用户空间的各个点上附加自定义程序，包括 (sockets, trace points, packet reception) ，用于接收和处理数据。目前该特性还处于特性预览阶段

BPF Compiler Collection (BCC), 这是一个用来创建高效内核跟踪和操作的工具，目前处于技术预览阶段

**文件系统和存储**

LUKS version 2 (LUKS2) 格式替代旧的 LUKS (LUKS1) 格式. dm-crypt 子系统和 cryptsetup 工具现在使用 LUKS2 作为默认的加密卷格式

**安全**

默认的系统级的 加密策略, 用于配置核心加密子系统，覆盖 TLS, IPsec, SSH, DNSSEC, 和 Kerberos 协议。增加全新命令update-crypto-policies, 管理员可以轻松切换不同模式： `default`, `legacy`, `future`, 和 `fips`.

支持智能卡和硬件安全模块 (HSM) 的 PKCS #11

**网络**

nftables 框架替代 iptables 作为默认的网络包过滤工具

firewalld 守护进程使用 nftables 作为默认后端

支持 IPVLAN 虚拟网络驱动程序，用于连接多个容器

eXpress Data Path (XDP), XDP for Traffic Control (tc), 以及 Address Family eXpress Data Path (AF_XDP), 可作为部分 Berkeley Packet Filtering (eBPF) 扩展特性，目前还是技术预览阶段.

**虚拟化**

在RHEL8中创建的虚拟机中，现在支持并自动配置更现代的基于PCI Express的计算机类型（Q35）。这在虚拟设备的功能和兼容性方面提供了多种改进。

现在可以使用RHEL8Web控制台（也称为“驾驶舱”）创建和管理虚拟机。

qemu仿真器引入了沙箱功能，它为系统调用qemu可以执行的操作提供了可配置的限制，从而使虚拟机更加安全。

**编译器和开发工具**

GCC 编译器更新到 8.2 版本，支持更多 C++标准，更好的优化以及代码增强技术、提升警告和硬件特性支持

不同的代码生成、操作和调试工具现在可以处理 DWARF5 调试信息格式（体验阶段）

核心支持 eBPF 调试的工具包括BCC, PCP, 和 SystemTap.

glibc 库升级到 2.28 支持 Unicode 11, 更新的 Linux 系统调用，关键提升主要在 `DNS stub resolver` 、额外的安全加强和性能提升

RHEL 8 提供 `OpenJDK 11`, `OpenJDK 8`,`<span> </span>IcedTea-Web`, 以及不同 Java 工具，如 `Ant`, `Maven`, 或 `Scala`.

**高可用和集群**

Pacemaker 集群资源管理器更新到最新版本 2.0.0, 修复了一系列 bug 以及功能做了提升

pcs 配置系统完全支持 Corosync 3, knet, 和节点名称

**相关链接**

CentOS 8 官方发行说明：

> https://lists.centos.org/pipermail/centos-announce/2019-September/023449.html

完整的 RedHat 8 发行说明请看

> https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/8.0_release_notes/overview

目前来看，CentOS 8的修改相比CentOS 6->7的修改来说，在系统管理层次上，完善相对变动要多不少，加上云管环境的逐步推广，也加上了云的特性。
