Eu não vejo como facilmente fazer isso sem a ajuda do sistema, como root. É possível pedir ao sistema para tornar as partições conhecidas, e depois perguntar novamente sobre as partições e sistemas de arquivos dentro. Aqui "o sistema" é uma combinação frouxa de recursos do kernel e recursos de detecção integrados do udev. Somente esses dois comandos são necessários: kpartx
e blkid
. Meu exemplo tem valores diferentes do exemplo do OP, mas é bastante semelhante:
# kpartx -v -a test.img
add map loop0p1 (253:8): 0 20480 linear 7:0 2048
add map loop0p2 (253:9): 0 22528 linear 7:0 22528
add map loop0p3 (253:10): 0 20480 linear 7:0 45056
add map loop0p4 (253:11): 0 2 linear 7:0 65536
add map loop0p5 (253:12): 0 40960 linear 7:0 67584
# blkid /dev/loop0 /dev/mapper/loop0p*
/dev/loop0: PTUUID="a5ebeec3" PTTYPE="dos"
/dev/mapper/loop0p1: SEC_TYPE="msdos" LABEL="MYFS1" UUID="D816-AFC1" TYPE="vfat" PARTUUID="a5ebeec3-01"
/dev/mapper/loop0p2: SEC_TYPE="msdos" LABEL="MYFS2" UUID="D857-D702" TYPE="vfat" PARTUUID="a5ebeec3-02"
/dev/mapper/loop0p3: SEC_TYPE="msdos" LABEL="MYFS3" UUID="D894-3506" TYPE="vfat" PARTUUID="a5ebeec3-03"
/dev/mapper/loop0p4: PTTYPE="dos" PARTUUID="a5ebeec3-04"
/dev/mapper/loop0p5: SEC_TYPE="msdos" LABEL="MYLASTFS" UUID="074A-2F0F" TYPE="vfat" PARTUUID="a5ebeec3-05"
# kpartx -v -d test.img
del devmap : loop0p5
del devmap : loop0p4
del devmap : loop0p3
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0
Os sistemas de arquivos não foram montados. Apenas as partições foram mapeadas, examinadas e não mapeadas.