Este comando
mkdosfs /dir/to/data/data.bin
cria um sistema de arquivos no todo "dispositivo" data.bin
. Não há tabela de partições dentro dele. Essa configuração é chamada de superfloppy. Minha opinião geral é que deve ser evitada , a menos que você conheça possíveis armadilhas e as aceite.
Espero que o Windows continue assim enquanto formata um superfloppy compartilhado via g_mass_storage
module.
Não há tabela de partições, portanto, kpartx
é desnecessário. Você deve montar o arquivo inteiro. As implementações modernas de mount
devem associar um dispositivo de loop automaticamente:
mount -o rw,umask=0000 -t vfat /dir/to/data/data.bin /mnt/data
(Se o seu mount
não, use losetup
ou mesmo kpartx
. Mas o dispositivo resultante será como loop0
, por exemplo, /dev/loop0
; monte este, não loop0p1
). / p>
Estou surpreso que mount ... /dev/mapper/loop0p1 /mnt/data
funcionou quando você o executou pela primeira vez. É suspeito. Desde o início você deve montar o arquivo inteiro porque mkdosfs
operou no arquivo inteiro.
Eu acredito que abordei a questão raiz. A explicação abaixo sobre o que aconteceu em seguida pode estar totalmente errada.
Observe que esse tipo de problema é possível: O Windows não monta o superfloppy USB NTFS . No seu caso, é superfloppy FAT32 e enquanto o Windows parece não ter nenhum problema com isso, kpartx
may.
Isso ocorre porque registro de inicialização FAT32 armazena o código executável onde uma tabela de partição no MBR seria . Este código pode ser qualquer coisa. Você executa kpartx
e espera o MBR com uma tabela de partição válida. Em vez disso, ele obtém o registro de inicialização FAT32. Então:
- ou não encontra nada parecido com a tabela de partições, então
special device /dev/mapper/loop0p1 does not exist
depois; - ou ele encontra um semi-válido, cria
/dev/mapper/loop0p1
(e talvezloop0p2
etc.) que aponta para alguma parte do seu arquivo, mas como o sistema de arquivos está no arquivo inteiro, essa "partição" não faz sentido, temwrong fs type, bad option, bad superblock
.
A história é semelhante à minha resposta à pergunta já vinculada . Eu acho que no seu caso é kpartx
que fica confuso.
Se você criou uma tabela de partição dentro do arquivo (por exemplo, com fdisk data.bin
), definiu uma ou mais partições, execute kpartx -a ...
e criou um sistema de arquivos em /dev/mapper/loop0p1
- então você deve montá-lo como mount ... /dev/mapper/loop0p1 /mnt/data
.
Acho que neste caso você pode executar modprobe g_mass_storage
- com
file=/dir/to/data/data.bin
e o Windows veria todo o "dispositivo" com sua tabela de partições; - ou com
file=/dev/mapper/loop0p1
e o Windows veria um "dispositivo" que é um superfloppy.