बिना किसी विभाजन के USB ड्राइव की छवि बनाएं


13

मेरे पास मेरे सिस्टम से जुड़ी 8GB USB ड्राइव है जो इस तरह दिखती है:

[root@host]# fdisk -l /dev/sdb

Disk /dev/sdb: 8462 MB, 8462008320 bytes
255 heads, 63 sectors/track, 1028 cylinders
Units = cylinders of 16065 * 512 = 8225280 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x5c0894d9

Device Boot      Start         End      Blocks   Id  System
/dev/sdb1   *           1           9       72261    e  W95 FAT16 (LBA)
/dev/sdb2              10         103      755055   83  Linux
[root@host]# 

तो मूल रूप से मेरा एफएटी विभाजन 70 एमबी के आसपास है, एक्सटी 2 विभाजन 740 एमबी के आसपास है और बाकी जगह (~ 7 जीबी) बिना लाइसेंस के है। अब जब मैंने अपने USB हार्ड ड्राइव को dd के माध्यम से देखा:

dd if=/dev/sdb of=myimage.img bs=1M

आउटपुट फ़ाइल (myimage.img) लगभग 8GB है जो dd का सामान्य ऑपरेशन है।

प्रश्न: मैं जिस चीज़ की तलाश कर रहा हूं, वह बिना किसी असंबद्ध स्थान के सीधे मेरी USB हार्ड ड्राइव को क्लोन करने का एक तरीका है ताकि मेरी परिणामी फ़ाइल 8 जीबी के बजाय लगभग 1 जीबी असम्पीडित हो । कारण मैं पूछ रहा हूं क्योंकि छवि को बूट करने के लिए एक सिम्युलेटर प्रोग्राम द्वारा आउटपुट फाइल (myimage.img) का उपयोग किया जा रहा है। सिम्युलेटर 8 जीबी फ़ाइलों को संभाल सकता है लेकिन मैं अपनी डिस्क स्थान को बर्बाद नहीं करना चाहता हूं।


1
यह दिलचस्प समाधान के साथ कुछ इसी तरह की समस्या है: serverfault.com/q/281628/141604
सप्ताह

जवाबों:


15

अगर मैं सही तरीके से समझूं, तो आप डिस्क के शुरू से लेकर पिछले विभाजन के अंत तक एक छवि बनाना चाहते हैं।

इसके लिए पैरामीटर ddयह है count=। आपका अंतिम विभाजन 103 पर समाप्त होता है, और गिनती को 1 अतिरिक्त (104) होना चाहिए और आपकी इकाई का आकार 8225280 बाइट्स ( fdisk -lआउटपुट के अनुसार ) है। तो आप बस अपने आदेश को इस तरह से संशोधित कर सकते हैं:

dd if=/dev/sdb of=myimage.img bs=8225280 count=104

हालाँकि, मैं सुझाव दूंगा कि आप fdisk -u -l /dev/sdbइसके बजाय दौड़ें । इस युग में सिलेंडर वास्तव में प्रासंगिक नहीं हैं, इसलिए यदि आप किसी भी गोल त्रुटियों से बचने के लिए सेक्टर गणना देखते हैं तो आप बेहतर हैं। फिर आपको दौड़ना होगा:

dd if=/dev/sdb of=myimage.img count=...

आप से मिल गया, जहां गिनती संख्या पर निर्धारित किया जाएगा fdisk -u -lपिछले विभाजन के अंत में प्लस वन , बजाय क्या 104. होने के लिए के लिए डिफ़ॉल्ट ब्लॉक आकार का उपयोग की dd512 बाइट्स, जो भी इकाई है कि है fdisk -u -lउत्पादन में प्रयोग करेंगे।

GPT विभाजन की बैकअप पार्टीशन टेबल डिस्क के अंत में संग्रहीत होती है, लेकिन चूंकि आप GPT का उपयोग नहीं कर रहे हैं, आप ठीक रहेंगे।


2

आपको केवल dd को बताने की जरूरत है कि आप जिस ड्राइव में रुचि रखते हैं उसके हिस्से को पढ़ें। आप जिस पैरामीटर की तलाश कर रहे हैं count

इसलिए अपने सिलेंडर का साइज़ 8,225,280 लें और 103 के इस्तेमाल में सिलिंडर की संख्या का गुणा करें और आपको 847,203,840 बाइट्स मिलें। चूंकि आप एक मेगाबाइट ब्लॉक आकार का उपयोग कर रहे हैं, इसलिए उस बाइट को मेगाबाइट में परिवर्तित करें जो 808 है।

तो आपकी आज्ञा है dd if=... of=... bs=1M count=808

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.