กลับ

2025/03/31

3. ใช้ Oracle Linux และค้นพบความแตกต่าง

ก่อนหน้านี้ เราได้อธิบายว่า RHEL-compatible distribution คืออะไร และคุณสมบัติของ Oracle Linux ครั้งนี้ เราจะใช้งาน Oracle Linux จริงเพื่ออธิบายความแตกต่างกับ RHEL และ CentOS

1. วิธีลองใช้ Oracle Linux

คุณสามารถลองใช้ Oracle Linux ได้อย่างง่ายดายด้วยวิธีต่อไปนี้ ครั้งนี้ เราจะเน้นใช้วิธีที่ 1 และใช้วิธีที่ 2 บางส่วน

  1. ติดตั้ง Oracle Linux บน VirtualBox หรือโปรแกรมที่คล้ายกัน
  2. ใช้ Oracle Cloud Infrastructure Always Free
  3. ใช้ภาพ Oracle Linux ใน AWS หรือ Azure

นอกจากนี้ สื่อการติดตั้ง 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 ก็พื้นฐานเหมือนกัน ครั้งนี้เราจะใช้การกระจายลินุกซ์ต่อไปนี้เพื่อเปรียบเทียบ:

  • Red Hat Enterprise Linux 8
  • CentOS Stream

CentOS Stream ไม่ใช่ RHEL-compatible distribution แบบบริสุทธิ์ ดังนั้น AlmaLinux และ MIRACLE LINUX จะเหมาะสมกว่าสำหรับการเปรียบเทียบ แต่ครั้งนี้เราจะใช้ CentOS Stream ซึ่งง่ายต่อการทำความคุ้นเคย

2.1. ตรวจสอบประเภทการกระจาย

ตรวจสอบประเภทการกระจายลินุกซ์ ลินุกซ์มีไฟล์ที่เรียกว่า /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

อย่างไรก็ตาม คุณไม่จำเป็นต้องกังวลเกี่ยวกับเวอร์ชันย่อยหลังจุดทศนิยมในลินุกซ์ เพราะขึ้นอยู่กับการตั้งค่าที่เก็บข้อมูล การรัน yum update จะทำให้เวอร์ชันย่อยเพิ่มขึ้นเอง

ที่น่าสนใจคือเนื้อหาของ /etc/redhat-release เป็น Red Hat Enterprise Linux release ไม่ใช่ 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 แต่เป็น Unbreakable Enterprise Kernel (UEK) ที่ไม่เหมือนใครของ Oracle Linux

$ 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

เหตุผลที่เวอร์ชันแตกต่างกันมากคือความแตกต่างในเคอร์เนลลินุกซ์ที่พวกเขาอ้างอิง UEK อิงจากเคอร์เนลลินุกซ์ upstream 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

ภาพต่อไปนี้แสดงการตั้งชื่อแพ็คเกจเคอร์เนล หากเป็นเวอร์ชันหลักเดียวกัน “เลขเวอร์ชัน” จะคงที่ และ “เลขรุ่น” จะเพิ่มขึ้น สำหรับเคอร์เนลที่เข้ากันได้กับ RHEL ใน Oracle Linux จะมีการปล่อยเคอร์เนลเดียวกับ RHEL จนถึงเลขรุ่น

มาดูประวัติการเปลี่ยนแปลง (changelog) ของเคอร์เนลที่เข้ากันได้กับ RHEL เพื่อเป็นข้อมูลอ้างอิง เวอร์ชัน 4.18.0-372.9.1.el8 ดูเหมือนจะใช้แพตช์ความเข้ากันได้บางส่วน เช่น คีย์ โดยไม่มีการเปลี่ยนแปลง หากคุณสนใจ โปรดดู Source Package (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]
- Update Oracle Linux certificates (Kevin Lyons)
- Disable signing for aarch64 (Ilya Okomin)
- Oracle Linux RHCK Module Signing Key was added to the kernel trusted keys list (olkmod_signing_key.pem) [Orabug: 29539237]
- Update x509.genkey [Orabug: 24817676]
- Conflict with shim-ia32 and shim-x64 <= 15-11.0.5.el8

* Fri Apr 15 2022 Augusto Caringi  [4.18.0-372.9.1.el8]
- scsi: qedi: Fix failed disconnect handling (Chris Leech) [2071519]
- scsi: iscsi: Fix unbound endpoint error handling (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         Latest 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 Linux 8 สำหรับ Oracle Cloud Infrastructure ได้รับการกำหนดค่าดังนี้ ที่เก็บเฉพาะ OCI และ Ksplice ถูกเปิดใช้งาน


ol8_UEKR6         Latest 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 Software for OCI users on Oracle Linux 8 (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 และการกระจายอื่นๆ

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                  Latest 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 เป็นที่เก็บ “EPEL” ที่ใช้กันทั่วไปใน RHEL-based distributions เพียงแค่รัน 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

เรียนรู้เพิ่มเติมเกี่ยวกับที่เก็บ Yum บน Oracle Linux ได้ที่ 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. ถัดไป เปลี่ยนเคอร์เนลเริ่มต้นเป็นเคอร์เนลที่เข้ากันได้กับ RH โดยใช้ /etc/sysconfig/kernel หากคุณไม่แก้ไขนี้ คุณจะกลับไปที่ UEK เมื่ออัปเดต yum

เนื้อหาของ /etc/sysconfig/kernel

# UPDATEDEFAULT specifies if kernel-install should make
# new kernels the default
UPDATEDEFAULT=yes

# DEFAULTKERNEL specifies the default kernel package type
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-compatible distributions ที่น่าเชื่อถือที่สุด ทำไมไม่ลองใช้ดู?