Raspbian SDカードイメージファイルの縮小
Raspberry Pi OS(May 7th 2021)のインストール でセットアップしたSDカードをバックアップしておけば逐一セットアップ作業を行わなくても環境を復元できます。
ただ、そのままSDカードをイメージファイル化しただけでは復元するSDカードのサイズが微妙に小さい場合などは、復元できなくなってしまいます。
そこで、バックアップしtイメージファイル内のパーティションサイズを縮小し、イメージファイルを小さくして保存します。
以前、Raspbian SDカードイメージファイルの縮小、
Jetson nano のSDカードをバックアップする
でも書いていますが、今回はSDカード上でパーティションを縮小する方法にしてみました。
これだと、不要な部分のバックアップを行わなくて済むので、ディスク領域/時間敵に有利かと思います。
Windowsでは出来ない操作があるので、Ubuntu PCが必要です。
WSLではたぶん出来ません。
Virtualboxだと出来そうな気がしますが、試していません。
コピーしたSDカードで初回Boot時にパーティションを拡張するためのスクリプトexpand_partition.sh
を
ここ
から適当なディレクトリにダウンロードしておきます。
(SDカードのコピーからブートしたあとに実行するので、コピーからブートした環境でダウンロードしても良いですが、
マスタにダウンロードしておけばコピーの度にダウンロードしなくて済むので。)
mkdir ~/first_boot_settings
cd ~/first_boot_settings
wget https://ippei8jp.github.io/memoBlog/misc/stock/expand_partition.sh
[!NOTE] RaspberryPiの場合は
raspi-config
でパーティション拡張できるので、このスクリプトはなくても良い。
RaspberryPiの電源をOFFし、SDカードを取り外してubuntu PCに挿入しておきます。
以下、SDカードは/dev/mmcblk0
に割り当てられているものとします。
[!NOTE] SDカードが自動マウントされている場合はアンマウントしておいてください。
sudo umount /dev/mmcblk0p1 sudo umount /dev/mmcblk0p2
パーティション操作を行うため、gpartedがインストールされていなければインストールしておきます。
sudo apt install gparted
/dev/mmcblk0
を選択。/dev/mmcblk0p2
を右クリックし、「リサイズ/移動」を選択[!NOTE] gpartedによるパーティションの縮小はマウントしたままではできません。
したがって、RaspberryPiでは作業できず、Ubuntu PCで行う必要があります。
以下のコマンドを実行し、コピーすべきデータサイズを確認します。
sudo parted /dev/mmcblk0 unit MiB print
以下が実行結果例。
ここで、パーティション2の終了位置をメモ(ここでは3760
)しておきます。
モデル: SD SA16G (sd/mmc)
ディスク /dev/mmcblk0: 14772MiB
セクタサイズ (論理/物理): 512B/512B
パーティションテーブル: msdos
ディスクフラグ:
番号 開始 終了 サイズ タイプ ファイルシステム フラグ
1 4.00MiB 260MiB 256MiB primary fat32 lba
2 260MiB 3760MiB 3500MiB primary ext4
以下のコマンドでSDカードのデータをイメージファイルに保存します。
ここで、of=
で指定しているのが作成するイメージファイル名、
count=
は上で調べたパーティションの終了位置をしていします。
sudo dd if=/dev/mmcblk0 of=hoge1.img bs=1M count=3760 status=progress
必要ならzip圧縮しておきます。
zip hoge1.zip hoge1.img
上で作成したイメージファイルをSDカードに書き込み(WindowsでもUbuntuでもお好きにどうぞ)、
RaspberryPiに挿入しBootします(特別な手順は特にありません)。
Boot完了したらlog inしてパーティションサイズを変更するために 以下のコマンドを実行します。
bash first_boot_settings/expand_partition.sh
[!NOTE] または、RaspberryPiにgpartedをインストールして、
パーティションを縮小したときと同様に最大サイズまでパーティションサイズを拡大しても良いです。
パーティションの拡大はマウントしたままでも可能。
[!NOTE] RaspberryPiの場合は
raspi-config
でパーティション拡張できるsudo raspi-config --expand-rootfs
Please reboot
と言われたらrebootする。
必要であれば、ホスト名など必要な変更を行います。
リブートします。