رجوع

2025/04/18

3. استخدم Oracle Linux واكتشف الاختلافات

في السابق، شرحنا ما هي التوزيعة المتوافقة مع RHEL وميزات 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 أيضًا هو نفسه بشكل أساسي. هذه المرة، سنستخدم توزيعات 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، بل هي نواة 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

سبب الاختلاف الكبير في الإصدارات هو الفرق في نواة Linux التي يعتمدان عليها. يعتمد UEK على نواة Linux 5.4 الأكثر تقدمًا، مع تخصيصات خاصة بـ Oracle Linux وتوافق مع التطبيقات مع RHCK.

UEK وRHCK متوافقان على مستوى التطبيق، لذا عادةً ما يكونان جيدين كما هما. قد ترغب في التفكير في التبديل عندما لا تدعم البرمجيات أو برامج تشغيل الأجهزة التي تستخدمها UEK.

2.3. اكتشف النواة المتوافقة مع RHEL

يوضح الجدول التالي العلاقة بين التوزيعة المتوافقة مع RHEL وإصدار النواة. لا يتغير “رقم الإصدار” إذا كان الإصدار الرئيسي نفسه. ما يتغير هو رقم الإصدار الذي يلي إصدار النواة.

التوزيعةإصدار النواة
مبني على RHEL8kernel-4.18.0
مبني على RHEL7kernel-3.10.0
مبني على RHEL6kernel-2.6.32

يوضح الشكل التالي اتفاقية تسمية حزمة النواة. إذا كان الإصدار الرئيسي نفسه، سيبقى “رقم الإصدار” كما هو، وسيزداد “رقم الإصدار”. بالنسبة للنواة المتوافقة مع RHEL في Oracle Linux، يتم إصدار نفس النواة مثل 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]
- 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_UEKR6UEK 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 LinuxRHELCentOS Stream
ol8_baseos_latestrhel-8-for-x86_64-baseos-rpmsbaseos
ol8_appstreamrhel-8-for-x86_64-appstream-rpmsappstream

يتم عرض ما يلي حتى المستودع الذي تم تعطيله:

$ 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. قم بتشغيل 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     orgl8_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 موثوقية. لماذا لا تجربها؟