Le fichier image a une table de partition et il contient plusieurs partitions.
les périphériques de bouclage peuvent être une possibilité.
Sujets associés:
Supposons que $ IMAGE est défini sur le chemin d'accès à votre fichier image. Vous pouvez écrire un petit script en utilisant
fdisk -u sectors -l $IMAGE
pour obtenir une liste des partitions à l'intérieur de l'image. Et puis utilisez une séquence de
mount -o ro,loop,offset=$OFFSET -t auto $IMAGE /media/$DEST
Où l'offset est calculé signifie les informations de fdisk (secteur de départ * taille d'un secteur en octets) et $ DEST un nom unique pour chacune des partitions.
Ce n'est pas directement la solution mais j'espère une assez bonne indication sur la façon de la réaliser. Si vous faites le travail une fois, vous avez un petit bon début pour une boîte à outils médico-légale!
Vous pourriez le faire comme ça, sans trop de tracas:
# kpartx -v -a logging-test.img
add map loop0p1 (251:0): 0 497664 linear /dev/loop0 2048
add map loop0p2 (251:1): 0 66605058 linear /dev/loop0 501758
add map loop0p5 (251:2): 0 66605056 251:1 2
# ls /dev/mapper/
control loop0p1 loop0p2 loop0p5
# mount /dev/mapper/loop0p1 /mnt/test
# mount | grep test
/dev/mapper/loop0p1 on /mnt/test type ext2 (rw)
#
Et pour supprimer le périphérique de boucle après avoir terminé:
# kpartx -v -d logging-test.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0
#
Si vous avez util-linux v2.21 ou supérieur, vous pouvez maintenant le faire avec losetup. Utilisez le -P
(--partscan
) option pour lire la table de partition et créer des nœuds de périphérique pour chaque partition:
# losetup --show -f -P test.img
/dev/loop0
# ls /dev/loop0*
/dev/loop0
/dev/loop0p1
/dev/loop0p2
# mount /dev/loop0p1 /mnt/tmp
losetup -P
automatisation
losetup -P
est la meilleure méthode à partir d'Ubuntu 16.04 comme mentionné sur https://stackoverflow.com/a/15200862/895245 , voici des fonctions à automatiser si vous le souhaitez. Usage:
$ los my.img
/dev/loop0
/mnt/loop0p1
/mnt/loop0p2
$ ls /mnt/loop0p1
/whatever
/files
/youhave
/there
$ Sudo losetup -l
NAME SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE DIO
/dev/loop1 0 0 0 0 /full/path/to/my.img
$ # Cleanup.
$ losd 0
$ ls /mnt/loop0p1
$ ls /dev | grep loop0
loop0
La source:
los() (
img="$1"
dev="$(Sudo losetup --show -f -P "$img")"
echo "$dev"
for part in "$dev"?*; do
if [ "$part" = "${dev}p*" ]; then
part="${dev}"
fi
dst="/mnt/$(basename "$part")"
echo "$dst"
Sudo mkdir -p "$dst"
Sudo mount "$part" "$dst"
done
)
losd() (
dev="/dev/loop$1"
for part in "$dev"?*; do
if [ "$part" = "${dev}p*" ]; then
part="${dev}"
fi
dst="/mnt/$(basename "$part")"
Sudo umount "$dst"
done
Sudo losetup -d "$dev"
)
Ok, cette question est vieille, mais juste pour le sako de l'exhaustivité: Ceci ici me semble beaucoup plus facile.
Citation:
rmmod loop
modprobe loop max_part=63
losetup -f /path/to/your/disk/image.raw
mount /dev/loop0p1 /mnt/path
Un peu plus d'automatisation par rapport aux réponses précédentes qui étaient super.
Pour simplifier davantage la tâche (ce qui est nécessaire si vous le faites souvent), vous pouvez utiliser mon script mountimg
pour tout faire pour vous. Il suffit de l'obtenir auprès de https://github.com/AlexanderAmelkin/mountimg et d'utiliser comme ceci:
mountimg disk_image.img $PARTNO /mnt/mountpoint
Vous pouvez également spécifier le type de système de fichiers et toute autre option de montage supplémentaire si vous le souhaitez:
mountimg disk_image.img $PARTNO /mnt/mountpoint -t vfat -o codepage=866,iocharset=utf-8
Lorsque vous avez terminé avec la partition, il suffit de umount
:
umount /mnt/mountpoint