65 lines
1.4 KiB
Bash
65 lines
1.4 KiB
Bash
#!/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}"
|