¿Cómo montar múltiples particiones desde la imagen de disco simultáneamente?

9

Estoy tratando de montar la partición raíz y de arranque de la imagen 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

montaje de arranque, cuando se monta la raíz resulta en:

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

¿Cómo montar múltiples particiones en una imagen de disco al mismo tiempo? (para los discos es obviamente posible, ¿por qué no para los archivos?)

Grzegorz Wierzowiecki
fuente

Respuestas:

6

opción losetup 2.21 -P

losetup -P -f --show my.img

Crea uno /dev/loopXpYpor partición.

Ventaja: ejecutable preinstalado en muchas distribuciones (paquete util-linux).

Desventaja: opción bastante reciente, no presente en Ubuntu 14.04, antes de eso solo use kpartx: https://unix.stackexchange.com/a/405639/32558

losetup -P automatización

Uso:

$ 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

Fuente:

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 冠状 病毒 审查 六四 事件 法轮功
fuente
7

Debe especificar la longitud de las particiones para evitar la superposición. Opción sizelimit, ver man mount, man losetup.

dirkt
fuente
1

Usar kpartxherramienta Asignará particiones de imágenes con las /dev/mapperque puede montar directamente.

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

PD. No olvide eliminar las asignaciones una vez que haya terminado:sudo kpartx -d disk.img

smokku
fuente