क्या # 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के कुछ अन्य स्रोत के बजाय से आते हैं, वे मामूली विवरण हैं।