けんぼうは留年生

ノンジャンルで何か書きたくなった時に書く感じ

Raspberry Pi のイメージファイルを小さくしてバックアップする話

仕事の関係で Raspberry Pi の micro SD をイメージファイルにしてバックアップすることがあるのだけれど、毎回 SD カードのサイズ分のイメージファイルが出来てしまうのが煩わしくて仕方がなかった。調べてみるとイメージファイルを小さくするための話は多少出てくるのだが、Windows + micro SD カードリーダー + RasPi のみの構成で対処出来る実例はパッと見出てこなかったので何となくメモ程度にまとめておく。

割とよく分からんまま適当にやってるので、真似する時は他の情報源にもちゃんとあたること。

1. パーティションを削る

パーティションを削るには gparted というソフトウェアを使うのだが、こいつは Windows では動かん。というか、RasPi のストレージ部分(?)にあたるパーティションExt4 とかいうフォーマット形式だそうで何だかよく分からんがとにかく Windows では手出しできない代物となる。仮想環境とか WSL とかもあるが、そこから USB にぶっ刺したものをどうこうしたり GUI 出したりするのは面倒くさそうだ。

というわけで RasPi 自身に頑張ってもらう。これをやる。
arakoki70.com

外部記事は消えるかもしれないので自分でも書いとく。

バックアップを取りたいものとは別の micro SD カードを用意して環境を整えて、以下のようにインストールして起動。GUI 画面が立ち上がる。

$ sudo apt-get install gparted
$ sudo gparted

バックアップしたい micro SD カードをリーダーと共にぶっ刺して、アプリケーションの右上から刺したデバイスを選択。

右側の ext4 の部分が削れるパーティションになる。自動でマウントされてしまうのだが、マウントされたパーティションは触れないので右クリックしてそのパーティションだけアンマウントする。そしたらもう一度右クリックでパーティションのリサイズが可能になる。

あんまギリギリまで縮めると怖いので、何かいい感じの大きさにしたらリサイズ。そいでもって上の緑のチェックボタンで設定を書き込む。これで大体 ok 。

2. イメージファイルを作成

大体の記事だと dd コマンドがどうとか言ってくるのだがこっちは Windows PC だ。パーティションのリサイズで使った RasPi そのままでもいいが、そのファイルをまた PC に持ってくるのが面倒なので、Win32DiskImager とかいうやつを使いたい。

結論から言うと使える。"Read Only Allocated Partition" とかいうことにチェックを入れて、さっきの micro SD を吸い出すと、有効なパーティションのデータのみが吸い出されるので結果的にファイルサイズが小さくなる。これで解決。

3. リストア方法

同じ Win32DiskImager で書き込めばリストアが出来る。ただし、このままだとパーティションの縮まったものになってしまう。だが、パーティションを拡げる方は比較的簡単にできる。

リストアして起動した RasPi で `$ sudo raspi-config` から `Advanced Option` → `Expand Filesystem` と選択し、促されるままに再起動すればパーティションは容量いっぱいまで広がる。万事解決。良かった良かった。