#!/bin/bash set -e # fail on any error mountpoint=/mnt/img if [ -z "$1" ]; then echo "Usage: pi_create_image_from_img path/to/file.img" exit 1 fi if [ ! -f "$1" ]; then echo "$1 not found" exit 1 fi if [ ! -d "$mountpoint" ]; then echo "$mountpoint not found, creating" sudo mkdir -p "$mountpoint" fi imgpath="$(realpath $1)" imgdir="$(dirname $imgpath)" xzpath="$imgpath.xz" renamepath="${imgpath:0:-4}_$(date -I).img.xz" echo -e "\nsettings:\n\tmountpoint: $mountpoint\n\timgpath: $imgpath\n\timgdir: $imgdir\n\txzpath: $xzpath\n\trenamepath: $renamepath\n" cd "$imgdir" echo "mapping $imgpath" sudo kpartx -av "$imgpath" echo "mounting $imgpath" sudo mount /dev/mapper/loop0p2 "$mountpoint" cd "$mountpoint" echo "now edit the image pwd: $PWD" read teeeemp echo "unmounting $mountpoint" sudo umount "$mountpoint" echo "unmapping $imgpath" sudo kpartx -dv "$imgpath" echo "shrinking $imgpath to $imgpath.xz" sudo pishrink -Z -r -v -a "$imgpath" echo "renaming $xzpath to $renamepath" mv "$xzpath" "$renamepath" # rm "$imgpath"