普段づかいのRaspberry Pi OSのデスクトップ環境は、このブログのサイドバーに鎮座しているバッファローのUSB SSDを使用しています。
容量控えめの250GBを使っていますが、それでもラズピッピ用途としてはでかいので、昔書いたブログの要領で、後ろの100GB程はExFAT領域として、データ置き場にしています。
akkiesoft.hatenablog.jp
今日は、このSSDに入っているRaspberry Pi OS Bookwormを、後ろのデータ領域を維持したままTrixieにクリーンインストールで入れ替える話です。
とりあえずバックアップ
できるであろうことはわかりきっていますが、それでもミスってデータをふっ飛ばしてしまってはいけないので、データ置き場の部分を適当にバックアップしました。
また、OSはディストリビューションのアップグレードではなく、ディスクイメージの焼き直しになるため、ホームディレクトリも丸ごとバックアップしました。
ではやっていきます。作業は別のRaspberry Pi環境を使用しました。fdiskコマンドでパーティションを細かく操作したり、ddコマンドを使用してOSイメージを書き込んだりするので、Linux環境で作業してください。
まずは現在のUSB SSDのパーティションテーブルを確認してメモします。sda1と2がこれから消えるBookworm環境、sda3がデータ置き場です。
$ sudo fdisk -l /dev/sda
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: SSD-PSTU3A
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0xe5085b0b
Device Boot Start End Sectors Size Id Type
/dev/sda1 8192 1056767 1048576 512M c W95 FAT32 (LBA)
/dev/sda2 1056768 244727807 243671040 116.2G 83 Linux
/dev/sda3 244727808 488396799 243668992 116.2G 7 HPFS/NTFS/exFAT
OSの書き込み
作業環境上にRaspberry Pi OS Trixieのデスクトップ版ディスクイメージ(64bit版)をダウンロードします。
www.raspberrypi.com
そして、ddコマンドで書き込みます。xzファイルで圧縮されたままのディスクイメージでも、xzcatコマンドを使ってパイプでつなぐことで書き込みができました。それにしても遅いなあと思っていたら、bsオプションをつけ忘れていました。bs=10Mを指定していたらもう少しくらい早かったかもしれません。
$ xzcat 2025-10-01-raspios-trixie-arm64.img.xz | sudo dd of=/dev/sda status=progress
6399476224 bytes (6.4 GB, 6.0 GiB) copied, 243 s, 26.3 MB/s
12533760+0 records in
12533760+0 records out
6417285120 bytes (6.4 GB, 6.0 GiB) copied, 243.652 s, 26.3 MB/s
それではここからはパーティションいじりです。fdiskコマンドでパーティション一覧を確認すると、sda3が吹っ飛んで、先ほど書き込んだディスクイメージの通りのパーティションテーブルになっています。
$ sudo fdisk /dev/sda
Welcome to fdisk (util-linux 2.41).
Changes will remain in memory only, until you decide to write them.
Be careful before using the write command.
This disk is currently in use - repartitioning is probably a bad idea.
It's recommended to umount all file systems, and swapoff all swap
partitions on this disk.
Command (m for help): p
Disk /dev/sda: 232.89 GiB, 250059350016 bytes, 488397168 sectors
Disk model: SSD-PSTU3A
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 4096 bytes / 4096 bytes
Disklabel type: dos
Disk identifier: 0x96653d61
Device Boot Start End Sectors Size Id Type
/dev/sda1 16384 1064959 1048576 512M c W95 FAT32 (LBA)
/dev/sda2 1064960 12533759 11468800 5.5G 83 Linux
通常のRaspberry Pi OSは、初回起動時にパーティションを拡張しますが、今回はそんなことをされるとデータ置き場が破壊されるため、最初にメモしたパーティションテーブルに復元していきます。というわけで、まずはsda2を消します。
Command (m for help): d
Partition number (1,2, default 2): 2
Partition 2 has been deleted.
続けて作成。元のsda2は開始セクターが1056768、終了セクターが244727807でした。Trixieでは開始セクターが1064960と少し後ろズレているので、開始はこちらに合わせて、終了は元の終了セクターを指定します。ext4ファイルシステムのシグネチャがあるけど処す?と聞かれるので処さない(N)を選択します。
Command (m for help): n
Partition type
p primary (1 primary, 0 extended, 3 free)
e extended (container for logical partitions)
Select (default p): p
Partition number (2-4, default 2):
First sector (2048-488397167, default 2048): 1064960←Trixieの開始セクターを指定
Last sector, +/-sectors or +/-size{K,M,G,T,P} (1064960-488397167, default 488397167): 244727807←Bookwormでの終了セクターを指定
Created a new partition 2 of type 'Linux' and of size 116.2 GiB.
Partition #2 contains a ext4 signature.
Do you want to remove the signature? [Y]es/[N]o: N←シグネチャは消さないここで現在のパーティションテーブルを表示すると、以下のようになります。
Device Boot Start End Sectors Size Id Type
/dev/sda1 16384 1064959 1048576 512M c W95 FAT32 (LBA)
/dev/sda2 1064960 244727807 243662848 116.2G 83 Linux
データ置き場のパーティションを復元します。メモした通り、開始セクターは244727808、終了セクターは488396799と、完全に元の数値を指定します。ここでもexfatのシグネチャについて聞かれるので、Nを押して維持します。
Command (m for help): n
Partition type
p primary (2 primary, 0 extended, 2 free)
e extended (container for logical partitions)
Select (default p):
Using default response p.
Partition number (3,4, default 3):
First sector (2048-488397167, default 2048): 244727808←元の開始セクターを指定
Last sector, +/-sectors or +/-size{K,M,G,T,P} (244727808-488397167, default 488397167): 488396799←元の終了セクターを指定
Created a new partition 3 of type 'Linux' and of size 116.2 GiB.
Partition #3 contains a exfat signature.
Do you want to remove the signature? [Y]es/[N]o: N←シグネチャは消さないパーティションテーブルを確認します。作成したsda3の種類がLinuxになっているで、もとの「HPFS/NTFS/exFAT」に変更しましょう。
Device Boot Start End Sectors Size Id Type
/dev/sda1 16384 1064959 1048576 512M c W95 FAT32 (LBA)
/dev/sda2 1064960 244727807 243662848 116.2G 83 Linux
/dev/sda3 244727808 488396799 243668992 116.2G 83 Linux
変更はtコマンド、パーティション番号は3を指定して、Hex codeには07を指定します。Lを押すとリスト化゛出ますがここでは割愛します。
Command (m for help): t
Partition number (1-3, default 3): 3
Hex code or alias (type L to list all): 07
Changed type of partition 'Linux' to 'HPFS/NTFS/exFAT'.
最後の確認。問題ないことを確認したら、wコマンドで書き込みをして終了します。
Device Boot Start End Sectors Size Id Type
/dev/sda1 16384 1064959 1048576 512M c W95 FAT32 (LBA)
/dev/sda2 1064960 244727807 243662848 116.2G 83 Linux
/dev/sda3 244727808 488396799 243668992 116.2G 7 HPFS/NTFS/exFAT
||<<
パーティションを拡張したsda2のファイルシステムもパーティションいっぱい使うように、resize2fsコマンドで拡張します。もしe2fsckを先に実行せよと言われた場合は、指示に従ってe2fsckをsudo付きで実行します。
>|bash|
$ sudo resize2fs /dev/sda2
resize2fs 1.47.2 (1-Jan-2025)
Please run 'e2fsck -f /dev/sda2' first.
$ sudo mount /dev/sda2 /mnt
akkie@usbpi:~$ df -h
/dev/sda2 117G 4.7G 107G 5% /mnt
$ sudo umount /mnt
SSDのデータ置き場については、USB SSDを抜き取って再度差し込めば、認識するでしょう。バッチリですね。
先述のとおり、Raspberry Pi OSは初回起動時にパーティションとファイルシステムのリサイズをしようとするので、それをあらかじめ無効化します。書き込んだOSのルートパーティションを作業環境上にマウントして、chrootを実行して作業していきます。/mntにマウントしてchrootをする前に、/procと/sysも/mnt以下にそれぞれマウントする必要がある点に注意します。
$ sudo mount /dev/sda2 /mnt
$ sudo mount -t proc none /mnt/proc
$ sudo mount -o bind /sys /mnt/sys
$ sudo chroot /mnt
プロンプトがroot@<作業環境のホスト>名になりますが、/home以下が作業環境とは異なる構成になっているはずなので、そうなっていることを確認しておくと良いでしょう。自分の環境と同じ場合は、マウントしているパーシティションを間違えている可能性があります。
リサイズを無効化するにはrpi-resize.serviceをsystemctlでdisableするだけです。簡単ですね。
root@trixie:/# systemctl disable rpi-resize.service
Removed '/etc/systemd/system/sysinit.target.wants/rpi-resize.service'.
終わったらexitで抜けて、/mnt/proc、/mnt/sys、/mntの順にアンマウントします。
$ sudo umount /mnt/proc
$ sudo umount /mnt/sys
$ sudo umount /mnt/
firstrun.shの移植
OSのディスクイメージをddコマンドで書き込みましたが、最近はRaspberry Pi Imagerでのカスタム書き込みに慣れてしまっていて、ここでもカスタムシていてほしいと思ったので、適当な空いているSDカードにカスタム設定入りのOSを書き込んで、USB SSDに移植しました。
カスタム設定をすると、/boot/firstrun.shが生成されるので、まずはこれをUSB SSDの/bootにコピーします。続けて、/boot/cmdline.txtの中身も移植します。パーティションIDだけはUSB SSDの内容を維持しつつ、SDカードの内容を適用します。
console=serial0,115200 console=tty1 root=PARTUUID=96653d61-02 rootfstype=ext4 fsck.repair=yes rootwait resize quiet splash plymouth.ignore-serial-consoles cfg80211.ieee80211_regdom=JP systemd.run=/boot/firstrun.sh systemd.run_success_action=reboot systemd.unit=kernel-command-line.target
バックアップから復元
Bookworm環境のバックアップから設定を戻してみたら、意外と戻せたので、戻したものリストです。Chromiumの設定を戻せたのは良かったです。あとはlxterminal。
- .gitと.git-prompt.sh
- .ssh
- .bashrcは変更箇所だけ取り込み
- lxterminal (.config/lxterminal)
- Chromium (.config/chromium)
- poedit (.config/poedit)
日本語環境のカスタマイズ
日本語フォントとfcitx5-mozcをインストールするのはいつもの作業ですが、fcitx5の設定が色々おかしくて難儀したので設定内容のメモです。
日本語配列キーボードを使用しているのに、かな入力をしていると、Enterキー周りのTHE JIS配列的なキー(ー、む、ろとかその辺)がUS配列っぽい文字になってしまいました。これはFcitx5の設定の「システムキーボードのレイアウトを選択」ボタンを開くて、レイアウトが「英語」になっていたのが原因でした。レイアウトを「日本語」に設定して解決できました。

