サイト構築 スクリプトのお勉強

CentOS7をRocky Linux 9に移行する

投稿日:

このVMのOSをCentOS7にした関係上、そろそろupdateする必要があります。
そもそもCentOS7を選択した理由は、仕事で使用するからでした。

で、仕事ではRocky Linux 9なので、これもRocky Linux 9にしました。

Elevateという移行ツール使用

https://almalinux.org/elevate/

という移行ツールを使います。

以降順番に手順を書いていきます。

バックアップ

バックアップについては、ほとんどのデータを元々取ってあります。
なので特に問題なしとしてます。

具体的手順(CentOS7 to Rocky Linux 8)

以下に手順を記述します。まずは、CentOS7からRocky Linux 8にします。

elevateツールをインストール

アップデートに取りこぼしがないことを確認します。

$ sudo yum update -y
$ sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el7.noarch.rpm

ゴミ掃除

yumのupdate時になぜか警告が出てたので掃除しました。

$ sudo yum-complete-transaction --cleanup-only
$ sudo yum history redo last

アップデートに向けた下準備

rockyへの移行用のパッケージをインストールします。

$ sudo yum install -y yum-utils leapp-upgrade leapp-data-rocky

upgrade前処理の実行

ここでupgrade前にできるかどうか確認します。

$ sudo leapp preupgrade

「UPGRADE INHIBITED」として出てきた警告されたことに対応します。

============================================================
                     UPGRADE INHIBITED
============================================================

Upgrade has been inhibited due to the following problems:
    1. Inhibitor: Newest installed kernel not in use
    2. Inhibitor: Missing required answers in the answer file
Consult the pre-upgrade report for details and possible remediation.

と言われたので一度rebootしました。

answerfileを編集します。

$ sudo vi /var/log/leapp/answerfile
$ sudo cat /var/log/leapp/answerfile
[remove_pam_pkcs11_module_check]
# Title:              None
# Reason:             Confirmation
# =================== remove_pam_pkcs11_module_check.confirm ==================
# Label:              Disable pam_pkcs11 module in PAM configuration? If no, the upgrade process will be interrupted.
# Description:        PAM module pam_pkcs11 is no longer available in RHEL-8 since it was replaced by SSSD.
# Reason:             Leaving this module in PAM configuration may lock out the system.
# Type:               bool
# Default:            None
# Available choices: True/False
# Unanswered question. Uncomment the following line with your answer
confirm = yes

RHEL8で消されている要らないkernelモジュールを外します。

$ sudo rmmod pata_acpi

sshでrootでのLoginを許可します。

$ sudo -i
$ echo PermitRootLogin yes | tee -a /etc/ssh/sshd_config

PAMからpkcs11のモジュールチェックを削除することをleappに承認します。

$ sudo leapp answer --section remove_pam_pkcs11_module_check.confirm=True

以下を何回か行います。

$ sudo leapp preupgrade

以下のようになったのでpreupgradeは成功しました。

============================================================
                           REPORT
============================================================

以下で古いkernelをお掃除しました。
ただし、これのせいでel7カーネルから変更できてない可能性があります。
それほど必要ではないのでやらないほうがいいかもしれません。

$ sudo package-cleanup --oldkernel --count=1

upgrade開始

upgradeを開始します。

# mkdir -p /var/lib/leapp/el8userspace
### LEAPP_OVL_SIZEを設定しないと 
### At least XXXMB more space needed on the / filesystem.
### と言われてupgradeに失敗する
# export LEAPP_OVL_SIZE=3000
# yum remove cmake3-3.17.5-1.el7.x86_64
# yum remove libzip5-1.7.3-1.el7.remi.x86_64
# yum remove gd-last-2.3.2-1.el7.remi.x86_64
# sudo leapp upgrade

「A reboot is required to continue. Please reboot your system.」というのが出れば成功です。

A reboot is required to continue. Please reboot your system.


