unidad - ¿Cómo montar una partición desde un archivo de imagen que contiene varias particiones en Linux?
tamaño de particiones linux (6)
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:
Digamos que $ IMAGE se establece en la ruta a su archivo de imagen. Podrías escribir un pequeño script usando
fdisk -u sectors -l $IMAGE
para obtener una lista de particiones dentro de la imagen. Y luego usa 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 (tamaño de sector de inicio * 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 una buena indicación sobre cómo realizarla. ¡Si haces el trabajo una vez, tienes un pequeño y agradable comienzo para un conjunto de herramientas forenses!
Ok, esta pregunta es vieja, pero solo por el sako de la integridad: esto aquí me parece mucho más fácil.
Citar:
rmmod loop
modprobe loop max_part=63
losetup -f /path/to/your/disk/image.raw
mount /dev/loop0p1 /mnt/path
Podrías 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 eliminar el dispositivo de bucle después de que haya terminado:
# kpartx -v -d logging-test.img
del devmap : loop0p2
del devmap : loop0p1
loop deleted : /dev/loop0
#
Si tiene util-linux v2.21 o superior, ahora puede hacer esto con losetup. Use la opción -P
( --partscan
) para leer la tabla de particiones y crear nodos de dispositivos 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
Un poco 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 obténgalo en https://github.com/AlexanderAmelkin/mountimg y use 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
:
umount /mnt/mountpoint
losetup -P
automatización
losetup -P
es el mejor método que comienza en Ubuntu 16.04 como se menciona en https://.com/a/15200862/895245 , aquí hay funciones para automatizar si es 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"
)