もう一つはIMEの有効・無効切り替えに相当する「一時的に1入力メソッドに切り替える」になぜか左Shiftが設定されているところ。入力途中で変換前の候補が消えるので、何かと思っていたら、こいつのせいでした。ここを空にしたら問題なくなりました。

Mozcの方はローマ字入力からかな入力にしたのと、無変換・変換キーをMacっぽく英数・かなキー的な割当にしてみましたが、環境が変わると脳みそが切り替わるのかあまり使えていません。
フォントは、M Plus系を全体的に使ってみました。lxterminalではM PLUS Code Latin 60 Reguar 12pt、デスクトップテーマもM PLUS2 Regular 12ptとしました。いい感じですね。lxterminalの色だけちょっと直したいところですが。

壁紙とかもセット*1すれば、最高の作業環境の出来上がりです。ちなみにこの記事はRaspberry Pi 500で書きました。こないだのMaker Faire Tokyoで買っちゃいました。+が出るわけですが、やはりキー配列的な入力のしやすさはノーマのほうがいいっぽい気がしています。っていうかネガキャンっぽくなりそうで嫌なのですが、私が単に小さいキーボードが好きというか、慣らされているだけだと思っています。

まとめ
USB SSDに入ってたBookworm環境を、後ろのセクターにあるデータ置き場パーティションを破壊せずに、Trixieに入れ替える話でした。ついでにTrixie環境の諸々のセッティングも解説しました。
私も普段はマカーなので、わざわざRaspberry Piのデスクトップで何かをする必要などないのですが、逆にほぼ使っていない、何も雑念がないデスクトップやブラウザーのブックマークバーの環境で作業するのは、集中できる……気がしました。集中して作業できる環境づくりとしてRaspberry Pi OS Trixieのセットアップ、あとついでにPi 500とかPi500+などの購入を検討されてはいかがでしょうか(?????????)。
ちなみに、Pi 500は(本体のみ購入の場合)まもなく10ドルの値上げになる見込み。悩んでいる人は検討を加速すると良いかもしれません……。
www.raspberrypi.com