जब मैं बूट करने योग्य NTFS विभाजन को विंडोज पर एक अलग ब्लॉक ऑफ़सेट पर ले जाता हूं, तो इसे फिर से बूट करने योग्य बनाने के लिए क्या अद्यतन करने की आवश्यकता है?
पृष्ठभूमि: मैं एक कार्यक्रम लिखने की योजना बनाता हूं जो आवश्यक क्रियाएं करता है , यही कारण है कि मैं विंडोज डीवीडी से बूट करके Microsoft के टूल का उपयोग करने के लिए गाइड की मांग नहीं कर रहा हूं। इसके बजाय, मुझे इन चीजों को खुद को संशोधित करने की आवश्यकता है, ताकि मैं एक समाधान लिख सकूं जो औसत पीसी उपयोगकर्ता के लिए आसान है जब वह अपने विंडोज सिस्टम को एक बड़ी हार्ड डिस्क पर ले जाना चाहता है।
विशेष रूप से, यहाँ मैंने क्या कोशिश की है:
मेरे पास कई विभाजनों के साथ एक डिस्क है, जिसमें से एक उस पर विंडोज के साथ NTFS विभाजन है, और विभाजन के लेआउट के लिए सादे पुराने MBR ब्लॉक 0 का उपयोग करता है (4 से अधिक विभाजन नहीं)।
अब मैं एक नया, बड़ा, डिस्क को प्रारूपित और विभाजन करता हूं। वहाँ मैं NTFS विभाजन के लिए जगह बनाता हूँ और पुराने डिस्क के NTFS Windows विभाजन से सामग्री की प्रतिलिपि बनाता हूँ। और मैं विभाजन को "सक्रिय" बनाता हूं।
हालाँकि, जब मैं इस डिस्क से बूट करने का प्रयास करता हूं, तो मुझे तुरंत एक "रीड एरर" संदेश मिलता है और बूटिंग बंद हो जाती है, सटीक टेक्स्ट है:
A disk read error occurred
Press Ctrl+Alt+Del to restart
मैंने सत्यापित किया कि दोनों डिस्क में ब्लॉक 0 में एक ही बूट सेक्टर कोड है।
यह मुझे लगता है कि कुछ और अद्यतन करने की आवश्यकता हो सकती है। मुझे लगता है कि कहीं न कहीं एक पूर्ण ब्लॉक संदर्भ है जिसे मुझे अपडेट करने की आवश्यकता है, शायद अगले स्तर लोडर या एनटी कर्नेल की ओर इशारा करते हुए।
अपडेट: मुझे यह लेख काफी गहराई में गया जो मैं जानना चाहता हूं। हालाँकि, यह boot.ini को संशोधित करने के लिए कहता है, लेकिन मेरे पास यहां विंडोज 7 स्थापित है, जहां ऐसी चीजें बदल गई हैं: No boot.ini लेकिन एक फ़ोल्डर जिसमें GUID के साथ सिस्टम वॉल्यूम की जानकारी और अन्य डेटा है जो मेरी समस्या से संबंधित है। । खुदाई जारी रखने के लिए ...
अपडेट 2: स्टॉर्ममैन द्वारा भयानक दिखने वाली लेकिन बहुत जानकारीपूर्ण वेबसाइट के लिए धन्यवाद , मैं पहला कदम जानने में सक्षम था: NTFS बूट सेक्टर में "छिपे हुए" क्षेत्रों के लिए एक फ़ील्ड है। इस फेल्ड में बूट सेक्टर का सेक्टर नंबर सम्मिलित है। यह "रीड एरर" संदेश को हल करता है। अब, हालांकि, मुझे इसके बजाय "BOOTMGR गायब है" त्रुटि मिली। ऐसा लगता है कि एक और जगह है जहां एक ब्लॉक नंबर को समायोजित किया जाना है, लेकिन मुझे इस बारे में कोड सूची में कुछ भी नहीं मिल सकता है।
मुझे लगता है कि इस "BOOTMGR गायब है" समस्या को ठीक करने के लिए विंडोज टूल का सुझाव देने वाली बहुत सारी सहायता साइटें मिल रही हैं, लेकिन किसी को भी यह पता नहीं लगता कि पर्दे के पीछे क्या होता है। तरह तरह की समस्या होने पर विंडोज को फिर से स्थापित करने का सुझाव देने की तरह। कम से कम, वे फ़िक्सेस काम करने लगते हैं, जिनमें ज्यादातर Bcdedit और Bootrec टूल शामिल होते हैं। अब, कौन जानता है कि वे क्या करते हैं, विशेष रूप से उत्तरार्द्ध, एक स्थानांतरित विभाजन के संबंध में?
अद्यतन 3: बहुत सारे परीक्षण-और-त्रुटि प्रयासों के बाद, अब मुझे विश्वास है कि समाधान BCD- टेम्पलेट रजिस्ट्री फ़ाइल में निहित है , आमतौर पर \ Windows \ System32 \ config के अंदर रहता है। अगर मुझे "bcdboot" कमांड का उपयोग करके यह अपडेट मिलता है, तो विंडोज इससे शुरू होता है। मैं अब यह पता लगाने के बीच में हूं कि इस रजिस्ट्री में उपरोक्त जानकारी से संबंधित क्या जानकारी है। इस रजिस्ट्री की सामग्री का कोई भी संकेत स्वागत योग्य है।
अद्यतन 4: यह बताता है कि बीसीडी-टेम्प्लेट फ़ाइल को फिर से लिखा जाता है और उसके पूर्ववर्ती की तुलना में अलग-अलग द्विआधारी सामग्री होती है, अंदर के मान नहीं बदलते हैं। तो यह कुछ और होना चाहिए जो bcdboot.exe लिखते हैं। मैंने पहले ही जाँच कर ली थी कि क्या यह विभाजन के पहले 32 बूट ब्लॉक को बदल देता है, लेकिन वे अपरिवर्तित रहते हैं। Parititon का नक्शा या तो परिवर्तित नहीं होता है। तो ऐसा क्या है जो बीसीडी रजिस्ट्री के अलावा bcdboot को संशोधित करता है? मैं कैसे पता लगा सकता हूँ पर कोई सुझाव? क्या निम्न स्तर के उपकरण हैं जो मुझे दिखाते हैं कि प्रोग्राम क्या फ़ाइलें लिखता है?
अद्यतन 5: उत्तर ऐसा प्रतीत होता है: c: \ Boot \ BCD भी बदल गया है, और यह बूट प्रबंधक की प्रक्रिया के लिए महत्वपूर्ण फ़ाइल प्रतीत होती है। मैं इसकी जांच बाद में करूंगा ...
अद्यतन 6: यह एक महत्वपूर्ण विवरण प्रतीत होता है कि मैंने विंडोज 7 स्थापित करते समय मूल रूप से दो विभाजन बनाए थे: 204800 क्षेत्रों का एक छोटा विभाजन जो बूटस्ट्रैप विभाजन प्रतीत होता है, उसके बाद विंडोज सिस्टम युक्त वास्तविक, बड़ा, विभाजन होता है ( ड्राइव C :)। जब मैंने इस स्थापना को एक नए, बड़े, डिस्क में स्थानांतरित करने का प्रयास किया, तो मैंने नए ड्राइव पर समान दो विभाजन बनाए रखे थे, हालांकि वे एक अलग ऑफसेट पर समाप्त हो गए थे। इससे अकेले "BOOTMGR गायब है" संदेश गया। तब से, मैंने bcdboot.exe का उपयोग केवल Windows विभाजन पर किया है, जो जोड़ा गयाउस विभाजन पर \ बूट \ बीसीडी फ़ाइल। वह फ़ाइल (और फ़ोल्डर) मूल रूप से केवल छोटे विभाजन पर मौजूद थी। इसलिए, यह समस्या मेरे मामले में और अधिक जटिल हो सकती है क्योंकि एक विभाजन (बूट स्ट्रैपर) को दूसरे विभाजन (ओएस वाले एक) के रूप में संदर्भित किया जाता है, जबकि अन्य लोगों को केवल एक विभाजन दोनों से निपटना पड़ सकता है, और शायद इसका समाधान है सरल है।
अद्यतन 7: एक और विवरण मिला: \ Boot \ BCD फ़ाइल MBR के सीरियल नंबर को रिकॉर्ड करती है। यदि वह संख्या मेल नहीं खाती है, तो सिस्टम बूट नहीं होगा। अगर वहाँ भी एक पूर्ण ब्लॉक संदर्भ संग्रहीत है तो मैं अगले परीक्षण करूँगा।
\BCD\Boot
, और आप सामान्य रूप से इसे संपादित करेंगे bcdedit.exe
, नहीं bcdboot
। और हां, बूट-स्ट्रैपिंग के लिए अलग विभाजन (जो केवल तभी आवश्यक होता है जब आप फुल-डिस्क एन्क्रिप्शन सुविधा का उपयोग करते हैं, क्योंकि डिक्रिप्शन कोड तब मुख्य विंडो विभाजन के बाहर संग्रहीत किया जाता है) बूट प्रक्रिया को नियंत्रित करता है, यदि यह मौजूद है।