第3回 Oracle Linuxをさわって違いを知ろう

前回までは、RHEL互換ディストリビューションとは何なのか、そしてOracle Linuxの特徴を説明しました。今回はOracle Linuxを実際に操作して、RHELやCentOSとの違いを説明します。

1.Oracle Linuxを試す方法

Oracle Linuxを手軽に試すには、次の方法があります。今回は1の方法を主体に、一部で2の方法を使用します。

  1. VirtualBox等にOracle Linuxをインストールする
  2. Oracle Cloud InfrastructureのAlways Freeを利用する
  3. AWSやAzureでOracle Linuxのイメージを使用する

なお、Oracle Linuxのメディアは以下のサイトから無償で入手できます。

インストール方法は「Oracle Linux8 Oracle Linuxのインストール」マニュアルをご覧ください。RHELや CentOS Stream、AlmaLinuxとほとんど同じです。また、Oracle Cloud Infrastructureならば「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というファイルが4つあります。

$ 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の内容です。Oracle Linuxではなく、Red Hat Enterprise Linux releaseになっています。

$ 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

このような仕様になっているのは、ディストリビューションの種類をチェックするプログラムへの対策だと思われます。商用ソフトウェアやHWベンダーが提供しているドライバなどは、/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互換カーネルのchangelog(変更履歴)を見てみましょう。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 <natalya.naumova@oracle.com> [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 <acaringi@redhat.com> [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_latestOSのコアパッケージ
ol8_appstreamアプリケーションや開発言語など
ol8_UEKR6UEK R6

Oracle Cloud InfrastructureのOracle Linux 8では、次のようになっています。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)

他のディストリビューションでも確認してみます。デフォルトで有効になっているリポジトリの数は違いますが、通常利用するbaseosappstreamは同じです。

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 LinuxRHELCentOS Stream
ol8_baseos_latestrhel-8-for-x86_64-baseos-rpmsbaseos
ol8_appstreamrhel-8-for-x86_64-appstream-rpmsappstream

無効(disable)になっているリポジトリまで表示すると以下のとおりです。

$ 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は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.デフォルトのカーネルを確認します。インデックス番号「0」の/boot/vmlinuz-5.4.17-2136.307.3.1.el8uek.x86_64だということがわかります。

# 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 updateしたときにUEKに戻ってしまいます。

/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だと言われて渡されたら気付かないかも知れません。

ただし、Oracle LinuxはRHEL互換ディストリビューションとして基本部分は同じながらも、エンタープライズ向けにさまざまな周辺ツールが整備されています。また再起動不要でパッチ適用できるKspliceのような独自機能も備えています。CentOSがCentOS Streamへと変わった現在、Oracle Linuxはもっとも信頼の置けるRHEL互換ディストリビューションの一つです。一度使ってみてはいかがでしょうか。

関連サービス

Oracle Linux

オラクル製品の開発は、Oracle Linux( Unbreakable Enterprise Kernel )に基づいて進められているため、オラクル製品に最適化されたOS環境をご利用いただけます。Kspliceによるゼロダウンタイムパッチを適用することが可能です。