RHEL 7をRHEL 8にインプレースアップグレードの方式でアップグレードします。
記事の目次
- 1 インプレースアップグレードの制約を確認する!
- 2 アップグレードに必要なリポジトリを有効化する!
- 3 マイナーバージョンの固定の設定をクリアする!
- 4 パッケージのバージョンロックをクリアする!
- 5 RHEL 7を最新化する!
- 6 RHEL 7のバージョンを確認する!
- 7 インプレースアップグレード用のツールをインストールする!
- 8 インプレースアップグレードの分析を行う!
- 9 対処が必要な項目の詳細を確認する!
- 10 アップグレードを行うための設定変更を行う!
- 11 再度インプレースアップグレードの分析を行う!
- 12 インプレースアップグレードを行う!
- 13 RHELを再起動する!
- 14 RHELのバージョンを確認する!
- 15 RHELのマイナーバージョンが固定されていることを確認する!
- 16 アップデートの除外リストをクリアする!
- 17 旧カーネルの削除を行う!
- 18 アップグレード用のツールを削除する!
- 19 アップグレード用のリポジトを削除する!
- 20 登録されているリポジトリを確認する!
- 21 RHELが最新化されていることを確認する!
- 22 おわりに
- 23 関連記事
- 24 関連書籍(Amazon)
インプレースアップグレードの制約を確認する!
インプレースアップグレードは、新規にサーバを構築しなくて済むので楽そうに思いますが、制約も多々あるので、RHELのページで事前に詳細を確認します。
代表的な制約は、以下になります。
- ファームウェアをBIOSからUEFIに変更できない。
- RHELのリポジトリ以外からインストールしたソフトウェアは事前にアンインストールしておいたほうがよい。追加したリポジトリも無効化する。
アップグレードに必要なリポジトリを有効化する!
rhel-7-server-rpmsと、rhel-7-server-extras-rpmsのリポジトリを有効化します。※通常は、rhel-7-server-rpmsのリポジトリは有効化済みと思います。
# subscription-manager repos --enable rhel-7-server-rpms # subscription-manager repos --enable rhel-7-server-extras-rpms # yum repolist Loaded plugins: product-id, search-disabled-repos, subscription-manager rhel-7-server-extras-rpms | 3.4 kB 00:00:00 rhel-7-server-rpms | 3.5 kB 00:00:00 (1/3): rhel-7-server-extras-rpms/x86_64/group | 124 B 00:00:00 (2/3): rhel-7-server-extras-rpms/x86_64/updateinfo | 255 kB 00:00:00 (3/3): rhel-7-server-extras-rpms/x86_64/primary_db | 706 kB 00:00:00 repo id repo name status rhel-7-server-extras-rpms/x86_64 Red Hat Enterprise Linux 7 Server - Extras (RPMs) 1,451 rhel-7-server-rpms/7Server/x86_64 Red Hat Enterprise Linux 7 Server (RPMs) 33,649 repolist: 35,100
マイナーバージョンの固定の設定をクリアする!
マイナーバージョンの固定を行っているか確認します。
subscription-manager release Release not set
「Release no set」と表示されず、バージョンが表示され、マイナーバージョンの固定の設定を行っている場合は、クリアします。
# subscription-manager release --unset Release preference has been unset
パッケージのバージョンロックをクリアする!
パッケージのバージョンロックを行っている場合は、バージョンロックをクリアします。yumのバージョンロックのプラグインが必要で、使用していないケースも多いと思います。
# yum versionlock clear
yumのバージョンロックのプラグインを使用していない場合は、以下のようなメッセージが出力されます。
# yum versionlock clear Loaded plugins: langpacks, product-id, search-disabled-repos, subscription-manager No such command: versionlock. Please use /bin/yum --help
RHEL 7を最新化する!
RHEL 7を最新のRHEL 7.9にアップデートします。カーネルなどアップデートしている場合があるので、アップデート後、OSを再起動します。
# yum -y update # reboot
RHEL 7のバージョンを確認する!
RHELのバージョンとカーネルのバージョンを確認します。
# cat /etc/redhat-release Red Hat Enterprise Linux Server release 7.9 (Maipo) # uname -r 3.10.0-1160.90.1.el7.x86_64 # subscription-manager list --installed +-------------------------------------------+ Installed Product Status +-------------------------------------------+ Product Name: Red Hat Enterprise Linux Server Product ID: 69 Version: 7.9 Arch: x86_64 Status: Not Subscribed Status Details: Starts: Ends:
インプレースアップグレード用のツールをインストールする!
Leapp ユーティリティーをインストールします。
# yum -y install leapp-upgrade
インプレースアップグレードの分析を行う!
インプレースアップグレードが可能であるかツールで分析します。インプレースアップグレードでサポートされているバージョンを「--target 8.6」のように指定することもできます。
# leapp preupgrade --target 8.6 ... ============================================================ UPGRADE INHIBITED ============================================================ Upgrade has been inhibited due to the following problems: 1. Inhibitor: Leapp detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed. 2. Inhibitor: Missing required answers in the answer file 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: Leapp detected loaded kernel drivers which have been removed in RHEL 8. Upgrade cannot proceed. Summary: Support for the following RHEL 7 device drivers has been removed in RHEL 8: - pata_acpi Key: f08a07da902958defa4f5c2699fae9ec2eb67c5b ---------------------------------------- Risk Factor: high (inhibitor) Title: Missing required answers in the answer file Summary: One or more sections in answerfile are missing user choices: remove_pam_pkcs11_module_check.confirm For more information consult https://leapp.readthedocs.io/en/latest/dialogs.html Remediation: [hint] Please register user choices with leapp answer cli command or by manually editing the answerfile. [command] leapp answer --section remove_pam_pkcs11_module_check.confirm=True Key: d35f6c6b1b1fa6924ef442e3670d90fa92f0d54b ---------------------------------------- ....
アップグレードを行うための設定変更を行う!
アップグレードを行うための設定変更を行います。
# rmmod pata_acpi # leapp answer --section remove_pam_pkcs11_module_check.confirm=True
今回の環境では不要でしたが、rootでのログインを許可していない場合は、以下の対処も必要になります。
# echo PermitRootLogin yes | tee -a /etc/ssh/sshd_config
再度インプレースアップグレードの分析を行う!
再度、インプレースアップグレードが可能であるかツールで分析します。以下のような表示になれば、OKです。
# leapp preupgrade --target 8.6 ... Check completed. ====> * local_repos_inhibit Inhibits the upgrade if local repositories were found. ====> * 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 8.6 ... Install 212 Packages Upgrade 285 Packages Remove 67 Packages Downgrade 7 Packages Total size: 640 M DNF will only download packages, install gpg keys, and check the transaction. Downloading Packages: Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. 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 8.6 (Ootpa) # uname -r 4.18.0-372.32.1.el8_6.x86_64 # 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 Status: Not Subscribed Status Details: Starts: Ends:
RHELのマイナーバージョンが固定されていることを確認する!
RHELのマイナーバージョンが固定されていることを確認します。
# subscription-manager release Release: 8.6
アップデートの除外リストをクリアする!
アップデートの除外リストをクリアします。
# cat /etc/dnf/dnf.conf [main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True best=True skip_if_unavailable=False exclude=python2-leapp,snactor,leapp-upgrade-el7toel8,leapp # 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=
旧カーネルの削除を行う!
旧カーネルを削除します。
# cd /lib/modules && ls -d *.el7* 3.10.0-1160.90.1.el7.x86_64 3.10.0-1160.el7.x86_64 # [ -x /usr/sbin/weak-modules ] && /usr/sbin/weak-modules --remove-kernel 3.10.0-1160.90.1.el7.x86_64 # [ -x /usr/sbin/weak-modules ] && /usr/sbin/weak-modules --remove-kernel 3.10.0-1160.el7.x86_64 # /bin/kernel-install remove 3.10.0-1160.90.1.el7.x86_64 /lib/modules/3.10.0-1160.90.1.el7.x86_64/vmlinuz # /bin/kernel-install remove 3.10.0-1160.el7.x86_64 /lib/modules/3.10.0-1160.el7.x86_64/vmlinuz # rpm -qa | grep -e '\.el[67]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort kernel-3.10.0-1160.90.1.el7.x86_64 kernel-3.10.0-1160.el7.x86_64 leapp-0.15.0-2.el7_9.noarch leapp-upgrade-el7toel8-0.17.0-10.el7_9.noarch python2-leapp-0.15.0-2.el7_9.noarch ustr-1.0.4-16.el7.x86_64 # rpm -evh kernel-3.10.0-1160.90.1.el7.x86_64 Preparing... ################################# [100%] Cleaning up / removing... 1:kernel-3.10.0-1160.90.1.el7 ################################# [100%] # rpm -evh kernel-3.10.0-1160.el7.x86_64 Preparing... ################################# [100%] Cleaning up / removing... 1:kernel-3.10.0-1160.el7 ################################# [100%] warning: file /boot/vmlinuz-3.10.0-1160.el7.x86_64: remove failed: No such file or directory warning: file /boot/symvers-3.10.0-1160.el7.x86_64.gz: remove failed: No such file or directory warning: file /boot/config-3.10.0-1160.el7.x86_64: remove failed: No such file or directory warning: file /boot/System.map-3.10.0-1160.el7.x86_64: remove failed: No such file or directory warning: file /boot/.vmlinuz-3.10.0-1160.el7.x86_64.hmac: remove failed: No such file or directory # rm -rf /lib/modules/*el7*
アップグレード用のツールを削除する!
アップグレード用のツールを削除します。
# rpm -evh leapp-upgrade-el7toel8-0.17.0-10.el7_9.noarch leapp-0.15.0-2.el7_9.noarch python2-leapp-0.15.0-2.el7_9.noarch ustr-1.0.4-16.el7.x86_64 Preparing... ################################# [100%] Cleaning up / removing... 1:leapp-upgrade-el7toel8-0.17.0-10.################################# [ 25%] 2:leapp-0.15.0-2.el7_9 ################################# [ 50%] 3:python2-leapp-0.15.0-2.el7_9 ################################# [ 75%] 4:ustr-1.0.4-16.el7 ################################# [100%] # rpm -qa | grep -e '\.el[67]' | grep -vE '^(gpg-pubkey|libmodulemd|katello-ca-consumer)' | sort
アップグレード用のリポジトを削除する!
アップグレード用のリポジトリを削除します。
# yum -y remove leapp-deps-el8 leapp-repository-deps-el8 Updating Subscription Management repositories. Dependencies resolved. ======================================================================================================================== Package Architecture Version Repository Size ======================================================================================================================== Removing: leapp-deps-el8 noarch 5.0.8-100.202208231727Z.29a77886.master.el8 @System 0 leapp-repository-deps-el8 noarch 5.0.8-100.202208231727Z.29a77886.master.el8 @System 0 Transaction Summary ======================================================================================================================== Remove 2 Packages Freed space: 0 Running transaction check Transaction check succeeded. Running transaction test Transaction test succeeded. Running transaction Preparing : 1/1 Erasing : leapp-repository-deps-el8-5.0.8-100.202208231727Z.29a77886.master.el8.noarch 1/2 Erasing : leapp-deps-el8-5.0.8-100.202208231727Z.29a77886.master.el8.noarch 2/2 Verifying : leapp-deps-el8-5.0.8-100.202208231727Z.29a77886.master.el8.noarch 1/2 Verifying : leapp-repository-deps-el8-5.0.8-100.202208231727Z.29a77886.master.el8.noarch 2/2 Installed products updated. Removed: leapp-deps-el8-5.0.8-100.202208231727Z.29a77886.master.el8.noarch leapp-repository-deps-el8-5.0.8-100.202208231727Z.29a77886.master.el8.noarch Complete!
登録されているリポジトリを確認する!
登録されているリポジトリを確認します。不要なリポジトリがある場合は、無効化します。
# yum repolist Updating Subscription Management repositories. repo id repo name rhel-8-for-x86_64-appstream-rpms Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) rhel-8-for-x86_64-baseos-rpms Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
RHELが最新化されていることを確認する!
RHELが最新化されていることを確認します。
# yum check-update Updating Subscription Management repositories. Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs) 5.0 MB/s | 53 MB 00:10 Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs) 5.0 MB/s | 47 MB 00:09
おわりに
今回は、BIOSのファームウェアでインストールしたRHEL 7.9をRHEL 8にアップグレードしました。他のソフトウェアをインストールしていないシンプルなRHEL環境で実施したこともあり、問題なく実行できました。
関連記事
関連書籍(Amazon)