CentOS8からRHEL8へのコンバート手順

目次

はじめに

長らく無償で使えていた CentOS だが、CentOS8 が 2021年12月31日に終了。(当初のサポート期限は2029年5月31日だった)
CentOS8 は今後パッチがリリースされず、脆弱性があっても対処されない。

厳密には「CentOS Stream」が利用できるが、常に最新のパッチが適用される状態となる。
セキュリティ的にはありがたい反面、サーバを運用する側としては予定していないバージョンアップは避けたいため使いづらくなった。

そんなことから CentOS8 から RHEL8 へコンバートする機会があったので、記録として残します。
今回は ISOイメージを使ってコンバートしました。

CentOS8 から RHEL8 へコンバートすると簡単には戻せないため、バックアップやスナップショットを取ってから行いたい。

コンバート手順

リポジトリの設定や、事前のパッケージ最新化、convert2rhelのインストール等の事前準備をする。

# CentOS が EOL となっているためリポジトリ切替
# vi /etc/yum.repos.d/CentOS-Linux-AppStream.repo
---
#baseurl=http://vault.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
baseurl=http://vault.centos.org/8.5.2111/AppStream/$basearch/os/

#enabled=0
enabled=1
---

# vi /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
---
#baseurl=http://vault.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
baseurl=http://vault.centos.org/8.5.2111/BaseOS/$basearch/os/

#enabled=0
enabled=1
---

# 事前にパッケージを最新化
# dnf update -y
# reboot

# 変換前パッケージ一覧
# dnf list --installed

# カーネルのバージョンを確認
# uname -r
4.18.0-348.7.1.el8_5.x86_64

# dnf update 後 CentOS が EOL となっているためリポジトリに再度向くため切替
# vi /etc/yum.repos.d/CentOS-Linux-AppStream.repo
---
#baseurl=http://vault.centos.org/$contentdir/$releasever/AppStream/$basearch/os/
baseurl=http://vault.centos.org/8.5.2111/AppStream/$basearch/os/

#enabled=0
enabled=1
---

# vi /etc/yum.repos.d/CentOS-Linux-BaseOS.repo
---
#baseurl=http://vault.centos.org/$contentdir/$releasever/BaseOS/$basearch/os/
baseurl=http://vault.centos.org/8.5.2111/BaseOS/$basearch/os/

#enabled=0
enabled=1
---

# yum-utils インストール
# dnf install yum-utils --disablerepo=* --enablerepo=baseos

# convert2rhelツールのインストール
# yum install -y https://github.com/oamg/convert2rhel/releases/download/v0.25/convert2rhel-0.25-1.el8.noarch.rpm

# ISOファイルのマウント
# mkdir /mnt/media
# mount /dev/sr0 /mnt/media

# ISO を使うための RHEL用repoファイルの作成
vi /etc/yum.repos.d/rhel-media.repo
---
[rhel-8-baseos]
name=Red Hat Enterprise Linux 8.3.0 - BaseOS
baseurl=file:///mnt/media/BaseOS
mediaid=None
metadata_expire=-1
gpgcheck=0
cost=500

[rhel-8-appstream]
name=Red Hat Enterprise Linux 8.3.0 - AppStream
baseurl=file:///mnt/media/AppStream
mediaid=None
metadata_expire=-1
gpgcheck=0
cost=500
---

# リポジトリ確認
# dnf repolist
appstream                                                          CentOS Linux 8 - AppStream
baseos                                                             CentOS Linux 8 - BaseOS
copr:copr.fedorainfracloud.org:xavierb:sympa-beta                  Copr repo for sympa-beta owned by xavierb
epel                                                               Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                                       Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                                             CentOS Linux 8 - Extras
rhel-8-appstream                                                   Red Hat Enterprise Linux 8.3.0 - AppStream
rhel-8-baseos                                                      Red Hat Enterprise Linux 8.3.0 - BaseOS

