क्लोन किए गए विंडोज 7 बीसीडी में अपूर्ण डेटा (और इसलिए, बूटिंग को रोकना) क्यों है?


9

मुझे अपनी हार्ड ड्राइव को एक छोटे से बदलने के लिए एक दोहरे बूटिंग विंडोज एक्सपी / 7 बॉक्स को क्लोन करने की आवश्यकता का दुर्भाग्य रहा है। मुझे इसे बूट करने में बहुत परेशानी हुई और मैं यह समझना चाहूंगा कि क्या चल रहा है और अगर मैं कुछ बेहतर कर सकता हूं।

पृष्ठभूमि: मशीन में 750 विभाजन ड्राइव है जिस पर 3 विभाजन हैं:

  • विंडोज एक्स पी
  • विंडोज 7
  • डेटा

मूल स्थापना इस तरह से की गई थी कि कोई अलग विंडोज 7 रिकवरी विभाजन नहीं है। मुझे उम्मीद है कि यह तथ्य कुछ हद तक सरल करता है।

मैं इसे 80 जीबी ड्राइव के साथ बदल रहा हूं। विभाजन पहले ही विंडोज 7 के भीतर से सिकुड़ गए हैं ताकि वे छोटी डिस्क पर फिट हो सकें।

मैं GParted(एक PartedMagicलिनक्स LiveCD से) विभाजन भर में कॉपी करने के लिए इस्तेमाल किया । मैं सक्रिय विभाजन (मूल डिस्क पर समान) के रूप में विंडोज एक्सपी विभाजन को चिह्नित करता हूं।

मैं CloneZillaएक बड़ी डिस्क से छोटी डिस्क में संक्रमण के कारण पूरी डिस्क कॉपी का उपयोग या करने में असमर्थ था ।

विभाजनों की प्रतिलिपि बनाने के बाद, मैंने मैन्युअल रूप से बूट लोडर को कॉपी किया (ध्यान रहे कि विभाजन तालिका की प्रतिलिपि न करें)

$ dd if=/dev/sda of=/dev/sdb bs=446 count=1

मैंने मूल डिस्क को हटा दिया, नया सेट किया ताकि यह शारीरिक रूप से मूल (आईडीई चैनल 1 मास्टर) के समान जुड़ा हो और बूट करने की कोशिश की जाए। इसने बूट मेनू को सफलतापूर्वक प्रस्तुत किया, लेकिन दोनों विकल्पों में से चयन करने में विफल रहा (XP के लिए दो: Win7 के लिए एक)।

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

$ bcdedit /set {ntldr} device partition=C:
$ bcdedit /set {default} device partition=D:
$ bcdedit /set {default} osdevice partition=D:

और रिबूट किया गया। इस बार मैं XP और Win7 दोनों को बूट कर सकता हूं। मुझे अधिक परीक्षण करने की आवश्यकता है क्योंकि दोनों बीसीडी के बीच अन्य अंतर प्रतीत होते हैं, लेकिन उपरोक्त परिवर्तनों को कम से कम करने के लिए बूट करने की अनुमति दी गई है।

तो मेरा प्रश्न वास्तव में यह पूछना है कि क्लोन विभाजन पर बीसीडी मूल में भिन्न क्यों होगी, और बूटिंग को रोकने के लिए पर्याप्त रूप से ऐसा क्यों?

और इसका अनुसरण यह पूछना होगा कि क्या मुझे यह दूसरी तरह से करना चाहिए?

जवाबों:


13

विंडोज ऑपरेटिंग सिस्टम वाले विभाजनों को क्लोन करने के बाद, बूट कॉन्फ़िगरेशन डेटा को ठीक करना आवश्यक है यदि क्लोन किए गए विभाजन क्लोन डिस्क पर बिल्कुल उसी स्थिति में नहीं हैं जैसा कि वे मूल पर हैं।

विंडोज विस्टा, विंडोज विस्टा के बाद से, अपने कॉन्फ़िगरेशन को "बूट कॉन्फ़िगरेशन डेटा" (बीसीडी) के रूप में संग्रहीत करता है और यह विभाजन को संदर्भित करता है, विभाजन संख्याओं द्वारा नहीं बल्कि एक डिस्क हस्ताक्षर और क्षेत्र ऑफसेट द्वारा। डिस्क हस्ताक्षर मास्टर बूट रिकॉर्ड में एम्बेडेड 32-बिट मान है। सेक्टर 0 के पहले 446 बाइट्स को कॉपी करना डिस्क सिग्नेचर को कॉपी करेगा।