Debug output written to /var/log/leapp/leapp-upgrade.log

============================================================
                           REPORT
============================================================

ネットワーク設定

以下に変更してネットワーク設定はそのままにしました。

$ sudo vi /etc/NetworkManager/NetworkManager.conf
[main]
plugins=keyfile,ifcfg-rh

再起動

$ reboot

upgradeしていることを確認しました。

$ cat /etc/rocky-release
Rocky Linux release 8.9 (Green Obsidian)

カーネルがアップデートできてない

上記のままやったら、カーネルがアップデートできてませんでした。なんだかな。。

# uname -a
Linux XXXXX 3.10.0-1160.25.1.el7.x86_64

/etc/yum.repos.d/Rocky-Base.repoを強引に書き換えてel8のカーネルをインストールし、grub.cfgを書き換えました。

$ sudo dnf reinstall kernel kernel-core kernel-modules
$ sudo grub2-mkconfig -o /boot/grub2/grub.cfg

Upgrade Rocky Linux 8 to Rocky Linux 9

CentOS7固有のRPMは削除します。

$ rpm -qa | grep -E 'el7[.-]' | xargs rpm -e

この時点では結構失敗するがとりあえず無視しました。

具体的手順(Rocky Linux 8 to Rocky Linux 9)

Rocky Linux 8 to Rocky Linux 9は以下のようにします。

Install Migration Packages for Rocky Linux 8

$ sudo yum install -y http://repo.almalinux.org/elevate/elevate-release-latest-el8.noarch.rpm
$ sudo yum config-manager --save --setopt exclude=''

アップグレード前設定

$ sudo dnf upgrade --refresh --allowerasing
$ sudo dnf install -y leapp-upgrade leapp-data-rocky
$ sudo leapp preupgrade

firewalld 設定変更

このシステムではfirewalldをインストールしてないので意味がありませんでした。

$ sudo sed -i "s/^AllowZoneDrifting=.*/AllowZoneDrifting=no/" /etc/firewalld/firewalld.conf

設定前確認

$ sudo leapp answer --section check_vdo.no_vdo_devices=True

Rocky Linux 9 アップグレード

$ export LEAPP_OVL_SIZE=3500
$ sudo leapp upgrade

UPGRADE INHIBITED

今回は以下のエラーになりました。

============================================================
                     UPGRADE INHIBITED
============================================================

Upgrade has been inhibited due to the following problems:
    1. Inhibitor: Network configuration for unsupported device types detected
    2. Inhibitor: Detected RPMs with RSA/SHA1 signature
Consult the pre-upgrade report for details and possible remediation.

「Inhibitor: Network configuration for unsupported device types detected」対応

以下のようにネットワーク設定を削除しました。

$ cp /etc/sysconfig/network-scripts/ifcfg-eth0 /etc/sysconfig/network-scripts/ifcfg-eth0-back
$ rm /etc/sysconfig/network-scripts/ifcfg-eth0
### eth0.nmconnectionの作成
$ vi /etc/NetworkManager/system-connections/eth0.nmconnection
[connection]
id=eth0
uuid=5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03
type=802-3-ethernet
autoconnect-priority=0
interface-name=eth0
timestamp=1704634128

「Inhibitor: Detected RPMs with RSA/SHA1 signature」対応

「Inhibitor: Detected RPMs with RSA/SHA1 signature」に対しては、不要なRPMを予め削除しました。

削除対象は/var/log/leapp/leapp-report.txtに書いてあります。それを見ながらひたすら削除しました。

再起動

$ sudo reboot

CentOS8固有のRPMは削除する

以下で削除しましたが、実際には存在しませんでした。

$ sudo -i
$ rpm -qa | grep -E 'el8[.-]' | xargs rpm -e

ネットワーク設定(Rocky Linux 9)

Rocky Linux 9からifcfgからNetworkManagerのkeyfile形式に変更されてます。

