ฉันมีโชคร้ายที่ต้องโคลนกล่อง Windows XP / 7 แบบดูอัลบูตเพื่อแทนที่ฮาร์ดไดรฟ์ที่มีขนาดเล็กกว่า ฉันมีปัญหาอย่างมากในการเริ่มระบบและต้องการที่จะเข้าใจว่าเกิดอะไรขึ้นและถ้าฉันสามารถทำอะไรได้ดีกว่านี้
พื้นหลัง: เครื่องมีไดรฟ์ 750Gb พร้อม 3 พาร์ติชั่น:
- Windows XP
- วินโดว 7
- ข้อมูล
การติดตั้งดั้งเดิมนั้นทำในลักษณะที่ไม่มีพาร์ติชั่นการกู้คืน Windows 7 แยกต่างหาก ฉันหวังว่าความจริงข้อนี้ทำให้สิ่งต่าง ๆ ง่ายขึ้น
ฉันกำลังแทนที่ด้วยไดรฟ์ 80Gb พาร์ติชั่นนั้นหดตัวจากภายใน Windows 7 เพื่อให้เข้ากับดิสก์ขนาดเล็กลง
ฉันใช้GParted
(จากPartedMagic
Linux LiveCD) เพื่อคัดลอกพาร์ทิชันข้าม ฉันทำเครื่องหมายพาร์ติชัน Windows XP เป็นพาร์ติชันที่ใช้งานอยู่ (เช่นเดียวกับบนดิสก์ดั้งเดิม)
ฉันไม่สามารถใช้CloneZilla
หรือทำสำเนาดิสก์ทั้งหมดเนื่องจากการเปลี่ยนจากดิสก์ที่ใหญ่กว่าเป็นดิสก์ที่เล็กกว่า
หลังจากคัดลอกพาร์ติชั่นฉันคัดลอกบูตโหลดเดอร์ด้วยตนเอง (ระวังอย่าคัดลอกตารางพาร์ติชั่น):
$ dd if=/dev/sda of=/dev/sdb bs=446 count=1
ฉันนำดิสก์ดั้งเดิมออกตั้งค่าใหม่ดังนั้นจึงเชื่อมต่อทางกายภาพกับดิสก์ดั้งเดิม (IDE channel 1 master) และลองบูท สิ่งนี้แสดงเมนูการบู๊ตสำเร็จ แต่ล้มเหลวเมื่อเลือกตัวเลือกใดตัวเลือกหนึ่ง (มีสองตัว: หนึ่งตัวสำหรับ XP และอีกอันสำหรับ Win7)
ฉันได้ทำการวิจัยพอสมควรซึ่งทำให้ฉันทราบว่าข้อมูลการกำหนดค่าการบูต Windows 7 ไม่ได้มีทุกอย่างที่ควรจะเป็น ผมเทียบผลผลิต BCD unknown
จากดิสก์เดิมและใหม่และตั้งข้อสังเกตว่ารายการอุปกรณ์บนหลังได้ ดังนั้นฉันจึงเปลี่ยนพวกเขาให้ตรงกับต้นฉบับ - เช่นนี้:
$ bcdedit /set {ntldr} device partition=C:
$ bcdedit /set {default} device partition=D:
$ bcdedit /set {default} osdevice partition=D:
และรีบูต ครั้งนี้ฉันสามารถบูตได้ทั้ง XP และ Win7 ฉันต้องทำการทดสอบเพิ่มเติมเนื่องจากดูเหมือนจะมีความแตกต่างอื่น ๆ ระหว่าง BCD สองตัว แต่ทำการเปลี่ยนแปลงข้างต้นอย่างน้อยก็อนุญาตให้บูตเครื่องได้
ดังนั้นคำถามของฉันคือการถามว่าทำไม BCD บนพาร์ติชันที่ลอกแบบมาจะแตกต่างจากของจริงและเพียงพอเพื่อป้องกันการบูทหรือไม่
และการติดตามถึงสิ่งนั้นก็คือการถามว่าฉันควรจะทำอย่างนี้อีกไหม?
bcdboot
มีวิธีที่ง่ายกว่าในการสร้างรายการบูตขึ้นใหม่ แต่ฉันไม่แน่ใจว่ามันจะเหมาะสมในสถานการณ์การบูตดูอัลบูต XP / W7