#!/usr/bin/env bash MEDIADIR="/media/gmgauthier" format=0 # Don't format disk images that already exist # get name of freshly created blank disk, or create one if [ $# -eq 0 ]; then echo ">>> NEW DISK IS BEING CREATED..." PREFIX="floppy" RANDO=$(od -An -N4 -i < /dev/urandom|sed 's/[ -]//g') DISK="$PREFIX$RANDO" dd if=/dev/zero of=$DISK.img bs=1k count=1440 format=1 else DISK=$1 if ! [ -f $DISK.img ]; then dd if=/dev/zero of=$DISK.img bs=1k count=1440 format=1 fi fi # Find the next available loop device on the system echo ">>> LOOP DEVICE IS BEING IDENTIFIED..." list=$(losetup -O name|sed 's/\/dev\/loop//g'|sed 's/NAME//g'|sort - --sort=human-numeric) ### listarr=(${(@s: :)list}) # zsh version of the array generator listarr=($(echo $list | tr " " "\n")) #bash version of array generator lastdev=${listarr[-1]} lastdevnum=$((lastdev)) nextdev=$((lastdevnum+1)) # allocate the next available loop device, format the disk, and mount it. nextdevname="/dev/loop$nextdev" echo ">>> LOOP DEVICE $nextdevname RESERVED FOR DISK: $DISK.img" sudo losetup $nextdevname $DISK.img if [ $format -eq 1 ]; then echo ">>> DISK IMAGE IS RAW AND WILL BE FORMATTED" sudo mkfs -t vfat $nextdevname fi if ! [ -d $MEDIADIR/$DISK ]; then echo ">>> MOUNT DIRECTORY NOT FOUND. CREATING DIRECTORY NOW." sudo mkdir $MEDIADIR/$DISK fi echo ">>> DISK $DISK.img MOUNTING AT LOCATION: $MEDIADIR/$DISK" sudo mount $DISK.img $MEDIADIR/$DISK if [ $format -eq 1 ]; then echo ">>> DISK INFORMATION BEING COPIED TO $DISK.img" sudo fdisk -l $nextdevname >> $DISK-fdisk.txt sudo cp $DISK-fdisk.txt $MEDIADIR/$DISK/$DISK.txt && rm $DISK-fdisk.txt fi