Dd if = / dev / zero of = / dev / sda एक पूर्व-मौजूदा विभाजन तालिका मिटा देगा?


13

क्या # dd if=/dev/zero of=/dev/sdaपहले से मौजूद पार्टीशन टेबल को मिटा देंगे ?

या यह दूसरी तरह के आसपास है, यानी, करता है

# fdisk /dev/sda g (GPT के लिए)

द्वारा लिखे गए शून्य को मिटा दें /dev/zero?


6
वह /dev/zeroकुछ मिटा नहीं रहा है, वह ddउस पर नकल करके उसे मिटा रहा है। जो तथ्य बाइट्स शून्य होते हैं, और शून्य बाइट्स शून्य /dev/zeroके कुछ अन्य स्रोत के बजाय से आते हैं, वे मामूली विवरण हैं।
क्राइसिस -ऑन स्ट्राइक- 3

2
यदि आप सिर्फ विभाजन तालिका को पोंछना चाहते हैं, तो wipefs अधिक विश्वसनीय हो सकता है।
पाइप

जवाबों:


23

क्या dd if=/dev/zero of=/dev/sdaपहले से मौजूद पार्टीशन टेबल को मिटा देंगे ?

हां, विभाजन तालिका ड्राइव के पहले भाग में है, इसलिए इस पर लिखना इसे नष्ट कर देगा। यही कारण है कि ddपूरे ड्राइव पर लिखना है, तो आप इसे चलाते हैं (इसलिए यह काफी कुछ समय ले जाएगा) करने देगा।

dd bs=512 count=50 if=/dev/zero of=/dev/sdaएमबीआर विभाजन तालिका और प्राथमिक जीपीटी सहित पहले 50 क्षेत्रों को अधिलेखित करने के लिए कुछ ऐसा ही होगा। यद्यपि विकिपीडिया के अनुसार कम से कम, GPT के पास ड्राइव के अंत में विभाजन तालिका की एक द्वितीयक प्रति है , इसलिए ड्राइव के सिर में सिर्फ हिस्सा ही नहीं लिखा जा सकता है।

(आप का उपयोग नहीं करना है dd, हालांकि। head -c10000 /dev/zero > /dev/sdaया cat /bin/ls > /dev/sdaएक ही प्रभाव होगा।)

करता है fdisk /dev/sda g(GPT के लिए) शून्य / dev / शून्य द्वारा लिखित का सफाया?

हां भी (बशर्ते आप बदलावों को बचाएं)।

(हालांकि, शीर्षक में शब्दों सिर्फ भ्रामक है, /dev/zeroअपने आप में नहीं है ऐसा कुछ भी किसी भी अधिक की तुलना में किसी भी नियमित भंडारण करता है।)


साइड नोट: यदि का आउटपुट /bin/lsपर्याप्त रूप से छोटा है, तो लिखने का कार्य केवल एमबीआर के कुछ बाइट्स को अधिलेखित कर सकता है, और सबसे महत्वपूर्ण हिस्सा (विभाजन के शुरुआती और अंत वाले सेक्टर) बरकरार रह सकते हैं। हालाँकि MBR ​​पुनर्स्थापना (आमतौर पर grub --install /dev/sda), अभी भी सिस्टम को फिर से बूट करने योग्य बनाने के लिए आवश्यक है।
पीटर - मोनिका

8
@peterh ध्यान दें कि वे वास्तविक lsबाइनरी को पुनर्निर्देशित कर रहे हैं , इसे चलाने से आउटपुट नहीं । सबसे छोटी संभव "हैलो वर्ल्ड" ईएलएफ बाइनरी 98 बाइट्स (एक एमबीआर से कम) प्रतीत होती है , लेकिन मुझे लगता है कि यह मानना ​​सुरक्षित है कि वास्तविक सुविधाओं के साथ कोई भी बाइनरी एमबीआर (कुख्यात रूप से छोटा फ्रीबीएसडी ls) 32784 के कार्यान्वयन से बड़ा होना चाहिए बाइट्स लंबे, यहां तक ​​कि एक GPT के स्टार्ट-ऑफ-डिस्क भाग को अधिलेखित करने के लिए काफी बड़ा है)। ;)
n.st

