下記のRedhat公式ドキュメントを参考にRHEL8とRHEL9の主要な違いをまとめました。以下の「RHEL 9 の採用における考慮事項」の1章から26章までのすべてのコンテンツに目を通したうえで第1章から順に気になった点を本記事にまとめています。RHELの新規更改時の参考になれば幸いです。

CPUのアーキテクチャに対応したサブスクリプションを購入する必要がある
CPUは、アーキテクチャがメーカーによって異なります。わかりやすく表現すると、例えば、Intelという会社が販売しているCPUと、ARMが販売しているCPUではCPUを動作させる構造が異なります。RHEL9では、使っているCPUを考慮したサブスクリプションを購入する必要があります。
RHEL9でdnf、yumコマンドでインストールできるrpmパッケージ(リポジトリー)について
RHEL9で利用可能なレポジトリの詳細は以下公式のPDFを参照します。このレポジトリを参照して、yum/dnfでインストールできるrpmパッケージを判断できます。
以下はyum/dnfコマンドでインストール可能なパッケージに関するマニュフェストです。
RHEL9では以下の2つのリポジトリに対応しています。
- BaseOS
- AppStream
BaseOS リポジトリーには、OSに関する基本的なrpmパッケージが含まれます。BaseOSについては以下のように説明があります。
BaseOS リポジトリーのコンテンツは、すべてのインストールのベースとなる、基本的な OS 機能のコアセットを提供します。このコンテンツは RPM 形式で提供されており、RHEL の以前のリリースと同様のサポート条件が適用されます。
AppStream リポジトリーは「ユーザー空間アプリケーション、ランタイム言語、およびデータベース」に関するrpmパッケージを提供するレポジトリです。
AppStream リポジトリーには、さまざまなワークロードとユースケースに対応するために、ユーザー空間アプリケーション、ランタイム言語、およびデータベースが同梱されます。
yum/dnfでインストールできるrpmパッケージのサポート期限
dnfコマンドでRHEL9にインストールが可能なrpmパッケージのライフサイクル(サポート期限)は以下でまとめられています。


RHEL9.4からAzure、Google CloudでTDXがサポートされる
TDXのサポートがRHEL9.4から変更されました。詳細は以下Red Hat公式ページが参考になります。
以下の章では、パブリッククラウドプラットフォームに関する RHEL 8 と RHEL 9 の間の最も重要な変更点を説明します。
5.1. Azure の主な変更点
TDX のサポートが Azure 上の RHEL でテクノロジープレビューとして利用可能になりました
Intel Trust Domain Extension (TDX) 機能がRHEL 9.4 ゲストオペレーティングシステムでテクノロジープレビューとして使用できるようになりました。ホストシステムが TDX をサポートしている場合は、トラストドメイン (TD) と呼ばれる、ハードウェアから分離された RHEL 9 仮想マシン (VM) をデプロイできます。その結果、Azure プラットフォーム上で SecureBoot が有効な CVM イメージを作成できるようになります。
5.2. GCP の主な変更点
TDX サポートが GCP 上の RHEL でテクノロジープレビューとして利用可能になりました
Intel Trust Domain Extension (TDX) 機能がRHEL 9.4 ゲストオペレーティングシステムでテクノロジープレビューとして使用できるようになりました。ホストシステムが TDX をサポートしている場合は、トラストドメイン (TD) と呼ばれる、ハードウェアから分離された RHEL 9 仮想マシン (VM) をデプロイできます。この機能拡張により、Google Cloud Platform 上の RHEL 9.4 で Intel Trust Domain Extension (TDX) 機能を使用できるようになりました。
TDXとは
Intel TDXを使用すると、TDと仮想マシンマネージャー(VMM)、ハイパーバイザー、その他の非TDソフトウェアを分離する堅牢な層を作ることができ、さまざまな脅威から包括的に保護することができます。
TDXには以下の機能が含まれます。
- GPA(ゲスト物理アドレス)の共有ビット
- アドレス変換の整合性のためのセキュアEPT(拡張ページテーブル)
- ページ管理のための物理アドレスメタデータテーブル(PAMT)
- メモリの暗号化と整合性のためのIntel Total Memory Encryption-Multi Key(Intel TME-MK)エンジン
- リモート認証
引用元:https://jp.ubuntu.com/blog/start-your-ubuntu-confidential-vm-with-intel-tdx-on-google-cloud-jp
Intel公式ではTDXを以下のように説明しています。
インテル® TDX で保護された仮想マシン (VM) にデータとアプリケーションを分離することで、クラウドやデータセンターのいずれにおいても、使用中のデータへのアクセスを制御します。
より詳細は以下Intel公式サイトに記載があります。
コンテナについて
RHEL9でのコンテナにおける変更点をまとめました。
- container-tools、rpmパッケージの利用が可能に
- RHEL9では、コントロールグループの新しいバージョンであるcgroupsv2がデフォルトで有効に
- Podmanがセキュアな短縮名に対応
- RHEL7ホストからRHEL9コンテナーの実行が不可に
- RHEL9からRHEL6のコンテナが実行不可に
- RHEL9.5からPodman v5.0の一部使用が非推奨化
runc
コンテナーランタイムは非推奨となり、デフォルトのコンテナーランタイムはcrun
に
RHELのどのバージョンのホストから、どのRHELのバージョンのコンテナが実行可能で、どのバージョンが実行不可かは以下のリンクから確認できます。

