55 lines
1.7 KiB
Bash
Executable File
55 lines
1.7 KiB
Bash
Executable File
#!/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
|