(注) 本記事は、Software Design 2020年6月号に掲載された「月刊Fedora Journal」初出の記事に修正を加えたものです。
Red Hat ソリューションアーキテクトの小島です。
Fedora系列の主要なLinux Distributionとしてよく名前が挙げられる、Fedora, CentOS, RHELに加えて、2019年9月に発表された新しいDistributionであるCentOS Streamの特徴や関係性をご紹介します。
Fedora系列の主要なLinux Distribution
FedoraはRed HatがスポンサーをしているOSSコミュニティのプロジェクトで開発されている非商用のLinux Distributionであり、Red Hat Enterprise Linux (RHEL, 通称れる)はRed Hatが開発している商用のLinux Distributionです。さらに2019年9月には、RHEL 8.1などのRHELのマイナーリリースのローリングリリースに相当するCentOS Streamを提供開始することが、Red HatとCentOS Projectから発表されています。これら3つのLinux Distributionのリリースや開発プロセスの関係性を示すイメージは、下記となります。
引用元: CentOS Stream is Continuous Delivery - Stef Watler - 11 Dec, 2020 | Image licensed CC-BY-SA 4.0
これらのLinux DistributionはUpstreamとして開発されている数多のOSSプロジェクトの成果物を直接的または間接的に取り込んでいるのと同時に、OSSのユーザや開発者の修正リクエストの受け皿ともなっています。修正リクエストをもとにUpstreamとなるOSSプロジェクトで適宜開発を行い、それらの成果物をDownstreamとなるOSSまたはDistributionに取り込んでいくといった開発サイクルを回しています。これらのDistrubitionは用途がそれぞれ異なるので、ユーザや開発者は自身のユースケースに応じて、どれを利用するか選択することになります。以降は、各Linux Distributionの特徴を紹介していきます。
Fedora
FedoraはRHELのベースとして開発されている非商用のLInux Distributionであり、Red Hatが開発支援をしているFedora Projectによって開発・提供されています。元々Red HatがRed Hat Linux(リリース当初はRed Hat Software LinuxやRed Hat Commercial Linuxといった名前が付いていたこともあります)という名前で無料でダウンロード・利用可能なOSとして提供していたものを、商用のLinux DistributionとしてRHELをリリースする際に、当時大学生で元Red Hat社員でもあるWarren Togamiが設立したFedora Linux Projectと、Red Hat Linux ProjectをマージしてできたものがFedora Projectとなります。
Fedora Projectは、Upstreamで開発されている先進的な機能を開発・テストするためのプロジェクトとして位置づけられています。そのため、FedoraはRHELよりもソフトウェアのライフサイクルが短くなっています。例えば、Fedora 28はRHEL 8のベースとなっていますが、RHEL 8のkernelは4.18系を使っているのに対し、Fedora 28はFedora 29がリリースされるまでの間に4.16から4.18に、その次のFedora 29に至ってはFedora 30がリリースされるまでに4.18から5.0にバージョンアップしています。
Fedora Projectで開発・提供しているFedoraについては、ユースケースごとに用意された様々なEditionがあります。その中でも、FedoraのOfficial Editionとして位置づけられているものが、WorkstationとServerになります。
- Workstation: ノートPCやデスクトップ用途に提供しているEditionです。GNOME、Libreoffice、開発ツールなど業務に利用するためのソフトウェアがデフォルトで組み込まれています。Live ISOファイルを提供しているためUSBデバイスなどを利用したインストールが比較的容易です。
- Server: サーバー用途に提供しているEditionです。Webブラウザによるサーバ管理を可能にするCockpitやドメイン管理に利用するFreeipaなどのソフトウェアを提供しています。
WorkstationとServerについてですが、よく利用されるであろうx86_64版については、実は同じソフトウェアを利用できます。Fedora WorkstationではCockpitなどのサーバ管理ツールを利用できますし、Fedora ServerでもLibreofficeなどのオフィス製品を利用できます。実際にFedora Workstationをインストールした後に、OSの種類やバージョンを確認するためのファイルの中身を表示すると、WorkstationやServerといったEditionの情報は記載されていないことが分かります。
$ cat /etc/redhat-release Fedora release 31 (Thirty One)
便宜上WorkstationやServer用途と定義されたソフトウェアの導入をインストール時にカスタマイズしたい場合は、Fedora Everythingと呼ばれる全部盛りのEditionを利用するのもオススメです。Everythingでは、ネットワークインストール用に最小化されたサイズのISOファイルを提供しています。また、WorkstationとServerはARMv8(aarch64)版のソフトウェアも提供しているので、Raspberry Pi 3へのインストールも可能です。
その他のEditionでは、Red Hatが提供するコンテナプラットフォームであるOpenShiftの専用OSとなる、RHEL CoreOSのベースとして開発されるFedora CoreOS、flatpakやrpm-ostreeという技術を用いてデスクトップ上でイミュータブルなインフラストラクチャを構築するためのFedora Silverblue、同じくrpm-ostreeを用いてAI/ML/IoT用途に特化したソフトウェア構成を提供するFedora IoTがあります。Fedora ProjectはこうしたFedora CoreOSやFedora IoTなど様々なFedoraのサブプロジェクトから構成されており、これらのサブプロジェクトの成果物の一部が後述するCentOS StreamやRHELとしてリリースされていきます。また、Fedora CoreOSとFedora Silverblueについては、2020年7月時点においてSoftware Designに連載中の「月刊Fedora Journal」の中で順次紹介する予定です。
Fedora ProjectによるFedoraのコミュニティサポートについてですが、Fedoraのメジャーリリースが提供されてからおよそ13ヶ月の間メンテナンスを実施すると定義しています。より正確に表現すると、Fedoraのメジャーリリースが出てから2つ後のメジャーリリースが出て1ヶ月経つと(例えば31の場合だと、33が出てから1ヶ月後)、ソフトウェアのアップデートを提供を止めてEnd of Life(EOL)を迎えます。ちなみに、Fedoraのメジャーリリースはおよそ半年に1回の頻度で提供される予定となります。メンテナンスが実施されている間は、Fedora Projectで情報取得やディスカッションをしたり、Red Hat Bugzillaでソフトウェアの修正リクエストをしたり、パッチのプルリクエストを行ったりすることで、Fedora Projectのコミュニティに参加することができます。
CentOS Stream
CentOS Streamは、RHELの将来のマイナーリリース*1を想定した、RHELのNightlyビルドに相当するLinux Distributionとして、ローリングリリース方式で提供されます。2020年7月時点ではRHEL8のみが対象となります。CentOS StreamもCentOSと同様に、CentOS Projectによって開発・提供される非商用のLInux Distributionです。CentOS Streamを提供することにより、RHELのPublic Betaがリリースされるより先に、将来のマイナーリリースに対してコミュニティのユーザや開発者が無料でアクセスできるようになっています。これは、Red HatによるIndependent Software Vendor (ISV)やIndependent Hardware Vendor (IHV)などに対してのソフトウェア/ハードウェア認定を取得しやすくなるような開発支援の1つとなります。CentOS StreamはFedoraやRHELと同様にRed Hat Bugzillaによりバグ追跡や修正リクエストを管理しますので、ISVやIHVがCentOS Streamを使って開発や自動テストを行った結果のフィードバックをBugzillaに登録し、Red Hatがそのフィードバックを適宜RHELに取り込んでRHELの最新のマイナーリリースとして提供する、といったエコシステムな開発モデルを構築しやすくなります。
CentOS Streamが誕生する前は、CentOS Projectを介してRHELに直接修正リクエストを投げる方法がなかったため、RHELのDownstreamであるCentOSで問題が見つかった場合、UpstreamであるOSSプロジェクトに修正依頼し、それを取り込んだRHELの修正が提供され、さらにそれをベースとしたCentOSの修正がリリースされるまで待たなくてはいけませんでした。CentOS Streamによって直接RHELに対して修正リクエストを投げるパスが増えたため、問題の修正対応が早くなるというメリットも生まれており、CentOS StreamではRHELに先行して修正が随時提供されていきます。そのため、ユーザが持っている継続的インテグレーション(Continuous Integration, CI)や継続的デプロイ(Continuous Deploy, CD)といった仕組みと組み合わせて、開発及び検証環境ではCentOS Streamを使ってシステム開発及び自動テストのサイクル(CI)を通して先行テストを行い、そこで得られたフィードバックを随時Bugzillaに登録して、そのフィードバックを基に修正されたRHELをステージング及び本番環境で使って自動テスト及び自動デプロイのサイクル(CD)を実施するといった、変化に強いシステムを作るなどのユースケースでも活用できるようになります。
CentOS Streamは、下記からダウンロードして利用できるようになっています。
CentOS
CentOS Projectが提供するCentOSは、CentOS 7以外のソフトウェアアップデートの提供を終了しました。
CentOSはCentOS Projectによって開発・提供される、GA版のRHELのソースコードをベースとした非商用のLinux Distributionです。CentOSは2004年に誕生して以来、CentOS Projectが独自に開発・提供してきましたが、OpenStackやKubernetes/OpenShiftなどのOSSコミュニティにRed Hatが提供する技術要素を利用してもらい、OSSコミュニティのイノベーションや開発速度を加速させることなどを目的として、2014年以降Red HatがCentOS Projectのスポンサーとなっています。なお、Red Hat BugzillaはCentOS用には利用できず、CentOS ProjectのメーリングリストやCentOS Bug Trackerなどを介して開発コミュニティに参加することになります。また、CentOS StreamとCentOS、及び、CentOS StreamとCentOSのパッケージについては、Red Hatのサポートを提供していません。このうちCentOSについては、ベースとなるRHELのメジャーリリースの標準サポート期間とほぼ同等の期間、CentOS Projectがコミュニティサポートを提供しています。RHELのメジャーリリース及びマイナーリリースの延長サポートに相当するアップデートの提供は行っていません。
2020年12月9日追記:
CentOS Projectが今後のCentOSリリースをCentOS Streamリリースに変更していくことを発表しました。 CentOS ProjectがCentOS Stream1本に注力してUpstreamとの連携をより密に行うことで、Linuxのイノベーション推進及びエコシステム構築を加速させることを目的としています。これに伴い、CentOSの各メジャーリリース提供について下記のように変更されました。
- CentOS 9: リリース予定はありません。
- CentOS 8: ソフトウェアアップデート提供は2021年12月31日で終了しました。
- CentOS 7: ソフトウェアアップデート提供はRHEL 7と同じく2024年6月30日で終了予定です。変更ありません。
- CentOS 6、及び、それ以前のメジャーリリース: ソフトウェアアップデート提供は既に終了しています。変更ありません。
現時点では、2024年7月以降はCentOSのどのメジャーリリースにおいてもソフトウェアアップデートを提供しなくなる予定のため、それ以降もCentOSユーザがCentOS Projectの提供するソフトウェアアップデートを適用したい場合は、CentOS Streamに移行する必要があります。ちなみに、CentOS 8では、CentOS上でCentOS Streamのリポジトリを利用できるように設定することで、CentOSをCentOS Streamに移行する手順が用意されています。この移行手順は、CentOS 7及びそれ以前のメジャーリリースは対象外です。
# dnf install centos-release-stream <- CentOS Streamのリポジトリを参照するためのリポジトリ情報をインストール # dnf swap centos-{linux,stream}-repos <- CentOSのリポジトリ情報を削除 # dnf distro-sync <- ↑で追加した、CentOS Streamのリポジトリで提供している最新のソフトウェアアップデートをインストール
また、CentOS Streamの今後の提供については、下記を予定しています。CentOSのように、CentOS Streamのメジャーリリースは個別にブランチを持つ予定です。
- CentOS Stream 9:
2021年12月に提供を開始しました。ソフトウェアアップデート提供は、RHEL 9のFull Support期間に準拠する予定です。 - CentOS Stream 8:
ソフトウェアアップデート提供はRHEL 8のFull Support期間に準拠する予定です。現時点では2024年5月31日で終了予定です。
この発表に伴い、OSSプロジェクト/コミュニティ向けのオプションや、システム管理者の需要に対応するためのRed Hat Developer Subscription(開発用途に無償提供. 後述)のユースケースの拡張など、様々なユースケースを想定した無料または低価格のプログラムを2021年前半に導入する予定です。こちらについては詳細が決まり次第、追って発表する予定です。本発表に関する詳細なアナウンスやFAQは、下記もご参照ください。
Red Hat Enterprise Linux (RHEL)
RHELはRed Hatが開発・提供している商用のLinux Distributionです。基本的には有償のRed Hatのサブスクリプションサービスを購入して、商用環境のOSとして利用することになります。RHELは1999年にリリースされたRed Hat Linux (RHL) 6.1を利用した、企業向けサポートプログラムの発表から始まり、RHL 7.2をベースとしたRHEL 2.1という名前で商用のLinuxとしてリリースしたのが起源になります。RHLはこの後もRHL 9までRed Hatが開発・提供していましたが、前述の通りFedora Linux Projectとマージされ、以降はRHELのUpstreamとしてFedoraという名前で開発*2されるようになりました。ちなみに、RHELはFeodraをベースとしていますが、独立して開発されています。Fedoraの特定のメジャーリリースをベースにしてRHELを公開したあとは、FedoraはFedoraで、RHELはRHELでそれぞれOSSコミュニティと連携しながら開発されます。なお、Fedora ProjectやCentOS Projectが提供する無償のコミュニティサポートと違う点は次の通りです。
- SLAに基づく、最大24時間365日対応のRHELサポートを提供
- 特定のマイナー/メジャーリリースに対する延長サポートをオプションで提供
- Red Hatのパートナー企業による認定ハードウェア/ソフトウェアのサポート
ここで言及している「サポート」は大きくまとめると、ライフサイクル期間が終了していないRHELのインストール/設定/利用中に何か問題が起こった場合のワークアラウンドやソフトウェア修正を、電話/チャット/サポートケース/カスタマーポータルを介して提供することを意味します。なお、Red Hatがサポート対象外と定義しているいくつかのソフトウェアや構成、Technology Preview機能の利用、及び、ソフトウェアの改変/設計/開発についてはサポート対象外となります。
Red Hatはパートナー企業とエコシステムを構築しており、RHELの動作認定を取得しているハードウェア、または、RHELの上で動作認定を取得しているソフトウェアについては、提供元のパートナー企業がサポートを提供することが可能です。また、24時間365日対応の「Premium」サブスクリプションを購入すると、特定のマイナーリリースに対する延長サポート(Extended Update Support, EUS)が無償で提供される他に、深夜にRHELのkernelをアップデートするので不測の事態に備えておいてほしいといったリクエストをするための、プロアクティブチケット(英語での対応のみ)を作成できるようになります。サポート内容についての詳細は、Red Hatのカスタマーポータルに記載されているサポート範囲やサポートポリシーなどのページをぜひ一度ご参照ください。
そして、パートナー企業とのエコシステムを強化するために、Red HatはRHELの互換性ポリシーを定義しています。特にRHELのメジャーリリース(RHEL 7やRHEL 8など)内でリリースされた全てのパッケージ更新について、アプリケーションバイナリ/構成ファイル/設定ファイルの互換性を維持するように努めています。そのため、特定のマイナーリリース(RHEL 8.2など)でRHEL上での動作認定を取得したサードパーティのソフトウェアについては、それ以降のマイナーリリース(RHEL 8.3など)でも同様に動作認定を取得しているものとして扱います。また、RHELに含まれる一部のパッケージについては、複数のメジャーリリース(最大3つ)にわたってアプリケーションバイナリインタフェース(Application Binary Interface, ABI)の互換性を維持するように努めており、メジャーリリース間の移行を補助しています。こうしたRHELのアプリケーション互換性ポリシーの詳細については、下記もご参照ください。
続けて、RHELに関連する主要なサービスをいくつかご紹介します。
Red Hat Insights
RHELの有償サブスクリプションを持っていると無料で利用できる、Red Hat InsightsというSaaS形態のサービスがあります。Red Hat InsightsはRHELを始めとするRed Hat製品の問題(RPMパッケージの脆弱性情報や設定情報の不備など)を未然に検知し、Red HatのWebサイト上で下記のようなHTMLベースのレポートを表示するサービスです。この問題を修正するためのAnsible PlaybookをInsights上で作ることもでき、Ansible Towerなどと連携して修正適応を自動化することもできます。Red Hat Insightsについては、概要の紹介ページや下記のブログ記事などもご参照ください。
Red Hat Developer Program
1ユーザ(複数人での共用は不可)、16台までの物理マシン/仮想マシン/コンテナに利用できるという条件は付きますが、RHELの有償サブスクリプションの有無に関わらず、無償で提供しているRed Hat Developer Subscriptionというサブスクリプションもあります。こちらは個人で利用する場合に限り、利用用途は限定されません。Red Hat Developer Programに登録してRed Hat Developer Subscriptionを入手することで、RHELを始めとした様々なソフトウェアを無料で入手して利用したり、Red Hatのカスタマーポータルのナレッジベースにアクセスして製品導入に関するノウハウを習得できるようになります。
Red Hat Universal Base Images (UBI)
RHELをベースにしたコンテナイメージであるUniversal Base Images (UBI)を、RHELの有償サブスクリプションの有無に関わらず、無償で提供しています。UBIはRHEL7とRHEL8をベースとしたコンテナイメージとして提供しており、UBIに関するEULAのもとに、UBIに独自ソフトウェアを追加して第3者へ配布できるため、Red HatがISVなどを支援する仕組みの1つとなっています。UBIを再配布する際には、Red Hat関連のソフトウェアについては、UBI専用のリポジトリによって提供されるソフトウェアだけをUBIに追加できるなどの制約がありますのでご注意ください。UBIは任意の環境で実行できますが、RHELやOpenShift環境の場合だと、コンテナの実行基盤からUBIの部分までRed Hatのサポート対象になります。そのため、UBIとRed Hat Developerの制度を利用すると、RHELを使った開発もしやすくなります。
UBIを始めとしたRHELの修正リクエストについては、Fedoraと同様にRed Hat Bugzillaで対応しています。有償のサブスクリプションを持っている場合、Red Hatのサポートチームを介してBugzillaにリクエストを登録できます。UBIの利用方法やQ&Aについては、以下の製品ドキュメントやRed Hat DeveloperのWebページをご参照ください。
まとめ
Red Hatが開発または開発支援をしている4つのLinux Distributionの特徴を紹介してきました。これらのLinux Distributionのうち、Fedora/CentOS Stream/RHELについてはRed Hatの「Upstream First」という開発ポリシーに準拠しているので、ユーザはRed Hatだけでなく世界中のOSSエンジニアの開発の恩恵を得ることができます。これらの特徴を考慮しながら、自身のユースケースに応じたLinux Distributionの利用をご検討ください。