RHEL9のコンテナに関する考慮事項は以下Red Hat公式サイトを参考にしています。
コンパイラおよび開発ツール
コンパイラと開発ツールの変更点をまとめました。
APIについて
RHEL9からすべてのスレッド API がコア C ライブラリー libc.so.6
に統合された。
標準Cライブラリ(standard C library)、 /usr/lib64/libc.so.6に統合されます。
/usr/lib64/libc.so.6
上記には以下も統合されました。
libdl
ライブラリー- dns および file 用の Name Service Switch サービスプラグイン
yum/dnfでインストールできるOpen JDKのバージョンが変化
RHEL9ではデフォルトでOpenJDK 17がインストールされるようになります。これまではOpen JDK 11でした。
.NET7のサポートが終了
.NET7のEOL(2024 年 5 月サポート終了)に伴い、RHEL9では.NET7をサポートしていません。

デスクトップ
GNOMEのバージョンが変更されました。
GNOME 環境は、GNOME 3.28 から GNOME 40 に更新され、多くの新機能が追加されました。
プログラムのバージョン等について
レポジトリが有効になっているRHEL9がyum/dnfコマンドでインストールすることのできるプログラム言語実行環境のバージョンや、yum/dnfでインストールできるデータベースのバージョンを引用しました。
RHEL 9 の初期 Application Streams バージョン
RHEL 9 では、従来の
dnf install
コマンドを使用して RPM パッケージとしてインストールできる最初の Application Streams バージョンを提供することで、Application Streams エクスペリエンスを向上させています。RHEL 9.0 では、以下の動的プログラミング言語が提供されます。
- Node.js 16
- Perl 5.32
- PHP 8.0
- Python 3.9
- Ruby 3.0
RHEL 9.0 には、以下のバージョン制御システムが同梱されています。
- Git 2.31
- Subversion 1.14
以下の Web サーバーには、RHEL 9.0 が同梱されています。
- Apache HTTP サーバー 2.4
- nginx 1.20
以下のプロキシーキャッシュサーバーを使用できます。
- Varnish Cache 6.6
- Squid 5.2
RHEL 9.0 は、以下のデータベースサーバーを提供します。
- MariaDB 10.5
- MySQL 8.0
- PostgreSQL 13
- Redis 6.2
ファイルシステムとストレージについて
ファイルシステムに関して、以下の変更点があります。
- XFS(ファイルシステム)が2038 年以降のタイムスタンプに対応する (bigtime)
- exFAT ファイルシステムに対応
- ext4 ファイルシステムが 2038 年以降のタイムスタンプに対応するようになった
- nfs-utils パッケージがなくなり、代わりに新たにnfsv4-client-utils パッケージが追加された
- NFSv2 をサポートしなくなった(RHEL7から)
- Stratis ストレージマネージャーが利用可能に
ネットワークについて
RHEL8とRHEL9ではネットワークの設定が異なります。新たにkeyfile形式でネットワークの設定を行います。ルーティングの追加方法も変更されました。
ルーティングの追加方法がRHEL8から変更に

