RHEL 8をRHEL 9にインプレースアップグレードの方式でアップグレードします。今回は、RHEL 8の最新バージョンが8.7の時点で実施してみました。
記事の目次
- 1 過去のアップグレードを確認する!
- 2 マイナーバージョンの固定の設定をクリアする!
- 3 パッケージのバージョンロックをクリアする!
- 4 RHEL 8を最新化する!
- 5 RHEL 8のバージョンを確認する!
- 6 インプレースアップグレード用のツールをインストールする!
- 7 インプレースアップグレードの分析を行う!
- 8 対処が必要な項目の詳細を確認する!
- 9 アップグレードを行うための設定変更を行う!
- 10 再度インプレースアップグレードの分析を行う!
- 11 インプレースアップグレードを行う!
- 12 RHELを再起動する!
- 13 RHELのバージョンを確認する!
- 14 RHELのマイナーバージョンが固定されていることを確認する!
- 15 アップデートの除外リストをクリアする!
- 16 旧カーネルの削除を行う!
- 17 アップグレード用のツールを削除する!
- 18 アップグレード用のリポジトを削除する!
- 19 おわりに
- 20 関連記事
- 21 関連書籍(Amazon)
過去のアップグレードを確認する!
過去にアップグレードしたことがあるか確認します。
# pwd /root # ls -l total 4 -rw-------. 1 root root 1749 Apr 30 06:30 anaconda-ks.cfg drwxr-xr-x. 2 root root 33 Apr 30 09:27 tmp_leapp_py3
「tmp_leapp_py3」ディレクトリが存在する場合は、過去にアップグレードしたことがあることを示しています。その場合、「tmp_leapp_py3」ディレクトリを削除します。
# rm -rf /root/tmp_leapp_py3 # ls -l total 4 -rw-------. 1 root root 1749 Apr 30 06:30 anaconda-ks.cfg
# subscription-manager list --installed +-------------------------------------------+ Installed Product Status +-------------------------------------------+ Product Name: Red Hat Enterprise Linux for x86_64 Product ID: 479 Version: 8.6 Arch: x86_64
マイナーバージョンの固定の設定をクリアする!
マイナーバージョンの固定を行っているか確認します。
# subscription-manager release Release: 8.6
マイナーバージョンの固定の設定を行っている場合は、クリアします。
# subscription-manager release --unset Release preference has been unset
パッケージのバージョンロックをクリアする!
パッケージのバージョンロックを行っている場合は、バージョンロックをクリアします。dnfのバージョンロックのプラグインが必要で、使用していないケースも多いと思います。
# dnf versionlock clear
dnfのバージョンロックのプラグインを使用していない場合は、以下のようなメッセージが出力されます。
# dnf versionlock clear Updating Subscription Management repositories. No such command: versionlock. Please use /usr/bin/dnf --help It could be a DNF plugin command, try: "dnf install 'dnf-command(versionlock)'"
RHEL 8を最新化する!
RHEL 8を最新化します。RHELを最新化後、OSをリブートします。
# dnf -y update # reboot
RHEL 8のバージョンを確認する!
RHELのバージョンとカーネルのバージョンを確認します。
# cat /etc/redhat-release Red Hat Enterprise Linux release 8.7 (Ootpa) # uname -r 4.18.0-425.19.2.el8_7.x86_64 # subscription-manager list --installed +-------------------------------------------+ Installed Product Status +-------------------------------------------+ Product Name: Red Hat Enterprise Linux for x86_64 Product ID: 479 Version: 8.7 Arch: x86_64 # subscription-manager release Release: 8.7
インプレースアップグレード用のツールをインストールする!
Leapp ユーティリティーをインストールします。
# dnf -y install leapp-upgrade Updating Subscription Management repositories. Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs) 630 B/s | 4.1 kB 00:06 Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) 683 B/s | 4.5 kB 00:06 Last metadata expiration check: 0:00:13 ago on Mon 01 May 2023 06:38:37 AM JST. Dependencies resolved. ======================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================== Installing: leapp-upgrade-el8toel9 noarch 0.17.0-3.el8 rhel-8-for-x86_64-appstream-rpms 692 k Installing dependencies: leapp noarch 0.15.0-2.el8 rhel-8-for-x86_64-appstream-rpms 32 k leapp-deps noarch 0.15.0-2.el8 rhel-8-for-x86_64-appstream-rpms 15 k leapp-upgrade-el8toel9-deps noarch 0.17.0-3.el8 rhel-8-for-x86_64-appstream-rpms 32 k python3-leapp noarch 0.15.0-2.el8 rhel-8-for-x86_64-appstream-rpms 177 k Transaction Summary ======================================================================================================================== Install 5 Packages ... Installed: leapp-0.15.0-2.el8.noarch leapp-deps-0.15.0-2.el8.noarch leapp-upgrade-el8toel9-0.17.0-3.el8.noarch leapp-upgrade-el8toel9-deps-0.17.0-3.el8.noarch python3-leapp-0.15.0-2.el8.noarch Complete!
インプレースアップグレードの分析を行う!
インプレースアップグレードが可能であるかツールで分析します。インプレースアップグレードでサポートされているバージョンを「--target 9.0」のように指定します。
# leapp preupgrade --target 9.0 ... ============================================================ UPGRADE INHIBITED ============================================================ Upgrade has been inhibited due to the following problems: 1. Inhibitor: Possible problems with remote login using root account 2. Inhibitor: Firewalld Configuration AllowZoneDrifting Is Unsupported Consult the pre-upgrade report for details and possible remediation. ============================================================ UPGRADE INHIBITED ============================================================ Debug output written to /var/log/leapp/leapp-preupgrade.log ============================================================ REPORT ============================================================ A report has been generated at /var/log/leapp/leapp-report.json A report has been generated at /var/log/leapp/leapp-report.txt ============================================================ END OF REPORT ============================================================ Answerfile has been generated at /var/log/leapp/answerfile
通常、このようなメッセージで対処が必要な項目が表示されます。
対処が必要な項目の詳細を確認する!
今回の場合、対応必須の項目は、以下の2点でした。
# cat /var/log/leapp/leapp-report.txt Risk Factor: high (inhibitor) Title: Possible problems with remote login using root account Summary: OpenSSH configuration file will get updated to RHEL9 version, no longer allowing root login with password. It is a good practice to use non-root administrative user and non-password authentications, but if you rely on the remote root login, this change can lock you out of this system. Remediation: [hint] If you depend on remote root logins using passwords, consider setting up a different user for remote administration or adding a comment into the sshd_config next to the "PermitRootLogin yes" directive to prevent rpm replacing it during the upgrade. Key: 3d21e8cc9e1c09dc60429de7716165787e99515f ---------------------------------------- Risk Factor: high (inhibitor) Title: Firewalld Configuration AllowZoneDrifting Is Unsupported Summary: Firewalld has enabled configuration option "AllowZoneDrifiting" which has been removed in RHEL-9. New behavior is as if "AllowZoneDrifiting" was set to "no". Remediation: [hint] Set AllowZoneDrifting=no in /etc/firewalld/firewalld.conf [command] sed -i "s/^AllowZoneDrifting=.*/AllowZoneDrifting=no/" /etc/firewalld/firewalld.conf Key: 5b1cf050e1a877b0358b6e8c612277c591d40c13 ....
アップグレードを行うための設定変更を行う!
アップグレードを行うための設定変更を行います。
# echo PermitRootLogin yes | tee -a /etc/ssh/sshd_config # sed -i "s/^AllowZoneDrifting=.*/AllowZoneDrifting=no/" /etc/firewalld/firewalld.conf
再度インプレースアップグレードの分析を行う!
再度、インプレースアップグレードが可能であるかツールで分析します。以下のような表示になれば、OKです。
# leapp preupgrade --target 9.0 ... Check completed. ====> * tmp_actor_to_satisfy_sanity_checks The actor does NOTHING but satisfy static sanity checks ====> * check_initramfs_tasks Inhibit the upgrade if conflicting "initramfs" tasks are detected ==> Processing phase `Reports` ====> * verify_check_results Check all dialogs and notify that user needs to make some choices. ====> * verify_check_results Check all generated results messages and notify user about them. Debug output written to /var/log/leapp/leapp-preupgrade.log ============================================================ REPORT ============================================================ A report has been generated at /var/log/leapp/leapp-report.json A report has been generated at /var/log/leapp/leapp-report.txt ============================================================ END OF REPORT ============================================================ Answerfile has been generated at /var/log/leapp/answerfile
インプレースアップグレードを行う!
いよいよ、インプレースアップグレードを行います。
# leapp upgrade --target 9.0 ... Complete! ====> * add_upgrade_boot_entry Add new boot entry for Leapp provided initramfs. A reboot is required to continue. Please reboot your system. Debug output written to /var/log/leapp/leapp-upgrade.log ============================================================ REPORT ============================================================ A report has been generated at /var/log/leapp/leapp-report.json A report has been generated at /var/log/leapp/leapp-report.txt ============================================================ END OF REPORT ============================================================ Answerfile has been generated at /var/log/leapp/answerfile
成功です!
RHELを再起動する!
RHELを再起動します。
# reboot
再起動後にも、アップグレードの処理と再起動が実行され、OSにログインできるまでにはしばらく時間がかかります。
RHELのバージョンを確認する!
RHELとカーネルのバージョンを確認します。
# cat /etc/redhat-release Red Hat Enterprise Linux release 9.0 (Plow) # uname -r 5.14.0-70.30.1.el9_0.x86_64 # subscription-manager list --installed +-------------------------------------------+ Installed Product Status +-------------------------------------------+ Product Name: Red Hat Enterprise Linux for x86_64 Product ID: 479 Version: 9.0 Arch: x86_64 Status: Not Subscribed Status Details: Starts: Ends:
RHELのマイナーバージョンが固定されていることを確認する!
RHELのマイナーバージョンが固定されていることを確認します。
# subscription-manager release Release: 9.0
アップデートの除外リストをクリアする!
アップデートの除外リストをクリアします。
# cat /etc/dnf/dnf.conf [main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True best=True skip_if_unavailable=False exclude=leapp,python3-leapp,leapp-upgrade-el8toel9,snactor # yum config-manager --save --setopt exclude='' Updating Subscription Management repositories. # cat /etc/dnf/dnf.conf [main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True best=True skip_if_unavailable=False exclude=
旧カーネルの削除を行う!
旧カーネルを削除します。
# rpm -qa | grep -e '\.el[78]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort jimtcl-0.77-6.el8.x86_64 kernel-4.18.0-372.32.1.el8_6.x86_64 kernel-4.18.0-425.19.2.el8_7.x86_64 kernel-core-4.18.0-372.32.1.el8_6.x86_64 kernel-core-4.18.0-425.19.2.el8_7.x86_64 kernel-modules-4.18.0-372.32.1.el8_6.x86_64 kernel-modules-4.18.0-425.19.2.el8_7.x86_64 kernel-modules-extra-4.18.0-372.32.1.el8_6.x86_64 kernel-modules-extra-4.18.0-425.19.2.el8_7.x86_64 kernel-workaround-0.1-1.el8.noarch leapp-0.15.0-2.el8.noarch leapp-upgrade-el8toel9-0.17.0-3.el8.noarch libatomic_ops-7.6.2-3.el8.x86_64 libmodman-2.0.1-17.el8.x86_64 python3-leapp-0.15.0-2.el8.noarch # dnf -y remove kernel-4.18.0-372.32.1.el8_6.x86_64 kernel-4.18.0-425.19.2.el8_7.x86_64 ... Complete! # dnf -y remove kernel-core-4.18.0-372.32.1.el8_6.x86_64 kernel-core-4.18.0-425.19.2.el8_7.x86_64 ... Complete! # dnf -y remove kernel-workaround-0.1-1.el8.noarch ... Complete!
アップグレード用のツールを削除する!
アップグレード用のツールを削除します。
# rpm -qa | grep -e '\.el[78]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort jimtcl-0.77-6.el8.x86_64 leapp-0.15.0-2.el8.noarch leapp-upgrade-el8toel9-0.17.0-3.el8.noarch libatomic_ops-7.6.2-3.el8.x86_64 libmodman-2.0.1-17.el8.x86_64 python3-leapp-0.15.0-2.el8.noarch # dnf -y remove jimtcl-0.77-6.el8.x86_64 leapp-0.15.0-2.el8.noarch leapp-upgrade-el8toel9-0.17.0-3.el8.noarch libatomic_ops-7.6.2-3.el8.x86_64 libmodman-2.0.1-17.el8.x86_64 python3-leapp-0.15.0-2.el8.noarch ... Complete! # rpm -qa | grep -e '\.el[78]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort
アップグレード用のリポジトを削除する!
アップグレード用のリポジトリを削除します。
# dnf -y remove leapp-deps-el9 leapp-repository-deps-el9 Updating Subscription Management repositories. Dependencies resolved. ================================================================================================================================================================================================================= Package Architecture Version Repository Size ================================================================================================================================================================================================================= Removing: leapp-deps-el9 noarch 5.0.9-100.202208231727Z.29a77886.master.el9 @System 0 leapp-repository-deps-el9 noarch 5.0.9-100.202208231727Z.29a77886.master.el9 @System 0 Transaction Summary ================================================================================================================================================================================================================= Remove 2 Packages ... Complete!
おわりに
今回は、RHEL 8.6をRHEL 9.0にアップグレードしました。他のソフトウェアをインストールしていないシンプルなRHEL環境で実施したこともあり、問題なく実行できました。
関連記事
関連書籍(Amazon)