Oracle Linuxを知っていますか︖ Oracle Linuxは、Oracle社が開発するRed Hat Enterprise Linux(RHEL)互換ディストリビューションです。2006年にファーストバージョンがリリースされ、現在ではExadataなどのエンジニアド・システムやOracle Cloud Infrastructure、Oracle Linux KVMなどで使われています。
Oracle社というエンタープライズ向けソフトウェア企業が開発していたこともあり、これまで使うユーザーは限られていました。しかし、CentOSが2020年12⽉に開発終了を表明して⼤きく状況が変わりました
(CentOS Projectの公式アナウンス「CentOS Project shifts focus to CentOS Stream」)。CentOSの代替となる他のRHEL互換ディストリビューションに注⽬が集まったのです。その⼀つがOracle Linuxです。
そこで今回は、Oracle Linuxの特徴や、RHELやCentOSとの違いを説明します。
Linuxディストリビューションとは
本題に⼊る前に、Linuxディストリビューションの話をします。Linuxとは、本来カーネルだけを指します。
ただし、Linuxカーネルだけでは⼀般の⼈は使えません。そのためglibcやcoreutils、デバイスドライバ、シェルなどの必須ライブラリやツールに加え、インストーラーやコンパイラ、各ソフトウェアをまとめて、誰にでも使いやすくしたものが「Linuxディストリビューション」です。
ここで重要なことは、ただ単にまとめただけでなく、各ソフトウェアが正しく動作することを事前に検証していることです。Linuxディストリビューションに含まれているのは、オープンソースソフトウェアです。そのため開発者もバラバラで当然開発環境も違います。ソースをコンパイルできないこともあれば、コンパイルできても正しく動作しないこともあります。Linuxディストリビューションの開発者たちは、それらを修正して、正しく動作するようにしています。
もうひとつ重要なのが「パッケージ管理システム」です。初期のLinuxでは使⽤するソフトウェアはソースから毎回ビルドしていました。それではインストールが⾯倒なだけでなく、アップデートや削除は困難です。
そのために導⼊されたのがRPMやdebなどのパッケージです。
以下の表をご覧ください。主要なディストリビューションには、RPMを使⽤する「Red Hat系ディストリビューション」と、debを使⽤する「Debian系ディストリビューション」があります。⽇本のビジネスの現場で使われるのは、このどちらかでしょう。また、これら以外にヨーロッパでよく使われているSUSE Linuxもあります。
パッケージ形式 | ディストリビューション | パッケージ管理ツール |
---|---|---|
RPM | Red Hat系(RHEL, Fedora, CentOS, CentOS Stream, Oracle Linux,Amazon Linux) | RPM, yum, dnf |
deb | Debian系(Debian, Ubuntu) | apt, dpkg |
RHEL互換ディストリビューションの作り⽅
さて、Linuxディストリビューションのおさらいしたところで、RHEL互換ディストリビューションの説明をします。ところで、Linuxディストリビューションに含まれているのはオープンソースソフトウェアなのだから、そのままコピーしてしまえなんて思っていませんか︖
少なくともRHELはできません。ひとつはロゴなど商標権などの法律の観点から。もうひとつは契約の観点から。詳しい理由は説明しませんが、RED HATエンタープライズ契約で禁じられているからで す。
RHEL互換ディストリビューションとは、RHELとアプリケーションバイナリ互換性があるLinuxディストリビューションを指します(アプリケーションバイナリ互換性は後ほど説明します)。基本的にはリビルドが中⼼で、⼀般的に次のような⼿順で作成します。
RHEL互換ディストリビューション作成方法
上図における「ディストリビューション固有の変更」はさまざまです。CentOSは/etc/redhat-releaseから/etc/centos-releaseへの変更など最⼩限に抑えていました。それと⽐べるとOracle Linuxは互換性を保ちつつも⼤きく⼿を加えています。
RHEL互換ディストリビューションではCentOSが有名です。しかし、CentOSは終了が発表され、FedoraとRHELの中間的な位置づけとなるCentOS Streamへと変更されました。
現在有⼒なRHEL互換ディストリビューションには以下のものがあります。AlmaLinuxもRocky Linuxも2021年にリリースされたものなので、今後の動向が気になるところです。
- Oracle Linux
- AlmaLinux
- Rocky Linux
- MIRACLE LINUX
また、RHELに近いディストリビューションとしてAmazon Linuxがあります。Amazon Linux 2はRHEL7に近いのですが、Fedoraを源流としているので上記RHEL互換ディストリビューションとは少し異なります。さらにAmazon Linux 2022では、2年ごとのリリースと5年の⻑期サポートとなり、RHELとは違う⽅向に進むようです。
Oracle Linuxとは
ようやく本題です。Oracle Linuxは、Oracle社が開発するRHEL互換ディストリビューションです。おもな特徴は以下の通りです。これら中から重要な項⽬を説明します。
- RHELと100%アプリケーションバイナリ互換
- Exadataなどのエンタープライズ領域における⻑年の利⽤実績
- 本番環境でも無償利⽤可能
- RHELと同等の10年間のサポート期間。さらに有償で延⻑サポートも可能
- RED HATエンタープライズ契約と⽐べて利⽤しやすい有償サポート契約
- RHEL互換カーネルに加えて、より新しいカーネルをベースとしたUnbreakable Enterprise Kernelの提供
- Kspliceによる再起動不要のパッチ適⽤
RHELと100%アプリケーションバイナリ互換
Oracle LinuxはRHELとアプリケーションバイナリ互換があると、Oracle社はアナウンスしています。アプリケーションバイナリ互換とは、ある環境で作成した⼀般的なプログラムバイナリが、他の環境でもそのまま動作することを表します。アプリケーションバイナリ互換は、ABI互換(Application Binary Interface Compatible)と表記されることもあります。
ここで重要なのは「⼀般的なプログラム」だということです。OSで動作するプログラムには、カーネルやデバイスドライバ、ファイルシステムなどの「カーネル空間」で動作するものと、HTTPサーバーやデータベースサーバーのような「ユーザー空間」で動作するものがあります。
ABI互換の対象となるのは「ユーザー空間」で動作するプログラムです。そのためLinuxディストリビューションに含まれている、もしくはLinux⽤に提供されているプログラムのすべてが対象になるわけではありません。
アプリケーションバイナリ互換の対象外になる代表的なプログラムとしては、メモリ常駐型のアンチウイルスソフトやハードウェアベンダー提供のデバイスドライバなどがあります。
Unbreakable Enterprise Kernelの提供
Oracle Linuxには、次の2種類のカーネルがあります。デフォルトでは両⽅がインストールされ、UEKが有効になっています。どちらもRHELとアプリケーションバイナリ互換があります。
- RHELのカーネルをリビルドしただけのRHEL互換カーネル(RHCK: Red Hat Compatible Kernel)
- よりアップストリームのカーネルをベースとしたUnbreakable Enterprise Kernel(UEK)があります。
次の図はRHCKとUEKの関係を表したものです。Oracle Linux 8のRHCKは、Linuxのメインラインカーネル4.8
をベースとしています。それに対してUEKは5.4をベースとしています。つまりUEKは、より機能の進んだカーネルをベースに、Oracle社独⾃のカスタマイズを加えているのです。
RHCKとUEKの関係
実際にカーネルのパッケージ名を⾒ると、それぞれベースカーネルがわかります。
カーネルの種類 | パッケージ名 |
---|---|
UEK | kernel-uek-5.4.17-2136.300.7 |
RHCK | kernel-4.18.0-348 |
以下のサイトではOracle Linuxのバージョンと、RHCKとUEKの関係が紹介されています。
Oracle Linux and Unbreakable Enterprise Kernel (UEK) Releases
上記Webページを⾒ると、次のことがわかります。
- UEKにはRelease 5や Release 6といったリリース番号があること
- 同じリリース番号のUEKが、異なるメジャーバージョンのOracle Linuxでも使えること
簡単にまとめたのが次の表です。UEK6はOracle Linux 7でも8でも使えます。ただし、ビルド環境が違うので
バイナリは異なります。
カーネルの種類 | RHCK | UEK |
---|---|---|
Oracle Linux 7 | kernel-3.10 | UEK3からUEK6 |
Oracle Linux 8 | kernel-4.18 | UEK6 |
RHCKとUEKのどちらを使うべきか
RHCKとUEKのどちらを使うべきか疑問に思うかも知れません。ともにアプリケーションバイナリ互換性があるので、どちらを使っても問題ありません。しかし、Oracele DatabaseやOracle Linux KVMなどを使うときは、Oracle Database向けのカスタマイズが施されているUEKを使ったほうがよいでしょう。
RHCKを使う状況としては以下のケースが考えられます。
- 商⽤アプリケーションを使⽤していて、ベンダーがRHCKだけをサポートしているとき
- 物理サーバーを使⽤していて、ベンダー提供のデバイスドライバがRHCK⽤だけのとき
- どうしてもRHCKを使いたいとき
※後半に続きます。