コンバートコマンド実行。

# CentOS 8 から RHEL 8 にマイグレーション
# convert2rhel --disable-submgr --enablerepo rhel-8-baseos --enablerepo rhel-8-appstream --debug

CRITICAL - Tainted kernel module(s) detected. Third-party components are not supported per our software support policy
https://access.redhat.com/third-party-software-support

Uninstall or disable the following module(s) and run convert2rhel again to continue with the conversion:
  eset_rtp

エラーが発生。
ESET が邪魔みたいなので、設定をバックアップして一度アンインストールする。

# ESET 設定エクスポート
# /opt/eset/efs/sbin/cfg --export-xml=/tmp/export.xml

# ESETアンインストール
# dnf remove efs -y

改めてコンバートのコマンドを実行。

# CentOS 8 から RHEL 8 にマイグレーション
# convert2rhel --disable-submgr --enablerepo rhel-8-baseos --enablerepo rhel-8-appstream --debug

ここから先はロールバックできないよと言う警告がでるので「y」進める。

WARNING - ********************************************************
WARNING - The tool allows rollback of any action until this point.
WARNING - By continuing all further changes on the system will need to be reverted manually by the user, if necessary.
WARNING - ********************************************************

Continue with the system conversion? [y/n]:y

以下のメッセージが出ればコンバート完了。

[08/05/2022 20:06:52] TASK - [Final: Remove temporary folder /var/lib/convert2rhel/] ************
Temporary folder /var/lib/convert2rhel/ removed

Conversion successful!

再起動してコンバートされていることを確認。

# 再起動
# reboot

#マイグレーションが行われたことを確認
# cat /etc/redhat-release
Red Hat Enterprise Linux release 8.6 (Ootpa)

# 移行後のパッケージ一覧
# yum list --installed

subscription-manager をインストールして、サブスクリプションを割当する。

# 再度 ISO をマウント
mount /dev/sr0 /mnt/media

# subscription-manager をインストール
dnf -y install subscription-manager

# ISO 用のリポジトリ設定を削除
#rm /etc/yum.repos.d/rhel-media.repo

# サブスクリプション登録
subscription-manager register --auto-attach --force

# 利用可能なサブスクリプション確認
# subscription-manager list --available

# サブスクリプションアタッチ
# subscription-manager register --auto-attach

私の環境では ESET を入れていたため再度インストール。

# ESET インストール
# ./efs.x86_64.bin
(press q after you have read the License to continue extraction)
Enterを押す

Do you accept this End User License Agreement and acknowledge Privacy Policy? (y/n) y


# ESET 設定インポート
# /opt/eset/efs/sbin/cfg --import-xml=/tmp/export.xml

トラブル1:CentOS8 の古いリポジトリは利用できない

ISOイメージでは無くオンラインのリポジトリを使用する場合、vaultに切り替える必要がある。
vault にリポジトリを向けないと convert2rhelツールのインストールに失敗する。

# リポジトリ登録
# RedHatGPGキーをダウンロード
# curl -o /etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release https://www.redhat.com/security/data/fd431d51.txt

# Convert2RHEL レポ含む SSL証明書をダウンロード
# curl --create-dirs -o /etc/rhsm/ca/redhat-uep.pem https://ftp.redhat.com/redhat/convert2rhel/redhat-uep.pem

# CentOS8にConvert2RHELYUMリポジトリを追加
# curl -o /etc/yum.repos.d/convert2rhel.repo https://ftp.redhat.com/redhat/convert2rhel/8/convert2rhel.repo

# convert2rhelツールのインストール
# dnf install -y https://github.com/oamg/convert2rhel/releases/download/v0.15/convert2rhel-0.15-1.el8.noarch.rpm
エラー: Failed to download metadata for repo 'AppStream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

# CentOS が EOL となっているためリポジトリ切替
# sed -i -e 's/^mirrorlist/#mirrorlist/g' -e 's/^#baseurl=http:\/\/mirror/baseurl=http:\/\/vault/g' /etc/yum.repos.d/CentOS-*repo

