Create SDCard Image - h-sendai/RaspberryPi GitHub Wiki
独自イメージの作成
既存のRaspberry Pi OSをSDカードに書いて、自分に必要な パッケージをセットアップし、ユーザー登録した状態のイメージを 準備できれば手間が減る。
いったんSDカードを使って自分の環境をセットし、SDカードを ddで読み出す。
例:
# dd if=/dev/sdg of=myraspi-64bit.img status=progress
15459705856 bytes (15 GB, 14 GiB) copied, 469 s, 33.0 MB/s
30228480+0 records in
30228480+0 records out
15476981760 bytes (15 GB, 14 GiB) copied, 469.897 s, 32.9 MB/s
書いたイメージを PiShrink https://github.com/Drewsif/PiShrink を使って縮小する:
# /path/to/pishrink.sh myraspi-64bit.img
pishrink.sh v0.1.3
pishrink.sh: Gathering data ...
Creating new /etc/rc.local
pishrink.sh: Checking filesystem ...
rootfs: 46892/910176 files (0.2% non-contiguous), 489078/3712000 blocks
resize2fs 1.45.6 (20-Mar-2020)
pishrink.sh: Shrinking filesystem ...
resize2fs 1.45.6 (20-Mar-2020)
Resizing the filesystem on /dev/loop0 to 683441 (4k) blocks.
Begin pass 2 (max = 76005)
Relocating blocks XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
Begin pass 3 (max = 114)
Scanning inode table XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
The filesystem on /dev/loop0 is now 683441 (4k) blocks long.
pishrink.sh: Shrinking image ...
pishrink.sh: Shrunk myraspi-64bit.img from 15G to 2.9G ...
ddですいだした16GBのイメージが2.9GBまで減った。
できたイメージをkpartx -a /path/to/myraspi-64bit.img
として
マウント可能なようにして
mount -o ro /dev/mapper/loop0p2 /mnt
してみると/etc/rc.local
にSDカードの全領域を使うようにする
プログラムが入っており、最初の起動でこれが実行されることが
わかる。
実際にPiShrinkで作ったイメージをddコマンドでSDカードに書いて 試してみると、ディスク領域拡張後に自動でリブートし、リブート後は SDカード上の/パーティションの領域が拡張されていた。