2009-09-14 24 views
35

¿Existe alguna forma nueva/mejor de montar particiones individuales desde un archivo que contenga una tabla de partición en Linux? Veo lo siguiente, pero están algo anticuados.loopback montaje de particiones individuales desde un archivo que contiene una tabla de particiones en linux

http://linux.derkeiler.com/Mailing-Lists/Kernel/2005-01/7183.html

http://lists.gnu.org/archive/html/grub-devel/2005-01/msg00077.html

ftp://ftp.hq.nasa.gov/pub/ig/ccd/enhanced_loopback/

+0

http://askubuntu.com/questions/69363/mount-single-partition-from-image-of-entire-disk-device || http://superuser.com/questions/117136/how-can-i-mount-a-partition-from-dd-created-image-of-a-block-device-e-g-hdd-u || http://unix.stackexchange.com/questions/9099/reading-a-filesystem-from-a-whole-disk-image –

Respuesta

25

Digamos $ IMAGEN se establece en la ruta a su archivo de imagen. Se podría escribir un pequeño script mediante el uso de

fdisk -u sectors -l $IMAGE 

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

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

Dónde compensado se calcula significa que la información de fdisk (sector de inicio * tamaño de un sector en bytes) y $ DEST un nombre único para cada una de las particiones.

Eso no es directamente la solución, pero espero que sea una buena indicación sobre cómo realizarlo. ¡Si haces el trabajo una vez, tienes un buen comienzo para un kit de herramientas forenses!

+1

Si bien esta respuesta funciona, la respuesta kpartx más reciente es realmente mejor; te da un único comando que hace que todas las particiones estén disponibles. – mkj

+1

Si bien kpartx es una buena herramienta, no está disponible en todos los sistemas. Varios sistemas integrados en los que trabajo no lo tienen de forma nativa y necesito montar particiones de imágenes de disco o incluso subparticiones de una partición. – gnac

+0

ejemplo de aplicación de la respuesta anterior para las imágenes de Raspibian: http://raspberrypi.stackexchange.com/a/13138/359 –

62

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 haber terminado:

# kpartx -v -d logging-test.img 
del devmap : loop0p2 
del devmap : loop0p1 
loop deleted : /dev/loop0 
# 
+10

También debería mencionar -d para romper la configuración. –

+1

Buen punto, gracias! Sin embargo, ahora no es útil la imagen de disco completo, por lo que los necesitados pueden necesitar man kpartx :-) –

+4

Para derribarlo, simplemente reemplaza "-a" por "-d"; en el ejemplo aquí sería kpartx -v -d logging-test.img – mkj

35

Si tiene v2.21 util-linux o superior, ahora se puede hacer esto con losetup. Utilice la opción -P (--partscan) 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 
+1

no funciona para mí. utilizando util-linux-ng 2.22.2, obtengo solamente/dev/loop0 ... –

+2

Utilicé losetup de util-linux 2.22.2 satisfactoriamente como se describió anteriormente (paquete Mageia 3 util-linux-2.22.2-5.mga3 .src.rpm). – kbulgrien

+0

Sin embargo, una cosa que noté es que usar root, en lugar de sudo, marcó la diferencia tanto si funcionaba como si no. – kbulgrien

3

Ok, esta pregunta es eones de edad, pero sólo por el Sako de exhaustividad: This here parece mucho más fácil para mí .

Cita:

rmmod loop 
modprobe loop max_part=63 
losetup -f /path/to/your/disk/image.raw 
mount /dev/loop0p1 /mnt/path 
+1

Esto falla en Ubuntu 14.04 porque el módulo 'loop' está incorporado para que' rmmod' no funcione. Cómo arreglar eso: http://askubuntu.com/a/673257/52975 –

5

losetup -P automatización

losetup -P es el mejor método de arranque en Ubuntu 16.04 como se mencionó al https://stackoverflow.com/a/15200862/895245, aquí están las funciones para automatizar aún más si. 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" 
) 
0

Algunos mayor automatización de las respuestas anteriores que eran grandes.

Para simplificar aún más la tarea (que es necesaria si lo hace a menudo), puede usar mi secuencia de comandos mountimg para hacer todo por usted.Sólo obtener de https://github.com/AlexanderAmelkin/mountimg y el uso de la siguiente manera:

mountimg disk_image.img $PARTNO /mnt/mountpoint 

Usted puede también especificar el tipo de sistema de archivos y las opciones de montaje cualquier otro 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 , sólo tiene que umount:

umount /mnt/mountpoint 
Cuestiones relacionadas