Fedora 40 をインストールしました。大きな変更はないので書くことはあまりありません。今回から、インストール方式を変更しました。kickstart を使用するのは変わりませんが、クリーンインストールからアップグレードインストールに変更しました。

Fedora 39 からの非互換あれこれ

いくつか非互換がありました。いずれも小さな問題です。

firewalld に submission サービスができた

デフォルトで submission587/TCP)が入っています。これまでは smtp-submission でしたが、こちらは非推奨となっています。

/etc/systemd/*.conf がなくなった

デフォルトではインストールされないようです。なきゃないで別にいいです。

mailx パッケージは廃止され s-nail に移行

s-nailmailx の上位互換で、簡単に言うと SMTP が話せる mail コマンドです。Fedora 40 以降は、dnfmailx パッケージをインストールしようとすると、自動的に s-nail パッケージがインストールされます。

kickstart でアップグレードインストールする

Fedora 40 とは直接関係ありませんが、今回からアップグレードインストールにしたので、触れたいと思います。今まで /home 以下をバックアップ/リストアするのに 2時間程度要していたため、/home 以下をそのまま引き継ぐことにしました。これによって、作業時間が大幅に削減されました。

やり方は kickstart を書ける人であればそれほど難しくありません。 kickstart の設定ファイルで、既存のパーティションをそのまま使う設定にしておけば、アップグレードインストールになります。

クリーンインストール時は、以下のような感じで作っておきます。

clearpart --all --initlabel --drives vda
part biosboot  --fstype="biosboot" --ondisk=vda1 --size=1
part /boot/efi --fstype="efi"      --ondisk=vda2 --size=600
part /         --fstype="xfs"      --ondisk=vda3 --size=16384
part /home     --fstype="xfs"      --ondisk=vda4 --size=65536 --grow

biosbootefi パーティションを両方作っているのは、将来的に EFI ブートになるのではないか、と考えているためです。さくら VPS では、biosboot だけあれば OK です。

アップグレードインストール時は、以下のようになります。

part biosboot  --fstype="biosboot" --onpart=vda1
part /boot/efi --fstype="efi"      --onpart=vda2
part /         --fstype="xfs"      --onpart=vda3
part /home     --fstype="xfs"      --onpart=vda4 --noformat

既存のパーティションを再利用するので、サイズの指定は行いません。当たり前ですが、各パーティションのデバイスは一致させる必要があります。/home 以下はデータを引き継ぎたいので、--noformat を指定しておきます。

実際に動かしてみる

さくら VPS で動かしてみると、初期化されますという警告が散々出ますが、正しく kickstart が設定されていれば /home 以下は初期化されません。もしかして、必ず初期化してからインストーラが動くのか? と一瞬不安になりましたが、大丈夫でした。

注意点

/home をそのまま残すので、アップグレード後も /home 以下で使用するユーザとグループが必要です。どのタイミングまでに作ればよいか(初回起動時まで?)、uid と gid が一致している必要があるか、あるいはユーザ名・グループ名が一致すればよいかなど、細かいところまでは、よくわかっていません。

私は気付かずに実行してしまい、一部のディレクトリで owner がおかしくなりました(管理者ユーザに割り振られるっぽい?)。kickstart 内で作成している(管理者と %post 内で uidgid を指定して作っている)ユーザとグループが所有するディレクトリでは問題ありませんでした。chown -R で修正できるレベルだったので大事には至っていませんが、この辺りを十分考慮の上でお試しください。