2021年06月に購入したRaspberry Pi 4B。 当時インストールしたRaspberry Pi OSのバージョンはBusterでした。

2025/05/24現在、Raspberry Pi OSのバージョンは2世代進みBookwormが最新です。 自宅で私だけが使うので古いOSのままでも良かったのですが、Node-REDを外部公開していることもあり、少しでもセキュアであるに越したことはないのでアップグレードに踏み切りました。

SSDクローン

OSメジャーアップデート(しかも2世代)に付き纏う諸々の問題を懸念し、まずは現在のSSDの完全なクローンを作成しました。

$ sudo dd if=/dev/sda of=/dev/sdc bs=4M status=progress

# /dev/sda : 現在のBuster OSが動いているSSDデバイス
# /dev/sdc : 新調した空のSSDデバイス

# 結果
28618+1 レコード入力
28618+1 レコード出力
120034123776 bytes (120 GB, 112 GiB) copied, 3749.09 s, 32.0 MB/s
                           ↑
                       約1時間掛かった!

このあと/dev/sdaのBusterをアップグレードしていきますが、万が一破損してしまってもすぐにこのクローンSSDに差し替えることで復旧できます。

Buster最新化

パッケージリストの更新がずいぶん前から停止していることは分かっているのですが、念の為最新化しておきます。

$ sudo apt update

案の定、更新はなにもありませんでした。

Buster → Bullseysアップグレード

最新バージョンはBookwormであると書きましたが、その前世代にBullseyeというバージョンがあります。

このページのタイトルとは矛盾しますが、2世代ものアップグレードを直接行うとパッケージやライブラリの依存関係が崩壊する恐れがあるので、1世代ずつ段階的にアップグレードします。

リポジトリ書き換え

まずは参照しているリポジトリを書き換えます。

/etc/apt/sources.list

# 変更前
deb <http://deb.debian.org/debian> **buster** main contrib non-free
deb **<http://deb.debian.org/debian-security> buster/updates -security** main contrib non-free
deb <http://deb.debian.org/debian> **buster**-updates main contrib non-free

# 変更後
deb <http://deb.debian.org/debian> **bullseye** main contrib non-free
deb **<http://security.debian.org/debian-security> bullseye-security** main contrib non-free
deb <http://deb.debian.org/debian> **bullseye**-updates main contrib non-free

/etc/apt/sources.list,d/raspi.list