यदि क्लोनिंग गतिविधियों के परिणामस्वरूप अलग-अलग प्रारंभिक सेक्टर पते वाले क्लोन डिस्क विभाजन होते हैं, तो मूल वाले (अत्यधिक संभावना है कि जब तक कि पूरी-डिस्क क्लोन का उपयोग नहीं किया गया था) तब क्लोन संभवतः इन उपायों को लागू करने तक बूट करने में विफल हो जाएगा।

मूल रूप से, सेक्टर ऑफ़सेट्स को अपडेट करने की आवश्यकता है और इसके लिए, आपको एक रिकवरी कंसोल (यह विंडोज 7 स्थापित डीवीडी पर उपलब्ध है) का उपयोग करने की आवश्यकता होगी। सुनिश्चित करें कि केवल क्लोन ड्राइव संलग्न है और विंडोज 7 स्थापित डीवीडी से बूट करें। पहली स्क्रीन पर भाषा चयन करें और "अगला" हिट करें। अगली स्क्रीन पर (जहाँ "अब स्थापित हो" प्रदर्शित होता है) कमांड प्रॉम्प्ट प्राप्त करने के लिए SHIFT + F10 दबाएँ।

सबसे पहले, उन ड्राइव अक्षरों की पुष्टि करें जो उनके स्थान पर हैं और विभाजन जिनके वे संबंधित हैं:

diskpart
list volume
exit

इसके अलावा, यदि आपको सक्रिय विभाजन की पुनः पुष्टि करने की आवश्यकता है:

diskpart
select disk 0
select part 1
detail part
select part 2
detail part
... and so-on
exit

BIOS सिस्टम पर, BCD को एक फाइल में संग्रहीत किया जाता है X:\Boot\BCDजहां Xसक्रिय विभाजन का ड्राइव अक्षर है (UEFI के लिए यह EFI सिस्टम विभाजन में है)। आम तौर पर छिपा हुआ है, इसके साथ देखा जा सकता है

dir /AH X:\Boot

इसे इस तरह से बैकअप दिया जा सकता है:

bcdedit /export X:\path\to\bcd\backup

और बहाल कर दिया

bcdedit /import X:\path\to\bcd\backup

यदि किसी डिस्क पर कई ऑपरेटिंग सिस्टम हैं, तो कई बीसीडी हो सकते हैं। सक्रिय BCD \Boot\BCDउस विभाजन पर एक है जिसे सक्रिय के रूप में चिह्नित किया गया है - सक्रिय विभाजन । इसकी सामग्री को सूचीबद्ध करने के लिए (क्रिया के बढ़ते क्रम में :)

bcdedit
bcdedit /enum
bcdedit /enum ALL
bcdedit /enum ALL /v

सक्रिय बीसीडी को ठीक करने के लिए, सही विभाजन के लिए ड्राइव अक्षर स्थापित करें और करें:

bcdedit /set {default} osdevice partition=X:
bcdedit /set {default} device partition=X:
bcdedit /set {bootmgr} device partition=X:
bcdedit /set {memdiag} device partition=X:
bcdedit /set {ntldr} device partition=X:

या, इन उदाहरणों में एक और BCD ("X: \ boot \ bcd") ठीक करने के लिए:

bcdedit /store X:\boot\bcd /set {default} osdevice partition=X:
bcdedit /store X:\boot\bcd /set {default} device partition=X:
bcdedit /store X:\boot\bcd /set {bootmgr} device partition=X:
bcdedit /store X:\boot\bcd /set {memdiag} device partition=X:
bcdedit /store X:\boot\bcd /set {ntldr} device partition=X:

उदाहरण के लिए, मेरे सिस्टम में XP और 7 हैं और वे XP को चालू होने C:और 7 के चालू होने D:और सक्रिय विभाजन के रूप में दिखाते हैं C:। तो सक्रिय बीसीडी पर किया जाएगा c:\boot\BCD। बूट मैनेजर मिल जाएगा C:\bootmgrऔर मेमोरी डायग्नोस्टिक पर होगा C:\boot\memtest.exe, आवश्यक आदेश होंगे:

bcdedit /set {ntldr} device partition=C:
bcdedit /set {memdiag} device partition=C:
bcdedit /set {bootmgr} device partition=C:
bcdedit /set {default} device partition=D:
bcdedit /set {default} osdevice partition=D:

उन परिवर्तनों के साथ, कंप्यूटर को रिबूट करना (Alt-F4 दबाने से यह हासिल हो जाएगा) और डीवीडी को हटाने से सिस्टम को सफलतापूर्वक बूट करने की अनुमति मिलती है।

आगे की पढाई:

(एक पूरी-डिस्क क्लोन को इन मुद्दों को भुगतना नहीं चाहिए क्योंकि प्रतिलिपि पर विभाजन लेआउट मूल के समान होना चाहिए)


