Apakah ada cara untuk mengambil file img disk yang dipecah menjadi beberapa bagian dan memasangnya sebagai perangkat loop tunggal?
Apakah ada cara untuk mengambil file img disk yang dipecah menjadi beberapa bagian dan memasangnya sebagai perangkat loop tunggal?
Jawaban:
Saya tidak berpikir Anda bisa melakukannya di tempat tetapi jika Anda memiliki cukup ruang, ini akan berfungsi:
# 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
Anda tidak bisa begitu saja membuat array RAID dari file asli karena disk RAID memiliki header spesifik tempat jumlah disk, level RAID, dll disimpan. Jika Anda melakukannya, bagian dari file asli Anda akan ditimpa.
Anda dapat menggunakan mdadm --build
untuk membuat array tanpa metadata tetapi kemudian Anda benar-benar harus membuat cadangan terlebih dahulu. Atau jika mount baca-saja sudah cukup:
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
Mengapa Anda ingin melakukan ini? Jika sistem file Anda tidak dapat menangani file> 4GB, Anda hanya perlu beralih ke file yang waras.
truncate
alih-alih dd
karena jauh lebih cepat (itu tidak melakukan penulisan aktual ke FS tetapi hanya mengalokasikan inode dan menandai file sebagai hanya berisi lubang).
Untuk memasang image disk split (atau gambar partisi), Anda harus menggunakan affuse
dari afftools yang saat ini dikelola di sini: https://github.com/sshock/AFFLIBv3
Jadi, jika Anda memiliki file, bagi menjadi beberapa subfile 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
maka Anda dapat bergabung dengan mereka secara virtual 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
(ini menggabungkan semua file bersama-sama dimulai dengan file 000, lalu 001, 002, ...)
Dan kemudian pasang gambar
mount -o ro,loop,offset=329043456 /mnt/combine/test_img.000.raw /mnt/test
Penggunaannya dijelaskan di sini dan beberapa contoh di sini . Halaman manual juga tersedia setelah dikompilasi dan diinstal, atau di sini .
PS: Bagi saya affuse
hanya berfungsi jika file split memiliki ukuran yang merupakan kelipatan dari 512 byte.
Anda dapat menulis ekstensi perangkat penyimpanan blok Anda sendiri (pikirkan ekstensi seperti sekering) dan lakukan pencarian dengan bergantung pada apa alamatnya.
Di sini Anda dapat menemukan contoh cara menggunakan sekering https://github.com/libfuse/python-fuse/blob/master/example/hello.py
Hal terdekat yang saya tahu sejauh ini untuk solusi adalah membuat VM VMware. Anda memulai CD live Linux seperti Rescatux atau Knoppix, Anda membuat folder bersama SMB di komputer host Anda, Anda me-mount share SMB pada VM Anda, dan kemudian Anda dd
gambar ke HD virtual. VMware secara default menyimpan gambar disk-nya sebagai file-file terpecah, jadi ini adalah hal yang paling dekat dengan membaca secara langsung gambar disk dibagi menjadi beberapa file.
Kemudian, jika Anda ingin mengakses file dari komputer host Anda, Anda dapat mencoba menambahkan HD virtual kedua ke gambar dan menyalin file di sana. Kemudian Anda mengatur folder bersama SMB pada VM dan menghubungkannya dari host Anda. Dengan cara ini Anda dapat, misalnya, melanggar batas file 4 GB FAT32 jika Anda menggunakan iPod Classic (yang hanya menimbun fat32), atau kartu SD ponsel cerdas Anda (biasanya Anda harus menginstal ROM kustom untuk memesan untuk menggunakan Ext3 atau NTFS pada penyimpanan eksternal, untuk ini Anda memerlukan ponsel dari pabrikan populer seperti Samsung atau Motorola, jadi jika Anda memiliki ponsel cerdas China Anda bingung).
Ini memang bukan solusi yang efisien, tetapi karena saya dibatasi oleh tidak dapat menggunakan FS selain fat32 pada iPod Classic saya atau smartphone Samsung saya dengan stock ROM, saya telah menjelajahi hampir seluruh internet di internet. masa lalu dan masih belum dapat menemukan solusi yang efisien untuk ini. Saya bahkan mungkin harus menulisnya sendiri.
PS: Lupa menyebutkan, bahwa jika Anda menggunakan Windows ini mungkin satu-satunya cara untuk melakukan ini.
Di bawah BSD Anda dapat menggunakan opsi union untuk melakukan mount. Di Linux, Anda dapat mencoba UnionFS.