返回
2025/03/25
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 更新 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-based | kernel-4.18.0 |
RHEL7-based | kernel-3.10.0 |
RHEL6-based | 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 應用程式串流 (x86_64)
ol8_baseos_latest Oracle Linux 8 BaseOS 最新版 (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 附加組件 (x86_64)
ol8_appstream Oracle Linux 8 應用程式串流 (x86_64)
ol8_baseos_latest Oracle Linux 8 BaseOS 最新版 (x86_64)
ol8_ksplice Ksplice for Oracle Linux 8 (x86_64)
ol8_oci Oracle Linux 8 OCI 套件 (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 - 應用程式串流 (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 - 應用程式串流
baseos CentOS Stream 8 - BaseOS
epel 企業 Linux 額外套件 8 - x86_64
epel-modular 企業 Linux 模組化額外套件 8 - x86_64
extras CentOS Stream 8 - 額外套件
extras-common CentOS Stream 8 - 通用額外套件
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 附加組件 (x86_64) disabled
ol8_appstream Oracle Linux 8 應用程式串流 (x86_64) enabled
ol8_baseos_latest Oracle Linux 8 BaseOS 最新版 (x86_64) enabled
ol8_codeready_builder Oracle Linux 8 CodeReady Builder (x86_64) - disabled
ol8_distro_builder Oracle Linux 8 發行版構建器 (x86_64) - 未同步 disabled
ol8_kvm_appstream Oracle Linux 8 KVM 應用程式串流 (x86_64) 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 更新 4 (x86_64) 安全驗證 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
在 https://yum.oracle.com/ 上了解更多關於 Oracle Linux 的 Yum 儲存庫資訊。
除了可以下載更新套件外,我們建議您查看它,因為它包含各種資訊。

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 相容發行版之一。何不試試看呢?