Comment monter plusieurs partitions à partir d'une image disque simultanément?

9

J'essaie de monter la partition racine et de démarrage de l' image Raspbian :

mount -v -o offset="70254592" -t ext4 /mnt/X/raspbian-jessie.img /tmp/raspbian
mount -v -o offset="4194304" -t vfat /mnt/X/raspbian-jessie.img /tmp/boot

le montage du démarrage, lorsque root est monté se traduit par:

mount: /mnt/X/raspbian-jessie.img: overlapping loop device exists

Comment monter plusieurs partitions sur une même image disque en même temps? (pour les disques c'est évidemment possible, pourquoi pas pour les fichiers?)

Grzegorz Wierzowiecki
la source

Réponses:

6

option losetup 2.21 -P

losetup -P -f --show my.img

Crée un /dev/loopXpYpar partition.

Avantage: exécutable pré-installé dans de nombreuses distributions (paquet util-linux).

Inconvénient: option assez récente, non présente dans Ubuntu 14.04, avant cela, utilisez simplement kpartx: https://unix.stackexchange.com/a/405639/32558

losetup -P automatisation

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"
)
Ciro Santilli 冠状 病毒 审查 六四 事件 法轮功
la source
7

Vous devez spécifier la longueur de la ou des partitions pour éviter le chevauchement. Option sizelimit, voir man mount, man losetup.

dirkt
la source
1

Utilisez l' kpartxoutil. Il cartographiera les partitions d'images à l'aide /dev/mapperdesquelles vous pourrez monter directement.

$ sudo kpartx -a disk.img
$ sudo mount -o loop /dev/mapper/loop0p2 /mnt

PS. N'oubliez pas de supprimer les mappages une fois que vous avez terminé:sudo kpartx -d disk.img

smokku
la source