अरे हाँ, आप lsभी आउटपुट का उपयोग कर सकते हैं । की एक सूची /usr/binशायद काफी लंबी होगी। मैं सिर्फ echoएक उदाहरण के रूप में उपयोग करने जा रहा था , लेकिन IIRC आपको एक एमबीआर विभाजन तालिका को अधिलेखित करने के लिए लगभग 500 बाइट्स की आवश्यकता है, इसलिए यह टाइप करने के लिए थोड़ा थकाऊ है। (सटीक संख्या जो भी थी)
ilkachachu

1
आपको संभवतः इसके लिए ds के साथ bs और काउंट का उपयोग करना चाहिए, अन्यथा यह कुछ समय के लिए चलेगा, आपको केवल इस क्षेत्र को शून्य करने की आवश्यकता है। विरासत डिस्क के लिए 512 बाइट्स। (नीचे @ n.st देखें) वास्तव में विभाजन तालिका इसके अंत में है और बूट सामग्री को संरक्षित करने के लिए वापस कॉपी करने से पहले आपके पास हेक्स संपादक के साथ कॉपी और शून्य बनाने के लिए पर्याप्त है। इसके लिए उपकरण भी हैं, ऐसा करने के लिए NAS डिस्क आरंभीकरण के लिए आम है।
मैकेंज़्म

1
बस जीपीटी ड्राइव के मामले में, आप डिस्क के अंत को भी मिटा देना चाहते हैं। एक अनुपालन जीपीटी कार्यान्वयन डिस्क के अंत में द्वितीयक तालिका की जांच करेगा और पहले भाग को भी फिर से लिखेगा (जो भी आपके पास पहले से है, उसे अनदेखा करें)। देखें: news.ycombinator.com/item?id=18541493
wbkang

10

विभाजन तालिका को (तार्किक 2 ) डिस्क डिवाइस की शुरुआत 1 के पास संग्रहीत किया जाता है।

उस क्षेत्र को किसी भी चीज़ ( /dev/zeroकिसी भी अन्य डेटा से शून्य) से ओवरराइट करना , विभाजन तालिका को अस्पष्टता से बदल देगा, इसलिए यह अब स्पष्ट नहीं होगा कि डिवाइस पर विभाजन कहाँ से शुरू होते हैं।
एक अभी भी पूरे डिस्क को स्कैन कर सकता है और "मैजिक बाइट्स" को पहचानने की कोशिश करता है, जो फाइल सिस्टम की शुरुआत को चिह्नित करता है।

इसके विपरीत, यदि आप fdiskएक नई विभाजन तालिका बनाने के लिए (या किसी अन्य विभाजन उपकरण का) उपयोग करते हैं, तो उपकरण उस नई तालिका को संग्रहीत करने के लिए डिस्क के पहले कुछ बाइट्स को अधिलेखित कर देगा।

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

ध्यान दें, हालांकि, कुछ विभाजन तालिका प्रारूप (जैसे GPT) अलग-अलग स्थानों में बैकअप प्रतियां रखेंगे (जैसे GPT के लिए डिस्क के अंत में), जिसमें से कुछ विभाजन जानकारी पुनर्प्राप्त की जा सकती है।

1: एक एमबीआर के लिए पहले 512 बाइट्स में या उदाहरण के लिए जीपीटी 2 के लिए पहला और अंतिम 17408 बाइट्स
: ड्राइव आंतरिक रूप से तार्किक ब्लॉकों को भौतिक माध्यम के विभिन्न हिस्सों में रीमैप कर सकता है, लेकिन यह मैपिंग के लिए अदृश्य है (और इसके लिए महत्वहीन) ऑपरेटिंग सिस्टम।


1
लगभग सही - (पुराना, एमबीआर प्रकार) विभाजन तालिका एमबीटीआर के 1BE - 1FD बाइट्स में रहती है। पहले कुछ बाइट्स में IBL (प्रारंभिक बूट लोडर) होता है।
रुडीसी

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