C'è un modo per prendere un file img del disco che è suddiviso in parti e montarlo come un dispositivo a loop singolo?
C'è un modo per prendere un file img del disco che è suddiviso in parti e montarlo come un dispositivo a loop singolo?
Risposte:
Non penso che tu possa farlo sul posto, ma se hai abbastanza spazio questo dovrebbe funzionare:
# 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
Non è possibile semplicemente creare un array RAID dai file originali poiché i dischi RAID hanno un'intestazione specifica in cui è memorizzato il numero di dischi, il livello RAID, ecc. Se lo fai, quella parte dei tuoi file originali verrà sovrascritta.
È possibile utilizzare il mdadm --build
per creare un array senza metadati, ma è necessario prima effettuare un backup. O se è sufficiente il montaggio in sola lettura:
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
Perchè vuoi fare questo? Se il tuo filesystem non è in grado di gestire file> 4GB, dovresti semplicemente passare a uno sano.
truncate
invece dd
che in quanto è molto più veloce (non esegue la scrittura effettiva su FS ma alloca solo gli inode e contrassegna il file come contenente solo il foro).
Per montare un'immagine del disco divisa (o immagine della partizione) è necessario utilizzare affuse
dagli afftools che sono attualmente gestiti qui: https://github.com/sshock/AFFLIBv3
Pertanto, se si dispone di un file, suddividere in più file secondari 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
allora puoi unirti praticamente a loro 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
(questo combina tutti i file insieme a partire dal file 000, quindi 001, 002, ...)
E quindi montare l'immagine
mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test
L'uso è descritto qui e alcuni esempi qui . Una manpage è disponibile anche dopo la compilazione e l'installazione, o qui .
PS: Per me ha affuse
funzionato solo se i file divisi avevano una dimensione che era un multiplo di 512 byte.
Potresti scrivere la tua estensione del dispositivo di archiviazione a blocchi (pensa all'estensione simile a un fusibile) ed eseguire le ricerche in modo dipendente dall'indirizzo.
Qui puoi trovare un esempio di come utilizzare il fusibile https://github.com/libfuse/python-fuse/blob/master/example/hello.py
La cosa più vicina che conosco finora a una soluzione è creare una VM VMware. Avvii un CD live Linux come Rescatux o Knoppix, crei una cartella condivisa SMB sul tuo computer host, monti quella condivisione SMB sulla tua VM e poi dd
l'immagine nell'HD virtuale. VMware per impostazione predefinita salva le immagini del disco come file divisi, quindi questa è la cosa più vicina alla lettura diretta di un'immagine del disco suddivisa in più file.
Successivamente, se si desidera accedere ai file dal computer host, è possibile provare ad aggiungere un secondo HD virtuale all'immagine e a copiarne i file. Quindi imposta una cartella condivisa SMB sulla VM e ti connetti ad essa dal tuo host. In questo modo è possibile, ad esempio, violare il limite di 4 GB di file di FAT32 nel caso in cui si stia utilizzando un iPod Classic (che utilizza solo fat32) o la scheda SD del proprio smartphone (in genere è necessario installare una ROM personalizzata per per utilizzare Ext3 o NTFS sulla memoria esterna, per questo è necessario un telefono di un produttore popolare come Samsung o Motorola, quindi se si dispone di uno smartphone cinese si è sconcertati).
Non è certamente una soluzione efficiente, tuttavia, ma dato che sono stato limitato non potendo usare FS diverso da fat32 sul mio iPod Classic o sui miei smartphone Samsung con ROM di riserva, ho cercato praticamente tutto Internet in passato e ancora non riesco a trovare una soluzione efficiente a questo. Potrei anche doverlo scrivere da solo.
PS: Hai dimenticato di dire che se sei su Windows questo potrebbe essere l'unico modo per farlo.
Sotto BSD puoi usare l'opzione union per montare. Sotto Linux puoi provare a unionFS.