RHEL8まではifcfg形式でのネットワークの設定を行っていましたが、RHEL9からはKeyfile形式でネットワークの設定を行います。その関係でRHEL8とRHEL9ではルーティング設定の永続化の方法が異なります。
NetworkManager.confの中身がRHEL8から変更に
/etc/NetworkManager/NetworkManager.conf ファイルの中身がRHEL8から変更になりました。
以下の項目で、ifcfg-rhを指定することでRHEL8と同じifcfg形式の定義ファイルでネットワークの設定を定義することができます。
[main]
#plugins=keyfile,ifcfg-rh
RHEL9デフォルトでの/etc/NetworkManager/NetworkManager.conf ファイルの中身の全量は以下です。
# Configuration file for NetworkManager.
#
# See "man 5 NetworkManager.conf" for details.
#
# The directories /usr/lib/NetworkManager/conf.d/ and /run/NetworkManager/conf.d/
# can contain additional .conf snippets installed by packages. These files are
# read before NetworkManager.conf and have thus lowest priority.
# The directory /etc/NetworkManager/conf.d/ can contain additional .conf
# snippets. Those snippets are merged last and overwrite the settings from this main
# file.
#
# The files within one conf.d/ directory are read in asciibetical order.
#
# You can prevent loading a file /usr/lib/NetworkManager/conf.d/NAME.conf
# by having a file NAME.conf in either /run/NetworkManager/conf.d/ or /etc/NetworkManager/conf.d/.
# Likewise, snippets from /run can be prevented from loading by placing
# a file with the same name in /etc/NetworkManager/conf.d/.
#
# If two files define the same key, the one that is read afterwards will overwrite
# the previous one.
[main]
#plugins=keyfile,ifcfg-rh
[logging]
# When debugging NetworkManager, enabling debug logging is of great help.
#
# Logfiles contain no passwords and little sensitive information. But please
# check before posting the file online. You can also personally hand over the
# logfile to a NM developer to treat it confidential. Meet us on #nm on Libera.Chat.
#
# You can also change the log-level at runtime via
# $ nmcli general logging level TRACE domains ALL
# However, usually it's cleaner to enable debug logging
# in the configuration and restart NetworkManager so that
# debug logging is enabled from the start.
#
# You will find the logfiles in syslog, for example via
# $ journalctl -u NetworkManager
#
# Please post full logfiles for bug reports without pre-filtering or truncation.
# Also, for debugging the entire `journalctl` output can be interesting. Don't
# limit unnecessarily with `journalctl -u`. Exceptions are if you are worried
# about private data. Check before posting logfiles!
#
# Note that debug logging of NetworkManager can be quite verbose. Some messages
# might be rate-limited by the logging daemon (see RateLimitIntervalSec, RateLimitBurst
# in man journald.conf). Please disable rate-limiting before collecting debug logs!
#
#level=TRACE
#domains=ALL
セキュリティについて
RHEL8とRHEL9のセキュリティに関する仕様の違いは主に以下です。
- SHA-1が無効になりました
- SELinuxの無効化の方法が従来(RHEL8まで)と異なる
- OpenSCAP が SHA-1 および MD5 に対応しなくなる
- OpenSCAP は、XCCDF ファイルの代わりにデータストリームファイルを使用する
- TLS1.2未満のTLSがサポートされない
- 一部の暗号化が非対応に
- SCPはデフォルトで使用されず、SFTPがデフォルトで使用される
すべてのRHEL9の暗号化ポリシーで以下が無効化される。
RHEL 9 で提供される LEGACY、DEFAULT、および FUTURE の暗号化ポリシーでは、以下のアルゴリズムが無効になっています。
- バージョン 1.2 より古い TLS (RHEL 9 以降、以前では RHEL 8 の 1.0 未満)
- バージョン 1.2 より古い DTLS (RHEL 9 以降、RHEL 8 では 1.0 未満)
- パラメーターが 2048 ビット未満の DH (RHEL 9 以降、RHEL 8 では 1024 ビット未満)
- 鍵サイズ (2048 ビット未満) の RSA (RHEL 9 以降、RHEL 8 では 1024 ビット未満)
- DSA (RHEL 9 以降、RHEL 8 では 1024 ビット未満)
- 3DES (RHEL 9 以降)
- RC4 (RHEL 9 以降)
- FFDHE-1024 (RHEL 9 以降)
- DHE-DSS (RHEL 9 以降)
- Camellia (RHEL 9 以降)
- ARIA
- SEED
- IDEA
- 完全性のみの暗号スイート
- SHA-384 HMAC を使用した TLS CBC モード暗号化スイート
- AES-CCM8
- TLS 1.3 と互換性がないすべての ECC 曲線 (secp256k1 を含む)
- IKEv1 (RHEL 8 以降)
- BIND 設定の NSEC3DSA (RHEL 9.2 以降)
SCPではなくSFTPがデフォルトで使用される
SSH SCPではなく、SSH SFTPがデフォルトで使用されます。どちらもポート番号が22です。WinSCP等を使用する際にSCPを使用しないようにしましょう。
RHEL9.4ではSCPにバグがある
RHEL9.4ではSCPで同じ場所にファイルをコピー貼り付けを行うと元のファイルが削除されるバグがあります。
特定の構文を使用すると、scp は自身にコピーされたファイルを空にする
scp ユーティリティーが Secure copy protocol (SCP) からよりセキュアな SSH ファイル転送プロトコル (SFTP) に変更されました。したがって、ある場所からファイルを同じ場所にコピーすると、ファイルの内容が消去されます。この問題は以下の構文に影響します。
scp localhost:/myfile localhost:/myfile
この問題を回避するには、この構文を使用して、ソースの場所と同じ宛先にファイルをコピーしないでください。
この問題は、以下の構文に対して修正されました。
scp /myfile localhost:/myfile
scp localhost:~/myfile ~/myfile
Bugzilla:2056884
RHEL9ではRHEL8とはSELinuxの無効化手順が異なる
RHEL8では/etc/selinux/configにSELINUX=disabledを記載しOSを再起動することでSELinuxを永続的に無効化できました。RHEL9では、以下のコマンドの実行によってSELinuxを永続的に無効化することが推奨されます。
# grubby --update-kernel ALL --args selinux=0