#!/usr/env/bin bash set -e # set -x # For debugging # If you ever mess this up: # $ sudo mknod /dev/loop-control c 10 237 # $ sudo chmod 600 /dev/loop-control # $ sudo chown root:root /dev/loop-control # # For cleanup: # $ sudo find /dev -maxdepth 1 -type b -name 'loop[0-9]*' -exec rm -f {} \; DISKFILE="/tmp/disk.img" BINFILE="/tmp/file.bin" LOOPNUM=$((RANDOM % 156 + 100)) LOOPDEV="/dev/loop${LOOPNUM}" echo "Using device: ${LOOPDEV}" cleanup() { echo "Cleaning up..." set +e -x sudo losetup -d ${LOOPDEV} sudo rm ${LOOPDEV} sudo rm ${BINFILE} ${DISKFILE} } trap cleanup EXIT INT TERM if losetup ${LOOPDEV} >/dev/null 2>&1; then echo "${LOOPDEV} already in use" >&2 cleanup exit 1 fi if [ ! -f ${DISKFILE} ]; then dd if=/dev/zero of=${DISKFILE} bs=1M count=256 fi if [ ! -f ${BINFILE} ]; then dd if=/dev/urandom of=${BINFILE} bs=1M count=64 fi if [ ! -e ${LOOPDEV} ]; then sudo losetup ${LOOPDEV} ${DISKFILE} fi sudo ./writeimg -nd ${LOOPDEV} ${BINFILE} sudo ./writeimg -vnd ${LOOPDEV} ${BINFILE} sudo ./writeimg -nd ${LOOPDEV} ./writeimg sudo ./writeimg -vnd ${LOOPDEV} ./writeimg sudo ./writeimg -nd ${LOOPDEV} ./LICENSE sudo ./writeimg -vnd ${LOOPDEV} ./LICENSE # Redirect this to avoid confusion ! sudo ./writeimg -vnd ${LOOPDEV} ./crc32.h 2>/dev/null GREEN="\e[32m" RESET="\e[0m" echo -e "\n\n${GREEN}Looks good!${RESET}"