#!/usr/bin/env bash flash_sd () { img_file=$1 sd_card=$2 echo "Flashing $img_file to $sd_card ..." xzcat --stdout $img_file | dd of=$sd_card status=progress } enlarge_partition () { device=$1 partnr=2 echo "Resize main partition" sfdisk --backup $device -N $partnr << EOF ,+ print EOF echo "Resize filesystem" e2fsck -f "$device"p$partnr resize2fs -p "$device"p$partnr } mount_temporary () { partnr=$1 temp_mnt_point=$(mktemp -d) mount "$SD_CARD"p"$partnr" $temp_mnt_point echo $temp_mnt_point } unmount_temporary () { handle=$1 umount $1 rmdir $1 } read -e -p "Compressed Image file: " IMG_FILE read -e -p "SD Card: " SD_CARD flash_sd "$IMG_FILE" "$SD_CARD" enlarge_partition "$SD_CARD" mnt_handle=$(mount_temporary "1") unmount_temporary $mnt_handle