なので以下のような感じで、まずはeth0に名付けてデータを/etc/NetworkManager/system-connections/eth0.nmconnectionに保存するようにします。

$ nmcli connection show
NAME        UUID                                  TYPE      DEVICE
eth0        12ecfae1-cb76-40ec-8222-50dfec27d002  ethernet  eth0
lo          c4331927-9245-493b-9a4e-ee5b8ce8f78d  loopback  lo
有線接続 1  9f8d4019-0a95-391d-a5d7-5cf27784d734  ethernet  --
$ nmcli connection modify 12ecfae1-cb76-40ec-8222-50dfec27d002 connection.id eth0

MySQLがインストールされてなかった

el9の設定まで終えてみると、MySQLがインストールされてませんでした。。
結構焦りましたが、以下でMySQLをとりあえずインストールしたら解決しました。

$ sudo dnf install mysql --skip-broken --nobest

設定もそのままで動作しました。

おまけ(wordpress)

基本的にそのままで動作しましたがimagickだけインストールに苦労しました。

以下のように前提ライブラリが必要なようです。

### ImageMagickで使用する、前提ライブラリのインストール
$ wget https://cbs.centos.org/kojifiles/packages/liblqr-1/0.4.2/17.el9s/x86_64/liblqr-1-devel-0.4.2-17.el9s.x86_64.rpm
$ sudo dnf install liblqr-1-devel-0.4.2-17.el9s.x86_64.rpm
$ wget https://rpmfind.net/linux/centos-stream/9-stream/AppStream/x86_64/os/Packages/LibRaw-0.21.1-1.el9.x86_64.rpm
$ sudo dnf install LibRaw-0.21.1-1.el9.x86_64.rpm
### ImageMagick インストール
$ sudo dnf install ImageMagick ImageMagick-devel ImageMagick-libs
$ sudo pecl install imagick

おわりに

最後は力技で解決しました。いつもながら冷汗。。

調査はつらつらとしていましたが、作業開始から断続的に1日かかってます。

参考

https://grnbbs.mydns.jp/blog/grn_blog/2021/12/centos-7rocky-linux-8.html
https://phoenixnap.com/kb/migrate-centos-to-rocky-linux
https://www.redhat.com/ja/blog/rhel-9-networking-say-goodbye-ifcfg-files-and-hello-keyfiles
https://access.redhat.com/discussions/6963950
https://isleofhoso.com/linux-nmcli-ipsetting/

-サイト構築, スクリプトのお勉強

執筆者:

関連記事

gradleのcommandLineでリダイレクト

gradleというビルドツールがあります。なぜかRPMを作成するのに使ってます。Ansibleも使ってるんですがね。。 それはともかく、ここの通りなのですが、例えばls -lRの出力を、プロジェクトデ …

SimpleHTTPSAuthUploadServer というPython用モジュールを書いた

書いた動機 リモート開発になっているので、遠くのホストにあるファイルをお手軽に見たい、取ってきたいor編集したい、というニーズが、私の中であります。ftpなんか使わず、全部ブラウザでやりたいわけです。 …

PythonでPKCS#12を使用して暗号/復号する

1. はじめに 仕事でVPN関係のシステム開発をすることになりました。まずは暗号機能の基本を思い出すため、Pythonで、PKCS#12の公開鍵で暗号、秘密鍵で復号するプログラムを作ってみようと思いま …

WSL2にOpenCV + Pythonをインストールする

お手軽にやろうと思ってやってみました。作業手順自体を見ると、お手軽ではないかもしれません。 環境 インストールする/した環境は以下の通りです。 WSL2Ubuntu 20.04.2 LTSPython …

PHP7.2 からPHP 7.4にアップデート

なんとなくやってみようかと思いました。 $ yum install –enablerepo=remi-php74 php $ systemctl restart nginx $ systemctl …

google オプトアウト Click here to opt-out.