बूट करने योग्य विंडोज 7 (या विस्टा) विभाजन को स्थानांतरित करते समय क्या अद्यतन करने की आवश्यकता है?


9

जब मैं बूट करने योग्य 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 के सीरियल नंबर को रिकॉर्ड करती है। यदि वह संख्या मेल नहीं खाती है, तो सिस्टम बूट नहीं होगा। अगर वहाँ भी एक पूर्ण ब्लॉक संदर्भ संग्रहीत है तो मैं अगले परीक्षण करूँगा।


बस सोच रहा था, क्या आपने यह सुनिश्चित किया है कि छिपे हुए सिस्टम विभाजन को सही ढंग से स्थानांतरित किया गया था?
कॉलुम डिक

कौन से छिपे हुए विभाजन का मतलब है? मैंने सिर्फ अपडेट # 6 जोड़ा है जो अतिरिक्त बूट विभाजन के बारे में बात करता है, और हां, मैंने इसे भी स्थानांतरित किया। एमबीआर और विंडोज विभाजन (एस) की शुरुआत के बीच एक और "छिपा हुआ" क्षेत्र भी था, लेकिन यह किसी भी प्रासंगिकता का नहीं होना चाहिए - यह सिर्फ डेटा का एक ब्लॉब है (मेरे मामले में: ए HFS + विभाजन जैसा कि मैं आगे बढ़ रहा हूं बूट कैंप स्थापना यहां)। इसमें शामिल होने वाली केवल चीजें होनी चाहिए: विभाजन का नक्शा (एमबीआर प्लस GUID योजनाबद्ध विभाजन नक्शा उसके बाद) और दो शामिल विंडोज विभाजन (छोटे बूटर और सी: विभाजन)। मैंने सब ठीक से अपडेट किया, बिल्कुल। :)
सुपर टैम्पेल

सबसे निश्चित रूप से महत्वपूर्ण सामान संग्रहीत है \BCD\Boot, और आप सामान्य रूप से इसे संपादित करेंगे bcdedit.exe, नहीं bcdboot। और हां, बूट-स्ट्रैपिंग के लिए अलग विभाजन (जो केवल तभी आवश्यक होता है जब आप फुल-डिस्क एन्क्रिप्शन सुविधा का उपयोग करते हैं, क्योंकि डिक्रिप्शन कोड तब मुख्य विंडो विभाजन के बाहर संग्रहीत किया जाता है) बूट प्रक्रिया को नियंत्रित करता है, यदि यह मौजूद है।
बेन वोइग्ट

@ पता: हां, मैं bcdedit के बारे में जानता हूं - लेकिन मैं कुछ भी संपादित नहीं करना चाहता, जहां तक ​​मैं बता सकता हूं कि मैं इसके किसी भी विकल्प को बदलना नहीं चाहता हूं क्योंकि वे विभाजन से पहले एक नई डिस्क में चले गए थे। । सभी मैं अपडेट करना चाहते हैं, यदि संभव हो तो किसी भी विंडोज निष्पादनयोग्य के उपयोग के बिना किसी भी ब्लॉक नंबर और डिस्क आईडी संदर्भ हैं।
सुपरटेम्पेल

1
प्रोग्रामिंग का सवाल नहीं। यह विंडोज बूटलोडर के बारे में डोमेन ज्ञान है।
कोई नहीं

जवाबों:


1

आसान तरीका?

डिस्क ड्राइव में विंडोज विस्टा या विंडोज 7 इंस्टॉलेशन डिस्क लगाएं और फिर कंप्यूटर को स्टार्ट करें।
संकेत मिलने पर एक कुंजी दबाएँ।
एक भाषा, एक समय, एक मुद्रा, एक कीबोर्ड या एक इनपुट विधि का चयन करें, और उसके बाद अगला क्लिक करें।
अपने कंप्यूटर की मरम्मत पर क्लिक करें।
उस ऑपरेटिंग सिस्टम पर क्लिक करें जिसे आप सुधारना चाहते हैं, और फिर अगला क्लिक करें।
सिस्टम पुनर्प्राप्ति विकल्प संवाद बॉक्स में, कमांड प्रॉम्प्ट पर क्लिक करें।
Bootrec.exe टाइप करें, और उसके बाद ENTER दबाएँ।

Bootrec.exe विकल्प
Bootrec.exe उपकरण निम्नलिखित विकल्पों का समर्थन करता है। उस विकल्प का उपयोग करें जो आपकी स्थिति के लिए उपयुक्त है।

नोट यदि BCD का पुनर्निर्माण स्टार्टअप समस्या को हल नहीं करता है, तो आप BCD को निर्यात और हटा सकते हैं, और फिर इस विकल्प को फिर से चला सकते हैं। ऐसा करने से, आप यह सुनिश्चित कर लेते हैं कि BCD पूरी तरह से पुनर्निर्मित है।

ऐसा करने के लिए, Windows RE कमांड प्रॉम्प्ट पर निम्न कमांड टाइप करें:
bcdedit / export C: \ BCD_Backup
c:
cd बूट अट्रिब्यूट
bcd -s -h -r
ren c: \ boot \ bcd bcd.nc
bootrec / RebuildBcd

या स्थिति के आधार पर / FixMbr या / FixBoot या / ScanOs या / RebuildBcd।

देखें: अधिक जानकारी के लिए Support.Microsoft.com


1
मदद करने के प्रयास के लिए धन्यवाद, लेकिन आप जो कहते हैं वह मानक ज्ञान है, जैसा कि आप बताते हैं। मुझे विशेष रूप से Microsoft के सॉफ़्टवेयर का उपयोग करके अपने स्वयं के लिखित कार्यक्रम में इसे पूरा करने के लिए "क्या चल रहा है" जानकारी की आवश्यकता है, जो कि एक तुच्छ उपयोगकर्ता के लिए अभी भी संभालना मुश्किल है। मैं एक बूट शिविर की स्थापना के साथ एक मैक उपयोगकर्ता को एक समाधान प्रदान करने में सक्षम होना चाहता हूं, अगर उसे किसी अन्य डिस्क पर ले जाने की आवश्यकता होती है। और उस के एक साइड इफेक्ट के रूप में, यह किसी भी अन्य विंडोज उपयोगकर्ता की मदद करेगा, क्योंकि कार्य समान होंगे।
सुपरटेम्पेल

अगर मैं ऐसा करने की कोशिश कर रहा था ... मैं डिस्क को पहले और बाद में dd करूँगा और दोनों के बीच एक बाइनरी तुलना करूँगा। सौभाग्य।
एस्सोबी

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