Comment monter une partition à partir d'un fichier image contenant plusieurs partitions sous Linux?

StackOverflow https://stackoverflow.com/questions/1419489

Question

Le fichier image a une table de partition et il contient plusieurs partitions.

Des périphériques en boucle pourraient être une possibilité.

Discussions connexes:

Était-ce utile?

La solution

Disons 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ù offset est calculé, les informations provenant de fdisk (secteur début * 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 bonne indication sur la façon de la réaliser. Si vous faites le travail une fois, vous avez un petit début sympa pour une boîte à outils médico-légale!

Autres conseils

Vous pouvez le faire comme ceci, sans trop de soucis:

# 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 l'option -P ( - partscan ) pour lire la table de partitions 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

automatisation losetup -P

losetup -P est la meilleure méthode à partir d'Ubuntu 16.04, comme indiqué à l'adresse https: // stackoverflow. com / a / 15200862/895245 , voici des fonctions à automatiser si vous le souhaitez. Utilisation:

$ 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

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 ancienne, mais juste pour être complet: Cela 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

Encore plus d'automatisation par rapport aux réponses précédentes.

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 à votre place. Obtenez-le simplement à partir de https://github.com/AlexanderAmelkin/mountimg . et 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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top