linux - Lista de rótulos de partições de partições que residem dentro de um arquivo IMG bruto sem montar o arquivo IMG

1

Eu tenho um arquivo de disco bruto IMG multiparticionado e desejo listar os rótulos de partição de cada partição sem montá-lo.

O comando fdisk -l funciona como eu quero, mas não lista os rótulos:

fdisk -l test.img
Disk test.img: 200 MiB, 209715200 bytes, 409600 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: 0xcae9ed5b

Device     Boot  Start    End Sectors Size Id Type
test.img1  *      2048 104447  102400  50M  b W95 FAT32
test.img2       104448 206847  102400  50M  b W95 FAT32
test.img3       206848 309247  102400  50M  b W95 FAT32
test.img4       309248 409599  100352  49M  5 Extended
test.img5       311296 409599   98304  48M  b W95 FAT32

A razão pela qual eu quero isso é para que eu saiba qual deles montar. O acima é apenas um exemplo de um arquivo de disco bruto de amostra que eu criei para fins de teste, mas o real é um UFD de 128GB com muitas partições diferentes - sendo usado como uma unidade de inicialização múltipla.

É algo como disco possível? Até agora só consegui listar rótulos depois de montar a partição, mas isso anula o propósito. Tendo tantas partições, eu quero ver cada rótulo de partição como parte da saída mostrada acima ou usando qualquer outro comando, se possível, então eu sei qual é qual.

    
por marko 22.04.2018 / 10:56

1 resposta

2

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.

    
por 22.04.2018 / 12:19