ArchySP/scripts/mkfsimage.sh

55 lines
1.0 KiB
Bash
Executable File

#!/bin/bash
# Create a new filesystem and populate it with the specified files.
# Automatically extracts tarballs.
set -e
if [[ $# -lt 5 ]] ; then
echo "Syntax: $0 IMAGE PART# FSTYPE LABEL SOURCE [...]"
exit 0
fi
image="$1" ; shift
partition="$1" ; shift
fstype="$1" ; shift
label="$1" ; shift
device="/dev/sda"
[[ $partition -ne 0 ]] && device="$device$partition"
script=(
"run"
"mkfs $fstype $device label:$label"
"mount $device /"
)
while [ $# -gt 0 ] ; do
src="$1"
if [[ "$src" =~ .+:.+ ]] ; then
dest="${src##*:}"
src="${src%%:*}"
script+=("mkdir-p \"$dest\"")
else
dest="/"
fi
if [ -d "$src" ] ; then
for item in "$src"/* ; do
cmd="copy-in \"$item\" \"$dest\""
script+=("$cmd")
done
else
case "$src" in
*.tar) cmd="tar-in \"$src\" \"$dest\"" ;;
*.tar.gz) cmd="tar-in \"$src\" \"$dest\" compress:gzip" ;;
*) cmd="copy-in \"$src\" \"$dest\"" ;;
esac
script+=("$cmd")
fi
shift
done
script+=("fstrim /")
for cmd in "${script[@]}"; do
echo "$cmd"
done | guestfish --format=raw -a "$image"