मैं प्रत्येक विभाजन के लिए अलग-अलग फ़ाइलों में 'dd' के साथ बनाई गई ड्राइव छवि को कैसे विभाजित कर सकता हूं?


9

मैंने एक असफल ड्राइव की छवि बनाई है:

dd if=/dev/sde of=/mnt/image001.dd

ड्राइव में केवल दो विभाजन थे:

   Device Boot      Start         End      Blocks   Id  System
/dev/sde1   *           1          13      102400    7  HPFS/NTFS
/dev/sde2              13       60802   488282112    7  HPFS/NTFS

मैं छवि (image001.dd) को दो या तीन फ़ाइलों (1: एमबीआर? 2: विभाजन 1; 3: विभाजन 2) में कैसे विभाजित कर सकता हूं ताकि मैं इसमें फाइल सिस्टम को माउंट कर सकूं?

एक समाधान जो मैंने पाया है कि मेरे लिए काम नहीं करेगा splitकई 512K फाइलें बनाने के लिए उपयोग करना है, फिर catउन्हें एक साथ तीन फाइलों (1: 512K, 2: 105M, 3: बाकी) में वापस करना है, लेकिन मेरे पास नहीं है उस के लिए डिस्क स्थान।

इतिहास:
मैंने पहले ही पूरी छवि को एक नई ड्राइव में कॉपी कर लिया है, और यह बूट करता है और ज्यादातर काम करता है। ऐसा लगता है कि एफएस को पुराने फेलिंग ड्राइव पर भ्रष्ट किया गया था, और ddदूषित भागों (जैसा कि यह होना चाहिए) की नकल की, और मैंने उन्हें नई ड्राइव पर लिखा। मेरा समाधान एफएस को माउंट करना है जिसे मैंने कॉपी किया और कॉपी केवल फाइलों (उपयोग rsyncया कुछ) की नकल की ताकि उम्मीद है कि मैं खराब बिट्स की नकल नहीं करूंगा।

अद्यतन 1 : मैंने कोशिश की है, dd if=/mnt/image001.dd of=/mnt/image001.part1.dd bs=512 count=204800 skip=1लेकिन mountशिकायत है कि NTFS signature is missing, मुझे लगता है कि मैंने इसे सही नहीं किया।

जवाबों:


17

आपको इसे बिल्कुल भी विभाजित करने की आवश्यकता नहीं है।

partedविभाजन तालिका के बारे में विवरण प्राप्त करने के लिए उपयोग करें :

parted image001.dd

में parted, आदेश के साथ बाइट इकाइयों के लिए स्विच u, तो B। उसके बाद, कमांड जारी करें print

आपको एक आउटपुट मिलेगा जो इस तरह दिखता है (आउटपुट वास्तविक सिस्टम से है, इमेज नहीं):

Model: Virtio Block Device (virtblk)
Disk /dev/vda: 25165824000B
Sector size (logical/physical): 512B/512B
Partition Table: msdos

Number  Start         End           Size          Type     File system     Flags
 2      1048576B      400556031B    399507456B    primary  ext4            boot
 3      400556032B    21165506559B  20764950528B  primary  ext4
 1      21165506560B  25164775423B  3999268864B   primary  linux-swap(v1)

आप Startलूपबैक माउंट के लिए ऑफसेट के रूप में संख्या का उपयोग कर सकते हैं :

mount -o loop,ro,offset=400556032 image001.dd /mnt/rescue

पर तीसरे विभाजन को माउंट करेगा /mnt/rescue


यह और kpartxमेरी समस्या का समाधान। मैंने यह उत्तर इसलिए चुना क्योंकि मैं कल्पना करूँगा कि partedयह अधिक सामान्य है kpartx, हालाँकि kpartxयह थोड़ा आसान है।
जो ए

16

यह केवल kpartxउपकरण का उपयोग करने के लिए बेहतर है ।

usage : kpartx [-a|-d|-l] [-v] wholedisk
    -a add partition devmappings
    -d del partition devmappings
    -l list partitions devmappings that would be added by -a
    ...

उदाहरण:

# kpartx -l whole_disk # only listing
loop0p1 : 0 518144 /dev/loop0 2048
loop0p2 : 0 3674112 /dev/loop0 520192
# kpartx -a whole_disk 
# file -sL /dev/mapper/loop0p*
/dev/mapper/loop0p1: Linux/i386 swap file (new style), version 1 (4K pages), size 64767 pages, no label, UUID=e4990860-c87d-4850-9e8d-ecb0a0506516
/dev/mapper/loop0p2: SGI XFS filesystem data (blksz 4096, inosz 256, v2 dirs)

इस बिंदु पर मैं माउंट कर सकता हूं /dev/mapper/loop0p2

kpartx -d whole_diskसफाई करने के लिए अनमाउंट कॉल करने के बाद।


1
+1 यह अच्छा है, उस टूल के बारे में कभी नहीं सुना।
स्वेन

यह दोनों एक SvenW का जवाब बहुत अच्छी तरह से काम करता है! दोनों ने मुझे ड्राइव छवि के भीतर एक विभाजन को माउंट करने दिया।
जो ए
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.