CentOS 7からOracle Linux 7への切替え
イントロダクション
ノート: CentOS 7は、2024年6月30日に耐用期間終了(EOL)に達しました。この状況は、CentOSの背後にあるRed Hatが、オペレーティング・システムのセキュリティ更新やバグ修正を提供しないことを意味します。
次のチュートリアルでは、CentOS固有のパッケージを削除またはOracle Linuxの同等パッケージに置き換えることで、CentOS 7インスタンスをOracle Linux 7に自動的に切り替えるステップバイステップの手順を示します。GitHubのOracle centos2ol
リポジトリのREADME.mdは、このチュートリアルで使用されるスクリプトは処理中であり、可能なすべての構成を処理するように設計されていないことを示しています。
スクリプトでシステムを正常に変換できない場合は、このプロセスを開始する前にシステムの完全なバックアップがあることを確認してください。
プロジェクトの README.mdファイル内の centos2olプロジェクトの最新の詳細を確認します。
目的
このチュートリアルでは、次の手順を実行します。
- 非標準カーネルの確認
yum
構成が機能していることを確認します。- 失効したリポジトリと非CentOSリポジトリを無効化または削除します。
/var/cache
に5GBの空き領域があることを確認します。yum-cron
を含むすべての自動更新を無効にします
前提条件
- CentOS 7がインストールされているシステム。
CentOSバージョンを確認します
-
ターミナルを開き、インスタンスに接続します。
-
CentOSのバージョンを取得します。
sudo cat /etc/redhat-release
sudo cat /etc/os-release
これらのコマンドはどちらも、インスタンスがCentOS 7を実行していることを示しています。
非標準カーネルのチェック
-
yum
を使用して、インストールされているカーネルのリストを取得します。sudo yum list installed kernel
このリストには、
yum
を使用してインストールされたすべてのカーネルが表示されます。標準以外のカーネルをすべて削除することを強くお勧めします。たとえば、ベースによってインストールされておらず、リポジトリを更新していないカーネルなどです。centosplus
カーネルの削除も含まれます。 -
grubby
を使用して、インストールされている他のカーネルのリストを取得します。sudo grubby --info=ALL | grep ^kernel
出力例:
[oracle@centos-7 ~]$ sudo grubby --info=ALL | grep ^kernel kernel=/boot/vmlinuz-3.10.0-1160.76.1.el7.x86_64 kernel=/boot/vmlinuz-3.10.0-1160.el7.x86_64 kernel=/boot/vmlinuz-0-rescue-281810806a454564906c048d496729db
リストには、使用するように構成されているすべてのカーネルが表示されます。また、非標準カーネルをすべて削除することを強くお薦めします。
Yumを使用した非標準カーネルの削除
GRUB2 BootHole脆弱性のため、Oracle Linux Secure Boot shimはOracleによって署名されたカーネルのみをブートでき、デフォルトのCentOSカーネルのみを置き換えることができます。SecureBootが無効になっている場合、これはシステムに影響しない可能性がありますが、後で有効にすると、ブート不能になる可能性があります。そのため、標準以外のカーネルをすべて削除することを強くお薦めします。たとえば、base
リポジトリまたはupdates
リポジトリ(CentOSPlusカーネルを含む)で提供されていないインストール済カーネルです。
ノート:前述の説明に基づく非標準カーネルがシステムにない場合は、この項をスキップしてください。(システムにカーネルが1つのみインストールされている場合は、
yum
を使用してカーネルを削除しないでください。動作している唯一のカーネルまたは正しくないカーネルのカーネルエントリを削除すると、システムのブートに失敗し、壊れたサーバーを修正するためにシングルユーザーモードへのブートが必要になることがあります。)
-
非標準カーネルを削除します。
sudo yum remove <KERNEL>
<KERNEL>
は、rpm -q kernel
によって提供される完全なパッケージ名です。
Grubbyによる非標準カーネルの削除
grubby
は、grubブート・ローダーの構成ファイルに関する情報を更新および表示するためのコマンドライン・ツールです。このツールを使用すると、管理者はyum
の外部にインストールされているカーネルを無効にできます。
ノート:前の項の説明に基づく非標準カーネルがシステムにない場合は、この項をスキップしてください。(システムにカーネルが1つのみインストールされている場合は、
yum
を使用してカーネルを削除しないでください。動作している唯一のカーネルまたは正しくないカーネルのカーネルエントリを削除すると、システムのブートに失敗し、壊れたサーバーを修正するためにシングルユーザーモードへのブートが必要になることがあります。)
-
インストールされている各カーネルのブートエントリに割り当てられたインデックスを取得します。
sudo grubby --info=ALL | grep -E "^kernel|^index"
出力例:
[oracle@centos-7 ~]$ sudo grubby --info=ALL | grep -E "^kernel|^index" index=0 kernel=/boot/vmlinuz-3.10.0-1160.76.1.el7.x86_64 index=1 kernel=/boot/vmlinuz-3.10.0-1160.el7.x86_64 index=2 kernel=/boot/vmlinuz-0-rescue-281810806a454564906c048d496729db index=3
-
標準以外のカーネルのブートエントリをすべて削除します。
grubby --remove-kernel=<MENU_INDEX>
<MENU_INDEX>
は、前のコマンドの出力から返される索引値です。
YUM構成の確認
-
有効なリポジトリのリストを取得します。
sudo yum repolist
出力例:
[oracle@centos-7 ~]$ sudo yum repolist Loaded plugins: fastestmirror, langpacks Loading mirror speeds from cached hostfile * base: ftp.plusline.net * epel: mirror.imt-systems.com * extras: mirror.imt-systems.com * updates: ftp.plusline.net repo id repo name status base/7/x86_64 CentOS-7 - Base 10072 docker-ce-stable/7/x86_64 Docker CE Stable - x86_64 183 epel/x86_64 Extra Packages for Enterprise Linux 7 - x86_64 13738 extras/7/x86_64 CentOS-7 - Extras 515 updates/7/x86_64 CentOS-7 - Updates 4383 zfs/7/x86_64 ZFS on Linux for EL7 - dkms 55 repolist: 28946
-
すべてのインストール済みパッケージを更新します。
sudo yum -y upgrade
CentOS以外のリポジトリの削除または無効化
CentOS以外のすべてのリポジトリを無効にします。このステップは、切り替え中のサードパーティーリポジトリとのパッケージの競合を回避するのに役立ちます。切り替え後にリポジトリを再度有効にできます。
-
CentOS以外のリポジトリを無効にします。
sudo yum-config-manager --disable <REPOSITORY_NAME>
<REPOSITORY_NAME>
を、システムで有効になっているCentOS以外のリポジトリのリポジトリ名に置き換えます。
/var/cache
の空き領域の確認
-
ディスク領域使用状況レポートを取得します。
df -h
ノート:この例では、
/var/cache
は/
マウント・ポイントの下にあり、35Gが使用可能です。このシステムには、centos2olプロジェクトで推奨される5Gが無償で提供されています。
Cronでの自動更新のチェック
管理者が自動更新を有効にする方法はいくつかあります。この項では、yum
を直接実行するcronジョブ、またはスクリプトを使用するcronジョブを確認します。これらのジョブが見つかった場合は無効にして、切り替えプロセス中に実行されないようにします。
-
rootのcronジョブを一覧表示します。
sudo crontab -l
-
ユーザーのcronジョブをリストします。
sudo crontab -u oracle -l
-
日次、時間次、週次および月次cronジョブをリストします。
sudo ls -al /etc/cron*
次に、
less
または選択したエディタを使用して個々のファイルを確認します。ノート:名前に
yum-cron
を含むファイルは、yum-cron
サービスによって管理されます。これの無効化については、チュートリアルの次の項で説明します。 -
/etc/crontab
の内容をリストします。sudo less /etc/crontab
YUM Cron更新の無効化
更新を自動的に適用するもう1つの方法は、yum-cron
です。
-
yum-cron
パッケージを確認します。sudo yum list installed yum-cron
出力例:
[oracle@centos-7 ~]$ yum list installed yum-cron Loaded plugins: fastestmirror, langpacks Determining fastest mirrors * base: ftp.plusline.net * epel: ftp.plusline.net * extras: ftp.plusline.net * updates: ftp.rz.uni-frankfurt.de Installed Packages yum-cron.noarch 3.4.3-168.el7.centos @base
システムにインストールされていない
yum-cron
パッケージが出力に表示された場合は、次の項に進んでください。 -
yum-cron
systemdサービスの状態を確認します。sudo systemctl is-enabled yum-cron sudo systemctl is-active yum-cron
-
yum-cron
systemdサービスがアクティブで実行中の場合、これを無効にします。sudo systemctl stop yum-cron sudo systemctl disable yum-cron
変換スクリプトのダウンロードと実行
-
GitHubから
centos2ol.sh
スクリプトをダウンロードします。スクリプトを取得する最も簡単な方法は、curlを使用することです。
curl -O https://raw.githubusercontent.com/oracle/centos2ol/main/centos2ol.sh
Gitがインストールされている場合は、
clone
オプションを使用してGitHubからリポジトリをプルします。git clone https://github.com/oracle/centos2ol.git
-
centos2ol.sh
スクリプトを実行します。git clone
を使用した場合は、現在の作業ディレクトリをcentos2olディレクトリに変更します。オプション
-h
を渡して、スクリプトの使用オプションを参照してください。sudo bash centos2ol.sh -h
次に、スクリプトを実行し、完了するまで待ちます。
sudo bash centos2ol.sh
このプロセスの一環として、デフォルトのカーネルが Oracleの Unbreakable Enterprise Kernel (UEK)の最新リリースに切り替わり、プロセススケジューラ、メモリー管理、ファイルシステム、およびネットワークスタックのパフォーマンスとスケーラビリティーが大幅に向上します。また、既存のCentOSカーネルを同等のRed Hat Compatible Kernel (RHCK)に置き換えます。このカーネルは、厳密なカーネル・バージョン制限が課された場合に特定のハードウェアまたはアプリケーションで必要になる場合があります。
-
システムの再起動。
sudo reboot
Oracle Linuxへのシステム・スイッチの確認
-
端末を使用して、インスタンスに再度接続します。
-
配布バージョンおよびカーネルの詳細を確認します。
cat /etc/os-release cat /etc/redhat-release uname -r
centos2ol GitHubプロジェクトへの貢献
-
サポートを受ける
セキュリティ関連でないバグ・レポート、質問または拡張のリクエストに対して、GitHubの問題を開きます。
参照先
Oracle Linuxドキュメント
Oracle Linuxトレーニング
Oracle Linuxトレーニング・ステーション
LeappによるOracle Linuxのアップグレード
その他の学習リソース
docs.oracle.com/learnの他のラボを確認するか、Oracle Learning YouTubeチャネルで無料のラーニング・コンテンツにアクセスしてください。また、education.oracle.com/learning-explorerにアクセスしてOracle Learning Explorerになります。
製品ドキュメントについては、Oracle Help Centerを参照してください。