¿Cómo montar una partición desde un archivo de imagen que contiene varias particiones en Linux?


El archivo de imagen tiene una tabla de particiones y contiene varias particiones.

Los dispositivos de bucle invertido podrían ser una posibilidad.

Temas relacionados:

6 answers

Digamos que IMAGE IMAGE se establece en la ruta a su archivo de imagen. Puedes escribir un pequeño script usando

fdisk -u sectors -l $IMAGE

Para obtener una lista de particiones dentro de la imagen. Y luego utilizar una secuencia de

mount -o ro,loop,offset=$OFFSET -t auto $IMAGE /media/$DEST

Donde se calcula el desplazamiento significa la información de fdisk (start sector * tamaño de un sector en bytes) y $DEST un nombre único para cada una de las particiones.

Esa no es directamente la solución, pero espero que una buena indicación sobre cómo realizarlo. Si haces el trabajo una vez, has un pequeño buen comienzo para algunas herramientas forenses!​​​​​​​​​​​​​​​​​​​​​

 25
Author: jdehaan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-08-12 20:43:59

Puedes hacerlo así, sin mucha molestia:

# 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)
#

Y para quitar el dispositivo de bucle después de terminar:

# kpartx -v -d logging-test.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0
#
 69
Author: Andrew Y,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-06 18:45:26

Si tiene util-linux v2.21 o superior, ahora puede hacer esto con losetup. Utilice el -P (--partscan) opción para leer la tabla de particiones y crear nodos de dispositivo para cada partición:

# losetup --show -f -P test.img
/dev/loop0

# ls /dev/loop0*
/dev/loop0
/dev/loop0p1
/dev/loop0p2

# mount /dev/loop0p1 /mnt/tmp
 43
Author: Andrew Oakley,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-03-11 00:33:10

losetup -P automatización

losetup -P es el mejor método a partir de Ubuntu 16.04 como se menciona en https://stackoverflow.com/a/15200862/895245 , aquí hay funciones para automatizar si más. 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"
)
 6
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-20 11:23:32

Ok, esta pregunta es eones de edad, pero solo para el sako de la integridad: Esto aquí me parece mucho más fácil.

Cita:

rmmod loop
modprobe loop max_part=63
losetup -f /path/to/your/disk/image.raw
mount /dev/loop0p1 /mnt/path
 3
Author: Pfiver,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-03 12:17:15

Algo más de automatización a las respuestas anteriores que fueron geniales.

Para simplificar aún más la tarea (que es necesaria si lo haces a menudo), puedes usar mi script mountimg para hacer todo por ti. Solo consíguelo de https://github.com/AlexanderAmelkin/mountimg y usar así:

mountimg disk_image.img $PARTNO /mnt/mountpoint

También puede especificar el tipo de sistema de archivos y cualquier otra opción de montaje adicional si lo desea:

mountimg disk_image.img $PARTNO /mnt/mountpoint -t vfat -o codepage=866,iocharset=utf-8

Cuando haya terminado con la partición, simplemente umount es:

umount /mnt/mountpoint
 0
Author: Alexander Amelkin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-11-11 10:18:10