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プロジェクトの最新の詳細を確認します。

目的

このチュートリアルでは、次の手順を実行します。

前提条件

CentOSバージョンを確認します

  1. ターミナルを開き、インスタンスに接続します。

  2. CentOSのバージョンを取得します。

    sudo cat /etc/redhat-release
    
    sudo cat /etc/os-release
    

    これらのコマンドはどちらも、インスタンスがCentOS 7を実行していることを示しています。

非標準カーネルのチェック

  1. yumを使用して、インストールされているカーネルのリストを取得します。

    sudo yum list installed kernel
    

    このリストには、yumを使用してインストールされたすべてのカーネルが表示されます。標準以外のカーネルをすべて削除することを強くお勧めします。たとえば、ベースによってインストールされておらず、リポジトリを更新していないカーネルなどです。centosplusカーネルの削除も含まれます。

  2. 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を使用してカーネルを削除しないでください。動作している唯一のカーネルまたは正しくないカーネルのカーネルエントリを削除すると、システムのブートに失敗し、壊れたサーバーを修正するためにシングルユーザーモードへのブートが必要になることがあります。)

  1. 非標準カーネルを削除します。

    sudo yum remove <KERNEL>
    

    <KERNEL>は、rpm -q kernelによって提供される完全なパッケージ名です。

Grubbyによる非標準カーネルの削除

grubbyは、grubブート・ローダーの構成ファイルに関する情報を更新および表示するためのコマンドライン・ツールです。このツールを使用すると、管理者はyumの外部にインストールされているカーネルを無効にできます。

ノート:前の項の説明に基づく非標準カーネルがシステムにない場合は、この項をスキップしてください。(システムにカーネルが1つのみインストールされている場合は、yumを使用してカーネルを削除しないでください。動作している唯一のカーネルまたは正しくないカーネルのカーネルエントリを削除すると、システムのブートに失敗し、壊れたサーバーを修正するためにシングルユーザーモードへのブートが必要になることがあります。)

  1. インストールされている各カーネルのブートエントリに割り当てられたインデックスを取得します。

    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
    
  2. 標準以外のカーネルのブートエントリをすべて削除します。

    grubby --remove-kernel=<MENU_INDEX>
    

    <MENU_INDEX>は、前のコマンドの出力から返される索引値です。

YUM構成の確認

  1. 有効なリポジトリのリストを取得します。

    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
    
  2. すべてのインストール済みパッケージを更新します。

    sudo yum -y upgrade
    

CentOS以外のリポジトリの削除または無効化

CentOS以外のすべてのリポジトリを無効にします。このステップは、切り替え中のサードパーティーリポジトリとのパッケージの競合を回避するのに役立ちます。切り替え後にリポジトリを再度有効にできます。

  1. CentOS以外のリポジトリを無効にします。

    sudo yum-config-manager --disable <REPOSITORY_NAME>
    

    <REPOSITORY_NAME>を、システムで有効になっているCentOS以外のリポジトリのリポジトリ名に置き換えます。

/var/cacheの空き領域の確認

  1. ディスク領域使用状況レポートを取得します。

    df -h
    

    ノート:この例では、/var/cache/マウント・ポイントの下にあり、35Gが使用可能です。このシステムには、centos2olプロジェクトで推奨される5Gが無償で提供されています。

Cronでの自動更新のチェック

管理者が自動更新を有効にする方法はいくつかあります。この項では、yumを直接実行するcronジョブ、またはスクリプトを使用するcronジョブを確認します。これらのジョブが見つかった場合は無効にして、切り替えプロセス中に実行されないようにします。

  1. rootのcronジョブを一覧表示します。

    sudo crontab -l
    
  2. ユーザーのcronジョブをリストします。

    sudo crontab -u oracle -l
    
  3. 日次、時間次、週次および月次cronジョブをリストします。

    sudo ls -al /etc/cron*
    

    次に、lessまたは選択したエディタを使用して個々のファイルを確認します。

    ノート:名前にyum-cronを含むファイルは、yum-cronサービスによって管理されます。これの無効化については、チュートリアルの次の項で説明します。

  4. /etc/crontabの内容をリストします。

    sudo less /etc/crontab
    

YUM Cron更新の無効化

更新を自動的に適用するもう1つの方法は、yum-cronです。

  1. 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パッケージが出力に表示された場合は、次の項に進んでください。

  2. yum-cron systemdサービスの状態を確認します。

    sudo systemctl is-enabled yum-cron
    sudo systemctl is-active yum-cron
    
  3. yum-cron systemdサービスがアクティブで実行中の場合、これを無効にします。

    sudo systemctl stop yum-cron
    sudo systemctl disable yum-cron
    

変換スクリプトのダウンロードと実行

  1. 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
    
  2. 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)に置き換えます。このカーネルは、厳密なカーネル・バージョン制限が課された場合に特定のハードウェアまたはアプリケーションで必要になる場合があります。

  3. システムの再起動。

    sudo reboot
    

Oracle Linuxへのシステム・スイッチの確認

  1. 端末を使用して、インスタンスに再度接続します。

  2. 配布バージョンおよびカーネルの詳細を確認します。

    cat /etc/os-release
    cat /etc/redhat-release
    uname -r
    

centos2ol GitHubプロジェクトへの貢献

  1. サポートを受ける

    セキュリティ関連でないバグ・レポート、質問または拡張のリクエストに対して、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を参照してください。