Dieser Befehl
mkdosfs /dir/to/data/data.bin
erstellt ein Dateisystem auf dem gesamten "Gerät" data.bin
. Es enthält keine Partitionstabelle. Ein solches Setup wird als Superfloppy bezeichnet. Meiner allgemeinen Meinung nach sollte es vermieden werden, es sei denn, Sie kennen mögliche Fallstricke und akzeptieren diese.
Ich erwarte, dass Windows es auf diese Weise beibehält, während es eine über das g_mass_storage
Modul freigegebene Superfloppy formatiert .
Es gibt keine Partitionstabelle und kpartx
ist daher nicht erforderlich. Sie sollten die gesamte Datei einhängen. Moderne mount
Implementierungen sollten ein Schleifengerät automatisch verknüpfen:
mount -o rw,umask=0000 -t vfat /dir/to/data/data.bin /mnt/data
(Wenn mount
dies nicht der Fall ist, verwenden Sie losetup
oder sogar kpartx
. Das resultierende Gerät wird jedoch wie loop0
z /dev/loop0
. B. dieses einhängen, nicht loop0p1
).
Ich bin überrascht, mount ... /dev/mapper/loop0p1 /mnt/data
als Sie es zum ersten Mal laufen ließen. Es ist fischig. Sie sollten von Anfang mkdosfs
an die gesamte Datei einhängen, da sie für die gesamte Datei gilt.
Ich glaube, ich habe das Grundproblem angesprochen. Die folgende Erklärung des nächsten Ereignisses ist möglicherweise völlig falsch.
Beachten Sie, dass diese Art von Problem möglich ist: Windows mounten keine USB-NTFS-Superfloppy . In Ihrem Fall ist es FAT32 superfloppy und obwohl Windows damit kein Problem zu haben scheint, kpartx
kann es sein.
Dies liegt daran, dass der FAT32-Startdatensatz ausführbaren Code speichert, in dem sich eine Partitionstabelle in MBR befinden würde. Dieser Code kann alles sein. Sie führen aus, kpartx
und es erwartet MBR mit einer gültigen Partitionstabelle. Stattdessen erhält es einen FAT32-Boot-Record. Dann:
- entweder findet es so etwas wie Partitionstabelle nicht
special device /dev/mapper/loop0p1 does not exist
danach; - oder es findet eine halbgültige, erstellt
/dev/mapper/loop0p1
(und vielleichtloop0p2
etc.), die auf einen Teil Ihrer Datei verweist, aber da das Dateisystem sich auf der gesamten Datei befindet, macht diese "Partition" keinen Sinnwrong fs type, bad option, bad superblock
.
Die Geschichte ähnelt meiner Antwort auf die bereits verknüpfte Frage . Ich denke, in Ihrem Fall wird es kpartx
verwirrt.
Wenn Sie eine Partitionstabelle innerhalb der Datei erstellt haben (z. B. mit fdisk data.bin
), eine oder mehrere Partitionen definiert, kpartx -a ...
ein Dateisystem ausgeführt und erstellt haben, /dev/mapper/loop0p1
dann sollten Sie es mounten mount ... /dev/mapper/loop0p1 /mnt/data
.
Ich denke in diesem Fall könnte man laufen modprobe g_mass_storage
- entweder mit
file=/dir/to/data/data.bin
und Windows würde das gesamte "Gerät" mit seiner Partitionstabelle sehen; - oder mit
file=/dev/mapper/loop0p1
und Windows würde ein "Gerät" sehen, das eine Superfloppy ist.