# リポジトリ確認
# dnf repolist
Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/gf.repo; 設定: id "failovermethod" を伴う OptionBinding は存在しません
Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/gf.repo; 設定: id "failovermethod" を伴う OptionBinding は存在しません
Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/gf.repo; 設定: id "failovermethod" を伴う OptionBinding は存在しません
Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/gf.repo; 設定: id "failovermethod" を伴う OptionBinding は存在しません
Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/gf.repo; 設定: id "failovermethod" を伴う OptionBinding は存在しません
Invalid configuration value: failovermethod=priority in /etc/yum.repos.d/gf.repo; 設定: id "failovermethod" を伴う OptionBinding は存在しません
repo id                                                        repo の名前
AppStream                                                      CentOS-8 - AppStream
BaseOS                                                         CentOS-8 - Base
PowerTools                                                     CentOS-8 - PowerTools
convert2rhel-for-rhel-8-rpms                                   Convert2RHEL for OS 8
copr:copr.fedorainfracloud.org:xavierb:sympa-beta              Copr repo for sympa-beta owned by xavierb
epel                                                           Extra Packages for Enterprise Linux 8 - x86_64
epel-modular                                                   Extra Packages for Enterprise Linux Modular 8 - x86_64
extras                                                         CentOS-8 - Extras

# convert2rhelインストール
# dnf -y install convert2rhel

トラブル2:dnf update するとリポジトリが切り戻る

「トラブル1」でリポジトリを vault に向けても、dnf update するとリポジトリが切り戻っていた。
この状態で convert2rhel を実行しても以下のようなエラーとなる。

# CentOS 8 から RHEL 8 にマイグレーション
# convert2rhel --debug --auto-attach --username=USERNAME --password='PASSWORD'

Error: Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

CRITICAL - Couldn't download the centos-logos-85.8-2.el8.x86_64 package. This means we will not be able to do a complete rollback and may put the system in a broken state.
Check to make sure that the CentOS Linux repositories are enabled and the package is updated to its latest version.
If you would rather ignore this check set the environment variable 'CONVERT2RHEL_UNSUPPORTED_INCOMPLETE_ROLLBACK'.

さっきまで appstream が使えていたのになぜ…?となりましたが、dnf update のタイミングで リポジトリの情報が上書きされていたみたいなので、再度 vault に向ける。

# dnf update するとリポジトリが戻ってしまったので 再度リポジトリ切替
# sed -i -e 's/^mirrorlist/#mirrorlist/g' -e 's/^#baseurl=http:\/\/mirror/baseurl=http:\/\/vault/g' /etc/yum.repos.d/CentOS-*repo

トラブル3:convert2rhel でサブスクリプションの認証が失敗

以下のエラーで subscription-manager の認証が失敗した。
ESXi や HCI 環境で使用する VM の RHEL は、サブスクリプションが Virtual Datacenters だからホスト側でゲストOS が RHEL と認識してからでないとサブスクリプションが割り当てられないのかも。

# CentOS 8 から RHEL 8 にマイグレーション
# convert2rhel --debug --auto-attach --username=USERNAME --password='PASSWORD'

WARNING - Error: Unable to register your system with subscription-manager using the provided credentials.
CRITICAL - Unable to register the system through subscription-manager.

諦めて今回は ISO イメージを使ってコンバートした。

まとめ

CentOS8 から RHEL8 へのコンバートはウェブ上でもいくつか公開されているものの、ややハマりポイントもある印象です。

Virtual Datacenters のサブスクリプションを使っている場合は、ISOイメージをダウンロードしておいた方が無難です。
あと ESET を使っている場合は、再インストールすることになります。

コンバートした後は、設定が一部変わっていることろもあるので見直しは必要だと思います。
コンバート自体は1時間弱で終わりました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次