usbStick mit FAT12 formatieren


  • Mod

    Wir haben in unserem fat.h/c Modul neben den üblichen FAT16 und FAT32 auch noch das klassische FAT12 als "type" vorgesehen. Wer dies austesten möchte, nimmt einen möglichst kleinen (oder alten) usb-Stick und kopiert das FloppyImage.img von PrettyOS mittels dd (oder "dd for windows") auf den Stick.

    Hier ein Beispiel für den Stick in Laufwerk M: (windows):

    dd if=FloppyImage.img of=\\.\M:
    

    Bitte vorsichtig sein! dd macht alles platt! ⚠

    Auf diese Weise erstellt man auch einen bootfähigen usb-Stick, von dem man PrettyOS im BIOS via usb booten kann.

    Mit diesem Stick kann man ebenso als "normale" FAT12-Partition, also als usbMSD, arbeiten, selbst wenn man von Diskette (real oder virtuell) bootet. Steckt man diesen stick ein, so wird er vom device manager als MSD erkannt, während testMSD(...) als FAT12 Filesystem erkannt und als partition->type = FAT12 eingetragen wird.

    Man kann mittels "4:\ttt.elf" (evtl. auch "3:\ttt.elf" oder andere Zahl anstelle 4) von diesem FAT12-Stick laden und ttt ausführen. 🙂

    Der Stick hat dann zunächst nur 1,44 MB Speicherplatz in dieser FAT12-Partition. Ich experimentiere noch daran, im Boot-Sektor einige Einstellungen im FAT-Descriptor derart zu verbiegen, dass wir etwas mehr Speicherplatz haben.



  • Ich finde, man sollte das hier (noch-)einmal genau beschreiben mit 'dd'.
    Hier eine Anleitung für Linux, Mac und Windows:

    http://c-plusplus.net/forum/viewtopic-var-t-is-262927.html

    Cuervo schrieb:

    Das geht mittels des Programmes 'dd'

    Linux:

    dd if=FloppyImage.bin of=/dev/drive
    

    (für drive das entsprechende Laufwerk einsetzen)

    Mac OS X: (Xcode erforderlich)

    dd if=FloppyImage.bin of=/dev/disk1
    

    Windows: (http://www.chrysocome.net/downloads/dd-0.5.zip)

    dd if=FloppyImage.bin of=\\.\A:
    

    Ich weise darauf hin, dass unter unterschiedlichen Betriebssystemen und Systemen die Laufwerksangaben anders sein könnten. Die Benutzung dieser Tipps ist auf eigene Gefahr!


  • Mod

    Danke für den Link, Cuervo. 👍

    Ich kenne keinen anderen Weg, um eine FAT12 Partition auf usb MSD anzulegen. Der FAT12-format-Befehl ist heute nur noch für Disketten in Anwendung. Bei usb-Sticks "bevormundet" Windows ohne Ende: nur eine Partition, mindestens FAT16, Clustergröße wird vorgegeben, ...



  • Unter GNU/Linux gibt es ein Programm mkdosfs:

    # mkdosfs
    mkdosfs 3.0.2 (28 Feb 2009)
    No device specified!
    Usage: mkdosfs [-A] [-c] [-C] [-v] [-I] [-l bad-block-file] [-b backup-boot-sector]
           [-m boot-msg-file] [-n volume-name] [-i volume-id]
           [-s sectors-per-cluster] [-S logical-sector-size] [-f number-of-FATs]
           [-h hidden-sectors] [b][-F fat-size][/b] [-r root-dir-entries] [-R reserved-sectors]
           /dev/name [blocks]
    

    Habe es spasseshalber mit einem 256 MByte USB-Stick (Gerätedatei /dev/sdc1) versucht:

    # mkdosfs -F 12 /dev/sdc1
    

    Ich kann den USB-Stick danach noch "mounten", aber der Treiber wird leider nur als vfat angezeigt:

    # mount
    ...
    /dev/sdc1 on /mnt/tmp type vfat (rw)
    

    Hier vielleicht noch die Ausgabe des ersten Sektors:

    # head /dev/sdc1 | hexdump -C
    00000000  eb 3c 90 6d 6b 64 6f 73  66 73 00 00 02 80 01 00  |.<.mkdosfs......|
    00000010  02 00 02 00 00 f8 0c 00  38 00 09 00 00 00 00 00  |........8.......|
    00000020  de cf 07 00 00 00 29 dd  11 0d 65 20 20 20 20 20  |......)...e     |
    00000030  20 20 20 20 20 20 46 41  54 31 32 20 20 20 0e 1f  |      FAT12   ..|
    00000040  be 5b 7c ac 22 c0 74 0b  56 b4 0e bb 07 00 cd 10  |.[|.".t.V.......|
    00000050  5e eb f0 32 e4 cd 16 cd  19 eb fe 54 68 69 73 20  |^..2.......This |
    00000060  69 73 20 6e 6f 74 20 61  20 62 6f 6f 74 61 62 6c  |is not a bootabl|
    00000070  65 20 64 69 73 6b 2e 20  20 50 6c 65 61 73 65 20  |e disk.  Please |
    00000080  69 6e 73 65 72 74 20 61  20 62 6f 6f 74 61 62 6c  |insert a bootabl|
    00000090  65 20 66 6c 6f 70 70 79  20 61 6e 64 0d 0a 70 72  |e floppy and..pr|
    000000a0  65 73 73 20 61 6e 79 20  6b 65 79 20 74 6f 20 74  |ess any key to t|
    000000b0  72 79 20 61 67 61 69 6e  20 2e 2e 2e 20 0d 0a 00  |ry again ... ...|
    000000c0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
    *
    000001f0  00 00 00 00 00 00 00 00  00 00 00 00 00 00 55 aa  |..............U.|
    


  • abc.w schrieb:

    Ich kann den USB-Stick danach noch "mounten", aber der Treiber wird leider nur als vfat angezeigt:

    Naja, ist halt nur ein Treiber für alle 3 Dateisysteme und die Varianten davon. Was mich vielmehr interessieren würde: Das sagt df? Wenn ich auf einer 100MB-Datei ein FAT12-Dateisystem erstelle (so wie von Dir beschrieben), sind auch angeblich 100MB Platz frei. Das kann aber nicht sein, denn FAT12-Dateisysteme können nur bis 16MiB gross sein. Erstellt mkdosfs also heimlich eine FAT16-Partition?



  • SG1 schrieb:

    Das sagt df?

    df sagt:

    # df -lh
    Filesystem            Size  Used Avail Use% Mounted on
    /dev/sdc1             250M  6.7M  244M   3% /media/disk
    

    (6.7M Used - habe testweise ein Paar Dateien rüberkopiert)


  • Mod

    Interessant! 👍


Anmelden zum Antworten