Você pode acessar a imagem do disco e suas partições individuais por meio do recurso de loopback. Você já descobriu que alguns utilitários de disco funcionarão (razoavelmente) de forma feliz em imagens de disco. No entanto, mkfs
não é um deles (mas estranhamente mount
é).
Aqui está a saída de fdisk -lu binary.img
:
Disk binary.img: 400 MiB, 419430400 bytes, 819200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes ... Device Boot Start End Sectors Size Id Type binary.img1 2048 819199 817152 399M 83 Linux
Para acessar a partição que você criou, você tem algumas opções
-
A rota explícita
losetup --offset $((512*2048)) --sizelimit $((512*817152)) --show --find binary.img /dev/loop0
A saída
/dev/loop0
é o nome do dispositivo de loop que foi alocado. O parâmetro--offset
é apenas o deslocamento da partição (Start
) multiplicado pelo tamanho do setor (512
). Considerando que--sizelimit
é o tamanho da partição, e você pode calcular da seguinte maneira: End-Start + 1, que é 819199-2048 + 1 = 817152, e esse número também deve ser multiplicado pelo tamanho do setor.Você pode usar
/dev/loop0
como referência para a partição:mkfs -t ext4 -L img1 /dev/loop0 mkdir -p /mnt/img1 mount /dev/loop0 /mnt/img1 ... umount /mnt/img1 losetup -d /dev/loop0
-
A rota implícita
losetup --partscan --show --find binary.img /dev/loop0
A saída
/dev/loop0
é o nome do dispositivo de loop principal que foi alocado. Além disso, a opção--partscan
diz ao kernel para varrer o dispositivo em busca de uma tabela de partições e atribuir dispositivos subsidiários de loop automaticamente. No seu caso com a única partição, você também obtém/dev/loop0p1
, que você pode usar como referência para a partição:mkfs -t ext4 -L img1 /dev/loop0p1 mkdir -p /mnt/img1 mount /dev/loop0p1 /mnt/img1 ... umount /mnt/img1 losetup -d /dev/loop0