Hier mein aktuelles Bash Script um eine DOS/FAT 720K image Datei zu erstellen:
Bash
#!/bin/bash
# Call e.g.:
# ./FloppyImage720K.sh MyNew720K.img
if [ $(id -u) == "0" ]; then
echo -e "\nERROR: Don't call me as root!\n"
exit -1
fi
if [ $# -eq 0 ]; then
echo -e "\nERROR: No image filename given!\n"
exit -1
fi
export IMAGEFILE=${1}
if [ -f "${IMAGEFILE}" ]; then
echo -e "\nERROR: Image file '${IMAGEFILE}' already exists!\n"
exit -1
fi
(
set -x
set -e
{ echo "---------------------------------------------------"; } 2>/dev/null
dd bs=512 count=1440 if=/dev/zero of=${IMAGEFILE}
{ echo "---------------------------------------------------"; } 2>/dev/null
mkdosfs -v -F 12 ${IMAGEFILE}
{ echo "---------------------------------------------------"; } 2>/dev/null
fsck.msdos -v ${IMAGEFILE}
{ echo "---------------------------------------------------"; } 2>/dev/null
chmod 666 ${IMAGEFILE}
sudo mount ${IMAGEFILE} -t msdos -o loop,umask=0,user /mnt
{ echo "---------------------------------------------------"; } 2>/dev/null
mount | grep ${IMAGEFILE}
)
function cleanup {
echo -e "\n _________________________________________________________"
echo -e " Unmount...\n"
(
set -x
sudo umount /mnt
chmod 664 ${IMAGEFILE}
fsck.msdos -v ${IMAGEFILE}
)
echo -e "\n"
}
trap cleanup EXIT
echo "---------------------------------------------------"
echo "Image will be unmounted, after exit the sub bash shell!"
echo "---------------------------------------------------"
bash --rcfile <(echo "PS1='\u@\h \w [${IMAGEFILE}]\$ '") -i
Alles anzeigen
Idee ist, das die *.img angelegt wird, beschreibbar gemountet ist, solange man die "sub bash shell" offen läßt. Sprich man kann direkt nach dem erstellen Dateien drauf kopieren und mit einem "exit" wird der unmount ausgeführt...
Das Prompt der sub shell sieht ein wenig kacke aus, aber ich wollte sichtbar machen, das man in dieser sub shell noch ist
Die chmod Sachen, sind IMHO auch unschön, aber wenn o+w nicht gesetzt sind, wird das image immer als read-only gemountet...
Die eigentlichen Befehle die man braucht sind nur:
Code
dd bs=512 count=1440 if=/dev/zero of=msdos720k.img
mkdosfs -v -F 12 msdos720k.img
chmod 666 msdos720k.img
sudo mount msdos720k.img -t msdos -o loop,umask=0,user /mnt
# ...Dateien kopieren...
sudo umount /mnt
dd könnte man eigentlich auch wegrationalisieren, weil mkdosfs auch direkt eine Datei erstellen kann...