ध्यान दें कि bcdbootबूट प्रविष्टि को फिर से बनाने का एक आसान तरीका प्रदान करता है, लेकिन मुझे यकीन नहीं है कि यह एक XP / W7 दोहरे बूट परिदृश्य में उपयुक्त होगा।
हैरी जॉनसन

मुझे आपका जवाब पसंद है, लेकिन क्या आप इसे थोड़ा साफ कर सकते हैं? मुझे लगता है कि बहुत सारी बाहरी जानकारी है (जैसे कि उदाहरण कमांड, जब आपके पास वास्तविक कमांड सही है, आदि)।
Bigbio2002

मुझे खुशी है कि आप ऐसर को पसंद कर रहे हैं, लेकिन मुझे नहीं लगता कि इसमें बहुत अधिक बाहरी जानकारी है। मेरे पास अंत में एक सामान्य स्पष्टीकरण और एक वास्तविक उदाहरण है जो वास्तव में दर्शाता है कि प्रत्येक प्रविष्टि को विभाजन को कैसे निर्धारित किया जाए जिसे बदलने की आवश्यकता है। मुझे अपने क्लोन किए गए सिस्टम को ठीक करने के लिए उपरोक्त सभी ज्ञान की आवश्यकता थी और इसलिए, दूसरों को अधिक से अधिक जानकारी प्रदान करने के लिए इसे एक उत्तर के रूप में प्रस्तुत किया।
स्टार

8

बीसीडी इंटर्नल पर इस अनौपचारिक दस्तावेज के अनुसार , बीसीडी स्टोर में विभाजन वास्तव में डिस्क हस्ताक्षर और विभाजन ऑफसेट द्वारा पहचाने जाते हैं। आपने डिस्क हस्ताक्षर (MBR बाइट्स 440-443) की प्रतिलिपि बनाई, लेकिन छोटी डिस्क पर विभाजन डालते समय सबसे अधिक संभावना विभाजन विभाजन बदल गया, इसलिए BOOTMGR अब इन विभाजनों को खोजने में सक्षम नहीं था।


यह दिलचस्प है और निश्चित रूप से बताता है कि यह काम क्यों नहीं करेगा - विभाजन ऑफसेट सबसे निश्चित रूप से अलग होगा। क्यों-ओह-क्यों यह औपचारिक रूप से प्रलेखित नहीं है किसी का अनुमान है! क्या एक क्लोन डिस्क पर "मरम्मत" करने के लिए एक स्वीकृत (आधिकारिक या अनौपचारिक) तरीका है?
22

मुझे लगता है कि आधिकारिक तरीका है "पहले से तैयार सिस्टम रिपेयर डिस्क (या वास्तविक इंस्टॉलेशन मीडिया, अगर आपके पास है और डीओईएम रिकवरी मीडिया नहीं है) से बूट करें और स्टार्टअप रिपेयर चलाएं ; यदि वह विफल रहता है, तो OS पुनः स्थापित करें ”। सुनिश्चित नहीं है कि स्टार्टअप रिपेयर आपके मामले में XP को भी रिकवर करेगा।
सेर्गेई व्लासोव

@starfry कई बीसीडी संपादक हैं, जिसमें अंतर्निहित कमांड-लाइन एक ( bcdedit) शामिल हैं। मैं खुद विजुअल बीसीडी एडिटर का पक्ष लेता हूं। यदि आप विंडोज वातावरण में प्रवेश कर सकते हैं, तो दृश्य बीसीडी बूट डिवाइस को सेट करना काफी आसान बनाता है। आप कमांड प्रॉम्प्ट खोलकर बूट डीवीडी से ऐसा कर सकते हैं (मुझे लगता है कि यह एफ 11 या कुछ था) और bcdeditवहां का उपयोग कर। मैं सिस्टम रिपेयर के खिलाफ सिफारिश करूंगा यदि आप इसे मैन्युअल रूप से ठीक करना चाहते हैं, क्योंकि मैंने सिस्टम रिपेयर को ऑन-डिस्क रिकवरी वातावरण से पहले हटा दिया है।
बॉब

धन्यवाद सेर्गेई और @bob। मैंने इस उत्तर को स्वीकार कर लिया है क्योंकि इसने मुझे पूरी तरह से समझा दिया कि क्या चल रहा है। मैंने एक अलग उत्तर में जो कुछ भी अब मुझे पता है, उसका दस्तावेजीकरण किया है।
स्टारफ्री

मेरी अज्ञानता का बहाना है, लेकिन अगर @starfry ste (sda1 विभाजन नहीं) पर बाइट कॉपी करने के लिए बाइट है, लेकिन पूरे ड्राइव को sda करता है, तो विभाजन ऑफ़सेट अलग क्यों होगा?
बार्लोप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.