¿Hay alguna manera de tomar un archivo img de disco que se divide en partes y montarlo como un dispositivo de bucle único?
¿Hay alguna manera de tomar un archivo img de disco que se divide en partes y montarlo como un dispositivo de bucle único?
Respuestas:
No creo que pueda hacerlo en su lugar, pero si tiene suficiente espacio, esto debería funcionar:
# Create the files that will hold your data
dd if=/dev/zero of=part-00 bs=1M count=4k
dd if=/dev/zero of=part-01 bs=1M count=4k
# Create the loop devices
losetup /dev/loop0 part-00
losetup /dev/loop1 part-01
# Create a RAID array
mdadm --create /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
# Copy the original filesystem
dd if=original-file-00 of=/dev/md0 bs=512
# Look at the records written value
dd if=original-file-01 of=/dev/md0 bs=512 seek=<sum of records written values so far>
# Mount the new filesystem
mount /dev/md0 /mnt
No puede simplemente crear una matriz RAID a partir de los archivos originales porque los discos RAID tienen un encabezado específico donde se almacena la cantidad de discos, el nivel RAID, etc. Si lo hace, se sobrescribirá parte de sus archivos originales.
Puede usar el mdadm --build
para crear una matriz sin metadatos, pero primero debería hacer una copia de seguridad. O si el montaje de solo lectura es suficiente:
losetup -r /dev/loop0 original-00
losetup -r /dev/loop1 original-11
mdadm --build /dev/md0 --level=linear --raid-devices=2 /dev/loop0 /dev/loop1
mount /dev/md0 /mnt
¿Por qué quieres hacer esto? Si su sistema de archivos no puede manejar archivos> 4GB, debería cambiar a uno sensato.
truncate
lugar de hacerlo, dd
ya que es mucho más rápido (no realiza una escritura real en FS sino que solo asigna inodes y marca el archivo como que solo contiene un agujero).
Para montar una imagen de disco dividido (o una imagen de partición), debe usar affuse
las afftools que actualmente se mantienen aquí: https://github.com/sshock/AFFLIBv3
Entonces, si tiene un archivo, divídalo en varios subarchivos test_img.000, test_img.001, test_img.002, test_img.003, test_img.004, test_img.005, test_img.006, test_img.007, test_img.008, test_img.009
entonces puedes unirlos virtualmente con affuse
# affuse test_img.000 /mnt/combine
# ls -lh /mnt/combine
total 0
-r--r--r-- 1 root root 2.0G 1969-12-31 16:00 test_img.000.raw
(esto combina todos los archivos juntos comenzando con el archivo 000, luego 001, 002, ...)
Y luego montar la imagen
mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test
El uso se describe aquí y algunos ejemplos aquí . Una página de manual también está disponible después de compilar e instalar, o aquí .
PD: para mí affuse
solo funcionaba si los archivos divididos tenían un tamaño que era un múltiplo de 512 bytes.
Puede escribir su propia extensión de dispositivo de almacenamiento en bloque (piense en una extensión tipo fusible) y realizar búsquedas dependiendo de cuál sea la dirección.
Aquí puede encontrar un ejemplo de cómo usar el fusible https://github.com/libfuse/python-fuse/blob/master/example/hello.py
Lo más cercano que conozco hasta ahora a una solución es crear una VM VMware. Inicia un CD en vivo de Linux como Rescatux o Knoppix, crea una carpeta compartida SMB en su computadora host, monta ese recurso compartido SMB en su VM y luego coloca dd
la imagen en el HD virtual. VMware guarda de manera predeterminada sus imágenes de disco como archivos divididos, por lo que esto es lo más parecido a leer directamente una imagen de disco dividida en múltiples archivos.
Más adelante, si desea acceder a los archivos desde su computadora host, puede intentar agregar un segundo HD virtual a la imagen y copiar los archivos allí. Luego configura una carpeta compartida SMB en la VM y se conecta desde su host. De esta manera, puede, por ejemplo, violar el límite de archivos de 4 GB de FAT32 en el caso de que esté usando un iPod Classic (que solo engorda fat32), o la tarjeta SD de su teléfono inteligente (generalmente tiene que instalar una ROM personalizada para para usar Ext3 o NTFS en el almacenamiento externo, para esto necesita un teléfono de un fabricante popular como Samsung o Motorola, por lo que si tiene un teléfono inteligente chino está perplejo).
Sin embargo, ciertamente no es una solución eficiente, pero dado que he estado limitado por no poder usar ningún FS que no sea fat32 en mi iPod Classic o mis teléfonos inteligentes Samsung con ROM de stock, he explorado casi todo el Internet en el pasado y todavía no puedo encontrar una solución eficiente para esto. Incluso podría tener que escribirlo yo mismo.
PD: Olvidé mencionar que si estás en Windows, esta podría ser la única forma de hacerlo.
Bajo BSD puede usar la opción de unión para montar. En Linux puedes probar unionFS.