返回
2025/03/19
3. 使用 Oracle Linux 并发现差异
之前,我们解释了什么是 RHEL 兼容发行版以及 Oracle Linux 的特点。这次,我们将实际操作 Oracle Linux,说明它与 RHEL 和 CentOS 的差异。
1. 如何尝试 Oracle Linux
您可以通过以下方式轻松尝试 Oracle Linux。这次,我们将主要使用方法 1,并部分使用方法 2。
- 在 VirtualBox 或类似软件上安装 Oracle Linux。
- 使用 Oracle Cloud Infrastructure Always Free
- 在 AWS 或 Azure 中使用 Oracle Linux 镜像
此外,Oracle Linux 介质可以从以下网站免费获取:
有关安装说明,请参阅“安装 Oracle Linux 8 Oracle Linux”手册。它与 RHEL、CentOS Stream 和 AlmaLinux 几乎相同。此外,我们推荐“OCI 文档:Oracle Linux”用于 Oracle Cloud Infrastructure。
2. 发现 Oracle Linux 的差异
让我们来看看 Oracle Linux 的实际操作。这次我们将使用 Oracle Linux 8 Update 6。即使次要版本不同,也几乎相同,因此无需担心这一点。Oracle Linux 7 基本上也相同。这次,我们将使用以下 Linux 发行版进行比较:
- Red Hat Enterprise Linux 8
- CentOS Stream
CentOS Stream 不是纯 RHEL 兼容发行版。因此,AlmaLinux 和 MIRACLE LINUX 更适合比较,但这次我们将使用更易上手的 CentOS Stream。
2.1. 检查发行版类型
检查 Linux 发行版类型。Linux 有一个名为 /etc/*-release 的文件,可以用来确定发行版。如果您检查,会发现有四个名为 /etc/*-release 的文件。
$ ls -l /etc/*release
-rw-r--r--. 1 root root 32 May 13 10:14 /etc/oracle-release
-rw-r--r--. 1 root root 479 May 13 10:14 /etc/os-release
-rw-r--r--. 1 root root 45 May 13 10:14 /etc/redhat-release
lrwxrwxrwx. 1 root root 14 May 13 10:14 /etc/system-release -> oracle-release
如果查看文件内容,可以看到它是 Oracle Linux 8.6。
$ cat /etc/oracle-release
Oracle Linux Server release 8.6
然而,您无需担心 Linux 中小数点后的次要版本。这是因为,根据存储库设置,运行 yum update 会导致次要版本自动上升。
有趣的是 /etc/redhat-release 的内容。它显示的是 Red Hat Enterprise Linux 版本,而不是 Oracle Linux。
$ cat /etc/redhat-release
Red Hat Enterprise Linux release 8.6 (Ootpa)
但是 CentOS Stream 呢?/etc/redhat-release 是指向 /etc/centos-release 的符号链接。当然,内容是相同的。
$ ls -l /etc/*release
-rw-r--r--. 1 root root 24 Sep 14 2021 /etc/centos-release
lrwxrwxrwx. 1 root root 21 Sep 14 2021 /etc/os-release -> ../usr/lib/os-release
lrwxrwxrwx. 1 root root 14 Sep 14 2021 /etc/redhat-release -> centos-release
lrwxrwxrwx. 1 root root 14 Sep 14 2021 /etc/system-release -> centos-release
$ cat /etc/centos-release
CentOS Stream release 8
$ cat /etc/redhat-release ★内容相同
CentOS Stream release 8
看起来这种规范是为了应对检查发行版类型的程序。硬件供应商提供的商业软件和驱动程序通常使用 /etc/*-release 来确定发行版的类型和版本。这可能是因为他们希望通过保留原始的 /etc/redhat-release 来绕过检查。
2.2. 检查内核
检查内核。由于末尾是 el8uek,它不是 RHEL 兼容内核,而是 Oracle Linux 独特的 Unbreakable Enterprise Kernel(UEK)。
$ uname -r
5.4.17-2136.307.3.1.el8uek.x86_64
如果查看已安装的内核,可以看到除了 UEK 外,还安装了 RHEL 兼容内核(RHCK:Red Hat Compatible Kernel)。
$ rpm -qa | grep kernel
kernel-uek-5.4.17-2136.307.3.1.el8uek.x86_64 ★UEK
kernel-modules-4.18.0-372.9.1.el8.x86_64
kernel-tools-libs-4.18.0-372.9.1.el8.x86_64
kernel-4.18.0-372.9.1.el8.x86_64 ★RHEL 兼容内核
kernel-tools-4.18.0-372.9.1.el8.x86_64
kernel-core-4.18.0-372.9.1.el8.x86_64
kernel-headers-4.18.0-372.9.1.el8.x86_64
对于 UEK 和 RHCK,您会发现版本号差异很大。
- UEK:kernel-uek-5.4
- RHCK:kernel-4.18
版本差异显著的原因在于它们所基于的 Linux 内核不同。UEK 基于更上游的 Linux 内核 5.4,并带有 Oracle Linux 特定的定制以及与 RHCK 的应用程序兼容性。
UEK 和 RHCK 在应用程序级别上是兼容的,因此通常情况下它们都可以正常使用。当您使用的软件、设备驱动程序等不支持 UEK 时,您可能需要考虑切换。
2.3. 发现 RHEL 兼容内核
下表显示了 RHEL 兼容发行版与内核版本之间的关系。如果是相同的主版本,“版本号”不会改变。改变的是内核版本后的“发布号”。
发行版 | 内核版本 |
---|---|
基于 RHEL8 | kernel-4.18.0 |
基于 RHEL7 | kernel-3.10.0 |
基于 RHEL6 | kernel-2.6.32 |
下图显示了内核包命名规则。如果是相同的主版本,“版本号”将保持不变,“发布号”会增加。对于 Oracle Linux 中的 RHEL 兼容内核,会发布与 RHEL 相同的内核,直到发布号为止。

让我们参考一下 RHEL 兼容内核的变更日志(变更历史)。版本 4.18.0-372.9.1.el8 似乎应用了一些兼容性补丁,例如密钥,而未发生变化。如果您感兴趣,请查看源包(SRPM)。
# rpm -q --changelog kernel-4.18.0-372.9.1.el8.x86_64|head
* Wed May 11 2022 Natalya Naumova [4.18.0-372.9.1.el8.OL8]
- 更新 Oracle Linux 证书 (Kevin Lyons)
- 禁用 aarch64 的签名 (Ilya Okomin)
- Oracle Linux RHCK 模块签名密钥已添加到内核受信任密钥列表 (olkmod_signing_key.pem) [Orabug: 29539237]
- 更新 x509.genkey [Orabug: 24817676]
- 与 shim-ia32 和 shim-x64 <= 15-11.0.5.el8 冲突
* Fri Apr 15 2022 Augusto Caringi [4.18.0-372.9.1.el8]
- scsi: qedi: 修复断开连接处理失败 (Chris Leech) [2071519]
- scsi: iscsi: 修复未绑定端点错误处理 (Chris Leech) [2071519]
2.4. 检查 Yum 存储库
检查 Yum 存储库。与 RHEL 不同,使用 Oracle Linux,您无需支持合同(RH 是订阅合同)即可获取更新包。但是,如果您签订了支持合同,还可以使用支持合同用户的包,例如 Ksplice。
默认情况下,以下存储库是启用的。此外,从 Oracle Linux 8 开始,已从 yum 更改为 dnf,但由于兼容性,我们故意使用 yum。
$ yum repolist
repo id repo name
ol8_UEKR6 最新的 Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
ol8_appstream Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest Oracle Linux 8 BaseOS Latest (x86_64)
每个存储库的内容如下:
存储库 | 说明 |
---|---|
ol8_baseos_latest | 操作系统的核心包 |
ol8_appstream | 应用程序、开发语言等 |
ol8_UEKR6 | UEK R6 |
Oracle Cloud Infrastructure 的 Oracle Linux 8 配置如下。启用了 OCI 特定和 Ksplice 存储库。
ol8_UEKR6 最新的 Unbreakable Enterprise Kernel Release 6 for Oracle Linux 8 (x86_64)
ol8_addons Oracle Linux 8 Addons (x86_64)
ol8_appstream Oracle Linux 8 Application Stream (x86_64)
ol8_baseos_latest Oracle Linux 8 BaseOS Latest (x86_64)
ol8_ksplice Ksplice for Oracle Linux 8 (x86_64)
ol8_oci Oracle Linux 8 OCI Packages (x86_64)
ol8_oci_included Oracle Linux 8 上 OCI 用户的 Oracle 软件 (x86_64)
让我们也与其他发行版进行检查。默认启用的存储库数量不同,但通常的 baseos 和 appstream 是相同的。
RHEL8
repo id repo name
rhel-8-for-x86_64-appstream-rpms Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
rhel-8-for-x86_64-baseos-rpms Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
CentOS Stream
repo id repo name
appstream CentOS Stream 8 - AppStream
baseos CentOS Stream 8 - BaseOS
epel Extra Packages for Enterprise Linux 8 - x86_64
epel-modular Extra Packages for Enterprise Linux Modular 8 - x86_64
extras CentOS Stream 8 - Extras
extras-common CentOS Stream 8 - Extras common packages
Oracle Linux 与其他发行版的存储库 ID 差异
Oracle Linux | RHEL | CentOS Stream |
---|---|---|
ol8_baseos_latest | rhel-8-for-x86_64-baseos-rpms | baseos |
ol8_appstream | rhel-8-for-x86_64-appstream-rpms | appstream |
以下显示了包括已禁用存储库在内的内容:
$ yum repolist all
repo id repo name status
ol8_UEKR6 最新的 Unbreakable Enterprise Kernel Release enabled
ol8_UEKR6_RDMA Oracle Linux 8 UEK6 RDMA (x86_64) disabled
ol8_addons Oracle Linux 8 Addons (x86_64) disabled
ol8_appstream Oracle Linux 8 Application Stream (x86_64) enabled
ol8_baseos_latest Oracle Linux 8 BaseOS Latest (x86_64) enabled
ol8_codeready_builder Oracle Linux 8 CodeReady Builder (x86_64) - disabled
ol8_distro_builder Oracle Linux 8 Distro Builder (x86_64) - Uns disabled
ol8_kvm_appstream Oracle Linux 8 KVM Application Stream (x86_6 disabled
ol8_u0_baseos_base Oracle Linux 8 BaseOS GA (x86_64) disabled
ol8_u1_baseos_base Oracle Linux 8.1 BaseOS (x86_64) disabled
ol8_u2_baseos_base Oracle Linux 8.2 BaseOS (x86_64) disabled
ol8_u3_baseos_base Oracle Linux 8.3 BaseOS (x86_64) disabled
ol8_u4_baseos_base Oracle Linux 8.4 BaseOS (x86_64) disabled
ol8_u4_security_validation Oracle Linux 8 Update 4 (x86_64) Security Va disabled
ol8_u5_baseos_base Oracle Linux 8.5 BaseOS (x86_64) disabled
ol8_u6_baseos_base Oracle Linux 8.6 BaseOS (x86_64) disabled
此外,一些存储库默认未安装。yum list available 命令显示包含存储库定义的包列表。例如,oracle-epel-release-el8 是 RHEL 系发行版中常用的“EPEL”存储库。只需运行 yum install oracle-epel-release-el8 即可使用 EPEL 包。
$ yum list available *release-el8.x86_64
Available Packages
mysql-release-el8.x86_64 1.0-3.el8 ol8_baseos_latest
oracle-epel-release-el8.x86_64 1.0-5.el8 ol8_baseos_latest
oracle-gluster-release-el8.x86_64 1.0-2.el8 ol8_baseos_latest
oracle-instantclient-release-el8.x86_64 1.0-1.el8 ol8_baseos_latest
oracle-linux-manager-client-release-el8.x86_64 1.0-1.el8 ol8_baseos_latest
oracle-olcne-release-el8.x86_64 1.0-6.el8 ol8_baseos_latest
oracle-ovirt-release-el8.x86_64 1.0-1.0.3.el8 ol8_baseos_latest
oracle-release-el8.x86_64 1.0-1.el8 ol8_baseos_latest
oracle-software-release-el8.x86_64 1.0-1.el8 ol8_baseos_latest
oracle-spacewalk-client-release-el8.x86_64 1.0-1.el8 ol8_baseos_latest
oraclelinux-automation-manager-release-el8.x86_64
1.0-1.el8 ol8_baseos_latest
oraclelinux-developer-release-el8.x86_64 1.0-7.el8 ol8_baseos_latest
oraclelinux-release-el8.x86_64 1.0-24.el8 ol8_baseos_latest
了解更多关于 Oracle Linux 上 Yum 存储库的信息,请访问 https://yum.oracle.com/。
除了可以下载更新包外,我们建议您查看它,因为它包含各种信息。

2.5. 检查 Oracle Linux 特定包
一些包仅由 Oracle Linux 提供,但默认安装基本上是相同的。为供参考,这里列出了以 oracle 命名的包。我们将省略细节,但它们是必须更改的部分,例如标志、许可证、存储库、GPG 密钥等。
# rpm -qa | grep oracle
oraclelinux-release-8.6-1.0.5.el8.x86_64
oraclelinux-release-el8-1.0-23.el8.x86_64
oracle-logos-84.5-1.0.1.el8.x86_64
3. 将内核更改为 RHCK
供您参考,以下是如何将默认内核 UEK 更改为 RHCK 的方法。使用 grubby 进行更改。
1. 检查默认内核。您可以看到它是 /boot/vmlinuz-5.4.17-2136.307.3.1.el8uek.x86_64,索引号为“0”。
# grubby --default-index
0
# grubby --default-kernel
/boot/vmlinuz-5.4.17-2136.307.3.1.el8uek.x86_64
2. 接下来,显示已安装内核的列表。index = 1 是 RHCK。
# grubby --info=ALL | grep -A 1 ^index
index=0
kernel="/boot/vmlinuz-5.4.17-2136.307.3.1.el8uek.x86_64"
--
index=1
kernel="/boot/vmlinuz-4.18.0-372.9.1.el8.x86_64"
--
index=2
kernel="/boot/vmlinuz-0-rescue-5b64998859b34f7884afea6dd27a9390"
3. 可以通过指定内核路径或索引号进行更改。您可以使用任一方法,但应指定内核路径以防止错误。
★指定内核路径
# grubby --set-default=/boot/vmlinuz-4.18.0-372.9.1.el8.x86_64
★指定索引号
# grubby --set-default-index=1
4. 确保默认内核已更改为 RHCK。
# grubby --default-kernel
/boot/vmlinuz-4.18.0-372.9.1.el8.x86_64
5. 接下来,使用 /etc/sysconfig/kernel 将默认内核更改为 RH 兼容内核。如果不修复这一点,更新 yum 时将返回到 UEK。
/etc/sysconfig/kernel 内容
# UPDATEDEFAULT 指定 kernel-install 是否应将新内核设为默认值
UPDATEDEFAULT=yes
# DEFAULTKERNEL 指定默认内核包类型
DEFAULTKERNEL=kernel
#DEFAULTKERNEL=kernel-uek ★注释掉并添加上面的行
您可以手动更改,但也可以使用以下命令更改。
# sed -i -e 's/DEFAULTKERNEL=kernel-uek/DEFAULTKERNEL=kernel/' /etc/sysconfig/kernel
6. 重启以启用修改后的内核。
# shutdown -r
7. 重启后登录时,已更改为 RH 兼容内核。此过程即完成。
# uname -r
4.18.0-372.9.1.el8.x86_64
4. 结论
在本文中,我们重点介绍了 CentOS 和 RHEL 之间的差异。事实上,它们在正常使用中几乎相同。如果有人告诉您安装的环境是 CentOS,您可能不会注意到。
然而,尽管作为 RHEL 兼容发行版的基本部分相同,Oracle Linux 拥有多种面向企业的周边工具。它还具有独特的功能,例如 Ksplice,允许您无需重启即可应用补丁。现在 CentOS 已更改为 CentOS Stream,Oracle Linux 是最值得信赖的 RHEL 兼容发行版之一。为什么不试试呢?