He creado una imagen de mi tarjeta SD Raspberry Pi usando dd
:
sudo dd if=/dev/sdf of=/home/myusername/raspberry-backup-2014-04-10.img
La tarjeta SD incluye dos particiones (una vfat, una ext4) que se montan automáticamente cuando enchufo la tarjeta.
Mi pregunta: ¿Cómo puedo montar estas particiones desde el archivo .img?
Más detalles:
$ fdisk -l raspberry-backup-2014-04-10.img
Disk raspberry-backup-2014-04-10.img: 3974 MB, 3974103040 bytes
255 heads, 63 sectors/track, 483 cylinders, total 7761920 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x000981cb
Device Boot Start End Blocks Id System
raspberry-backup-2014-04-10.img1 8192 122879 57344 c W95 FAT32 (LBA)
raspberry-backup-2014-04-10.img2 122880 7761919 3819520 83 Linux
wrong fs type, bad option, bad superblock on /dev/loop0, missing codepage or helper program, or other error
problemasudo fdisk -l /dev/loop0
afirma: Disk / dev / loop0 no contiene una tabla de partición válida.Respuestas:
Para evitar la necesidad de crear imágenes separadas para cada partición o instalar una utilidad como
kpartx
, puede montar cada partición individualmente especificando unaoffset
en elmount
comando.Primero examine las particiones en el archivo de imagen y determine el desplazamiento usando
fdisk
:Tome el
Start
sector de la partición que desee y multiplique ese valor por elUnits
tamaño. Entonces, si quieres la segunda partición obtendrás540672 * 512 = 276824064
.Ahora cree una carpeta y monte la partición:
Una vez que haya terminado de hacer lo que desea con los datos de partición:
fuente
Después de algunas pruebas adicionales, encontré la solución yo mismo:
kpartx
Este comando creado
/dev/mapper/loop0p1
y/dev/mapper/loop0p2
. Luego, estas particiones se pueden montar directamente:fuente
si su objetivo es explorar o modificar el contenido de una partición (sistema de archivos), esta línea de comando montará el sistema de archivos de la tarjeta sd dump my_sdcard_dump.img en el directorio mount_dir .
fuente
Tratar con una imagen de un disco completo con múltiples particiones es bastante complicado . Linux no fue diseñado para leer una tabla de particiones de un archivo normal, incluso cuando está conectado a un dispositivo de bucle invertido, por lo que debe identificar cuidadosamente los desplazamientos de las particiones y pasarlas al
mount
comando.La forma preferible sería crear imágenes separadas de cada partición:
Ahora puede tratar fácilmente estos archivos como si fueran particiones individuales en un disco, montándolos como lo haría normalmente con una partición de disco real, asignándolos a un dispositivo de bucle . Un dispositivo de bucle, o dispositivo de bucle invertido, es un dispositivo virtual que proporciona una capa de traducción para que Linux trate un archivo como un dispositivo de bloque (como un disco o partición).
Los dispositivos de bucle son típicamente a
/dev/loop0
través/dev/loop8
. Identifique un dispositivo de bucle no utilizado con ellosetup
comando:Esta respuesta indica un dispositivo de bucle no asignado. Ahora podemos asignar el dispositivo de bucle a uno de nuestros archivos de imagen:
La ausencia de salida de este comando indica éxito. Ahora
/dev/loop0
es para la mayoría de los propósitos funcionalmente equivalente a/dev/sdf1
su tarjeta SD, y puede montarla como lo haría normalmente:Repita el proceso utilizando otro dispositivo de bucle para montar la otra partición. Cuando haya terminado, desmonte los sistemas de archivos y desasigne los dispositivos de bucle:
fuente