Bash script um DOS Floppy Image unter Linux zu erstellen...

  • Hier mein aktuelles Bash Script um eine DOS/FAT 720K image Datei zu erstellen:


    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...

  • Erst einmal Danke jedie für die Arbeit, die du da reingesteckt hast.


    Habe die man-page zu mkfs.fat gelesen, aber die Erleuchtung hat es jatzt nicht so ganz gebracht.


    Deswegen einige Fragen:


    1.Wie kann ich denn jetzt Dateien auf das Image legen?

    2. Wie lassen sich andere Diskettenformate (720k-2,88 MB) erstellen?

  • 1.Wie kann ich denn jetzt Dateien auf das Image legen?

    Das ist der Punkt, den ich in Zeile 6 mit "...Dateien kopieren..." gemeint habe: Zu diesem Zeitpunkt ist das image in /mnt gemountet. Also kannst du da die Dateien reinschieben/ändern.


    Beim benutzen des Script ist es so, das zu den Zeitpunkt eine Bash subshell aufgemacht wird... Zu dem Zeitpunkt kannst du in /mnt Dateien ändern. Wenn du dann die öffene Bash subshell mit einem "exit" verläßt, wird "sudo umount /mnt" gemacht.



    Das Format wird bei "mkdosfs -v -F 12 msdos720k.img" mit dem Parameter "-F 12" bestimmt. Wobei das natürlich zu der größe beim "dd" Kommando übereinstimmen muß...

    -F 12 steht dabei für "12Bit" siehe auch: https://linux.die.net/man/8/mkdosfs

    Zitat

    -F FAT-size
    Specifies the type of file allocation tables used (12, 16 or 32 bit). If nothing is specified, mkdosfs will automatically select between 12, 16 and
    32 bit, whatever fits better for the file system size.


    Am besten ist es wohl, dd komplett weg zu lassen und "-C" zu nutzten, also so:

    Code
    mkdosfs -v -C -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