CentOS 8 を CentOS Stream 8 に切り替えてみた

CentOS 8 が2021年末に終了し、それ以降も使うなら CentOS Stream に切り替える必要があるとのことなので、適当なサーバを CentOS 8 から CentOS Stream に切り替えてみました。

まずは元の CentOS 8 を最新に更新しておきます。セットアップ後にしばらく放置していたのと、丁度 8.2 から 8.3 へのアップデートも入っていたので、結構な量の更新がありました。

cat /etc/centos-release
#=> CentOS Linux release 8.2.2004 (Core)

dnf check-update
dnf update -y
#=> :
#=> Install   15 Packages
#=> Upgrade  223 Packages
#=> :

cat /etc/centos-release
#=> CentOS Linux release 8.3.2011

reboot

次に、このへんに書かれている手順の通りに作業します。

dnf install centos-release-stream
dnf swap centos-{linux,stream}-repos
dnf distro-sync
#=> :
#=> Install    12 Packages
#=> Upgrade    88 Packages
#=> Downgrade   3 Packages
#=> :

更新されるパッケージの数は 8.2 から 8.3 の数よりも少ないようですが・・Downgrade が 3 つあるのが気になる・・以下のパッケージでした。

kernel-tools       4.18.0-240.el8
kernel-tools-libs  4.18.0-240.el8
python3-perf       4.18.0-240.el8

dnf distro-sync する前は次の通りだったので確かにダウングレードのようですけど、

kernel-tools       4.18.0-240.1.1.el8_3
kernel-tools-libs  4.18.0-240.1.1.el8_3
python3-perf       4.18.0-240.1.1.el8_3

よく見ると Install で以下のカーネルが入っていました。

kernel          4.18.0-240.el8
kernel-core     4.18.0-240.el8
kernel-modules  4.18.0-240.el8

これも dnf distro-sync の前は 4.18.0.240.1.1.el8_3 だったので実質ダウングレード?

CentOS 8.3 のと CentOS Stream 8 のとでカーネルのバージョン自体は同じですけど・・うーん、どういうことなの。

何が違うのかを調べてみます。

wget https://vault.centos.org/8.3.2011/BaseOS/Source/SPackages/kernel-4.18.0-240.el8.src.rpm
wget https://vault.centos.org/8.3.2011/BaseOS/Source/SPackages/kernel-4.18.0-240.1.1.el8_3.src.rpm

rpm -ivh kernel-4.18.0-240.el8.src.rpm
mv rpmbuild kernel-4.18.0-240.el8

rpm -ivh kernel-4.18.0-240.1.1.el8_3.src.rpm
mv rpmbuild kernel-4.18.0-240.1.1.el8_3

diff -ru kernel-4.18.0-240.el8 kernel-4.18.0-240.1.1.el8_3

下記のパッチの有無の差があるようです。

  • debrand-rh-i686-cpu.patch
  • debrand-rh_taint.patch
  • debrand-single-cpu.patch

パッチの内容を見てみると・・RHEL や Red Hat という文言を CentOS Linux に書き換えてるだけのパッチでした。例えば debrand-rh-i686-cpu.patch は次のような内容でした。

--- a/arch/x86/boot/main.c      2019-03-13 04:04:53.000000000 -0700
+++ b/arch/x86/boot/main.c      2019-05-25 14:31:21.043272496 -0700
@@ -147,7 +147,7 @@ void main(void)

        /* Make sure we have all the proper CPU support */
        if (validate_cpu()) {
-               puts("This processor is not supported in this version of RHEL.\n");
+               puts("This processor is not supported in this version of CentOS Linux.\n");
                die();
        }

CentOS では RHEL 用に作られた kernel のソースから Red Hat の痕跡を消す必要があるのに対して、CentOS Stream ではその必要はない、ということでしょうかね。