Você deseja formatar uma partição em um arquivo de imagem de disco, em vez de todo o arquivo de imagem. Nesse caso, você precisa usar losetup
para dizer ao linux para usar o arquivo de imagem como um dispositivo de loopback.
NOTA: losetup
requer privilégios de root, portanto, deve ser executado como root ou com sudo. Os dispositivos /dev/loop*
que ele usa / cria também requerem privs root para acessar e usar.
por exemplo (como root)
# losetup /dev/loop0 ./sdcard.img
# fdisk -l /dev/loop0
Disk /dev/loop0: 1 MiB, 1048576 bytes, 2048 sectors
Units: sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disklabel type: dos
Disk identifier: 0x54c246ab
Device Boot Start End Sectors Size Id Type
/dev/loop0p1 1 1023 1023 511.5K c W95 FAT32 (LBA)
/dev/loop0p2 1024 2047 1024 512K 83 Linux
# file -s /dev/loop0p1
/dev/loop0p1: data
# mkfs.vfat /dev/loop0p1
mkfs.fat 3.0.28 (2015-05-16)
Loop device does not match a floppy size, using default hd params
# file -s /dev/loop0p1
/dev/loop0p1: DOS/MBR boot sector, code offset 0x3c+2, OEM-ID "mkfs.fat", sectors/cluster 4, root entries 512, sectors 1023 (volumes <=32 MB) , Media descriptor 0xf8, sectors/FAT 1, sectors/track 32, heads 64, serial number 0xfa9e3726, unlabeled, FAT (12 bit)
e, finalmente, desanexar a imagem do dispositivo de loopback:
# losetup -d /dev/loop0
Veja man losetup
para mais detalhes.