Dann muss ich das Problem wohl doch noch erklären

FAT ist uralt und funktioniert daher ganz einfach: Das Dateisystem besteht aus sogenannten "Cluster", eine Datei belegt minimal einen Cluster und maximal so viele Cluster wie das Dateisystem hat, aber höchstens insgesamt 4GB. In der File Allocation Tabe (der namensgebenden FAT) steht nun welche Cluster eine Datei belegt. Beim Zugriff auf eine Datei muss das Betriebssystem also nur in der File Allocation Table die zugehörigen Cluster nachschauen und diese dann lesen.
FAT12, FAT16 und FAT32 unterscheiden sich in erster Linie durch die Nummerierung der Cluster. Bei FAT12 sind es 12 Bit Nummern, damit können maximal 4096 Sektoren angesprochen werden. Bei FAT16 sind es 16 Bit Nummern und 65536 Cluster. Und bei FAT32, welche Überraschung, 32 Bit Nummern und damit 4294967296 Cluster. Damit wäre eigentlich alles gut.
Aber nun wäre Microsoft nicht Microsoft gewesen, wenn sie sich da irgendwann böse verfrickelt hätten. Windows erkennt bis heute Dateisysteme an der Nummer der zugehörigen Partition, Partitionstyp 6 ist "FAT größer als 32 Megabyte". Das war am Anfang nur FAT16, aber als dann FAT32 kam, musste man irgendwie erkennen können, ob es ein FAT16 oder ein FAT32 ist. Natürlich hätte man einfach einen neuen Partitionstyp definieren können, aber damit hätte man alle existierenden Partitionstools und sicher noch einiges mehr kaputt gemacht. Also kam man auf eine bescheuerte Idee: Lese die Anzahl Cluster im Dateisystem. Sind es bis zu 65536 Stück, ist es ein FAT16. Sind es mehr als 65536, ist es ein FAT32. Und darum muss ein FAT32-Dateisystem sinnloserweise mindestens 65537 Cluster haben.
Wer sich für den vollen Abgrund interessiert:
https://en.wikipedia.org/wiki/File_Allocation_Table
Die Frage ist nun, wie groß ein Cluster ist. Klassisch arbeitet man mit Clustern von 512 Byte, da lange Zeit Festplatten eine Sektorengröße von 512 Byte hatten. Sie konnten also nicht weniger als 512 Byte lesen und schreiben. Außerdem belegt eine Datei damit nur mindestens 512 Byte, bei vielen kleinen Dateien ist der Verschnitt recht gering. Windows macht es bis heute so, also: 65537 Cluster * 512 Byte = 33554432 Byte = 32 Megabyte. Es lässt sich also ein Medium, was 32 oder mehr Megabyte groß ist, als FAT32 formatieren.
In der Unix-Welt wurde FAT aber nie wirklich auf Festplatten verwendet, stattdessen auf Disketten und später USB-Sticks. Da Disketten immer mit FAT12 formatiert werden können, kann an für FAT32 also USB-Sticks, SD-Karten und co. annehmen. Diese Medien haben meist Blockgrößen von mindestens 4096 Byte, meist noch mehr. FreeBSD (und ich meine auch Linux 'mkfs.fat') nehmen daher für FAT32 eine Clustergröße von mindestens 4096 Byte an, wenn man nichts anderes angibt. Damit muss das Medium aber mindestens 65537 Cluster * 4096 Byte = 268439552 Byte = 256 Megabyte groß sein. Aber wie gesagt, mindestens 4096 Byte, da spielen noch einige andere Faktoren wie die Größe des Medium (Fall es im Detail interessiert:
https://svnweb.freebsd.org/base/head/sbin/newfs_msdos/mkfs_msdos.c?revision=335189&view=markup#l320) mit rein.
Lange Rede, kommen wir besser mal zum Thema. Wenn du weißt, dass das Dateisystem mit FreeBSD erstellt wurde, ist deine einfachste Option 'newfs_msdosfs -N'. Das -N zeigt an, mit welchen Parametern das Dateisystem erstellt
würde ohne es wirklich zu erstellen. Für den Stick aus meinem Beispiel ganz oben:
Code:
% newfs_msdos -N /dev/da0s
/dev/da0s1: 61588224 sectors in 962316 FAT32 clusters (32768 bytes/cluster)
BytesPerSec=512 SecPerClust=64 ResSectors=32 FATs=2 Media=0xf0 SecPerTrack=63 Heads=255 HiddenSecs=0 HugeSectors=61603353 FATsecs=7519 RootCluster=2 FSInfo=1 Backup=2
Also eine Clustergröße von 32768 Bytes.
