क्या # dd if=/dev/zero of=/dev/sda
पहले से मौजूद पार्टीशन टेबल को मिटा देंगे ?
या यह दूसरी तरह के आसपास है, यानी, करता है
# fdisk /dev/sda
g
(GPT के लिए)
द्वारा लिखे गए शून्य को मिटा दें /dev/zero
?
क्या # dd if=/dev/zero of=/dev/sda
पहले से मौजूद पार्टीशन टेबल को मिटा देंगे ?
या यह दूसरी तरह के आसपास है, यानी, करता है
# fdisk /dev/sda
g
(GPT के लिए)
द्वारा लिखे गए शून्य को मिटा दें /dev/zero
?
जवाबों:
क्या
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
), अभी भी सिस्टम को फिर से बूट करने योग्य बनाने के लिए आवश्यक है।
ls
बाइनरी को पुनर्निर्देशित कर रहे हैं , इसे चलाने से आउटपुट नहीं । सबसे छोटी संभव "हैलो वर्ल्ड" ईएलएफ बाइनरी 98 बाइट्स (एक एमबीआर से कम) प्रतीत होती है , लेकिन मुझे लगता है कि यह मानना सुरक्षित है कि वास्तविक सुविधाओं के साथ कोई भी बाइनरी एमबीआर (कुख्यात रूप से छोटा फ्रीबीएसडी ls
) 32784 के कार्यान्वयन से बड़ा होना चाहिए बाइट्स लंबे, यहां तक कि एक GPT के स्टार्ट-ऑफ-डिस्क भाग को अधिलेखित करने के लिए काफी बड़ा है)। ;)
ls
भी आउटपुट का उपयोग कर सकते हैं । की एक सूची /usr/bin
शायद काफी लंबी होगी। मैं सिर्फ echo
एक उदाहरण के रूप में उपयोग करने जा रहा था , लेकिन IIRC आपको एक एमबीआर विभाजन तालिका को अधिलेखित करने के लिए लगभग 500 बाइट्स की आवश्यकता है, इसलिए यह टाइप करने के लिए थोड़ा थकाऊ है। (सटीक संख्या जो भी थी)
विभाजन तालिका को (तार्किक 2 ) डिस्क डिवाइस की शुरुआत 1 के पास संग्रहीत किया जाता है।
उस क्षेत्र को किसी भी चीज़ ( /dev/zero
किसी भी अन्य डेटा से शून्य) से ओवरराइट करना , विभाजन तालिका को अस्पष्टता से बदल देगा, इसलिए यह अब स्पष्ट नहीं होगा कि डिवाइस पर विभाजन कहाँ से शुरू होते हैं।
एक अभी भी पूरे डिस्क को स्कैन कर सकता है और "मैजिक बाइट्स" को पहचानने की कोशिश करता है, जो फाइल सिस्टम की शुरुआत को चिह्नित करता है।
इसके विपरीत, यदि आप fdisk
एक नई विभाजन तालिका बनाने के लिए (या किसी अन्य विभाजन उपकरण का) उपयोग करते हैं, तो उपकरण उस नई तालिका को संग्रहीत करने के लिए डिस्क के पहले कुछ बाइट्स को अधिलेखित कर देगा।
डिस्क पर केवल एक शुरुआत है, इसलिए आप जो भी करते हैं, वह अंतिम रूप से "छड़ी" करेगा।
ध्यान दें, हालांकि, कुछ विभाजन तालिका प्रारूप (जैसे GPT) अलग-अलग स्थानों में बैकअप प्रतियां रखेंगे (जैसे GPT के लिए डिस्क के अंत में), जिसमें से कुछ विभाजन जानकारी पुनर्प्राप्त की जा सकती है।
1: एक एमबीआर के लिए पहले 512 बाइट्स में या उदाहरण के लिए जीपीटी 2 के लिए पहला और अंतिम 17408 बाइट्स
: ड्राइव आंतरिक रूप से तार्किक ब्लॉकों को भौतिक माध्यम के विभिन्न हिस्सों में रीमैप कर सकता है, लेकिन यह मैपिंग के लिए अदृश्य है (और इसके लिए महत्वहीन) ऑपरेटिंग सिस्टम।
/dev/zero
कुछ मिटा नहीं रहा है, वहdd
उस पर नकल करके उसे मिटा रहा है। जो तथ्य बाइट्स शून्य होते हैं, और शून्य बाइट्स शून्य/dev/zero
के कुछ अन्य स्रोत के बजाय से आते हैं, वे मामूली विवरण हैं।