前回までは、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 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_latest | OSのコアパッケージ |
ol8_appstream | アプリケーションや開発言語など |
ol8_UEKR6 | UEK 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)
他のディストリビューションでも確認してみます。デフォルトで有効になっているリポジトリの数は違いますが、通常利用する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 |
無効(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互換ディストリビューションの一つです。一度使ってみてはいかがでしょうか。