เมื่อฉันย้ายพาร์ติชัน NTFS ที่สามารถบู๊ตได้ด้วย Windows บนพาร์ติชั่นบล็อกอื่น ๆ จำเป็นต้องมีการอัพเดตเพื่อให้สามารถบู๊ตได้อีกครั้ง
ความเป็นมา: ฉันวางแผนที่จะเขียนโปรแกรมที่ดำเนินการตามที่จำเป็นนั่นคือสาเหตุที่ฉันไม่ต้องการคำแนะนำวิธีใช้เครื่องมือของ Microsoft โดยการบูตจาก Windows DVD แต่ฉันต้องการวิธีแก้ไขสิ่งเหล่านี้ด้วยตัวเองเพื่อให้ฉันสามารถเขียนวิธีแก้ปัญหาที่ง่ายขึ้นสำหรับผู้ใช้พีซีทั่วไปเมื่อเขาต้องการย้ายระบบ Windows ของเขาไปยังฮาร์ดดิสก์ที่ใหญ่กว่า
โดยเฉพาะอย่างยิ่งนี่คือสิ่งที่ฉันได้ลอง:
ฉันมีดิสก์ที่มีหลายพาร์ติชันหนึ่งในนั้นคือพาร์ติชัน NTFS ที่มี Windows อยู่และดิสก์นั้นใช้ MBR block 0 แบบธรรมดาสำหรับการออกแบบพาร์ติชั่น (ไม่เกิน 4 พาร์ติชั่น)
ตอนนี้ฉันจัดรูปแบบและพาร์ติชันดิสก์ใหม่ที่ใหญ่กว่า ที่นั่นฉันสร้างพื้นที่สำหรับพาร์ติชัน NTFS และคัดลอกเนื้อหาจากพาร์ติชัน Windows NTFS ของดิสก์เก่าเข้าไป และฉันทำให้พาร์ทิชัน "ใช้งาน"
อย่างไรก็ตามเมื่อฉันพยายามบูตจากดิสก์นี้ฉันได้รับข้อความ "read error" ทันทีและการบูตหยุดลงข้อความที่ถูกต้องคือ:
A disk read error occurred
Press Ctrl+Alt+Del to restart
ฉันตรวจสอบว่าดิสก์ทั้งสองมีรหัสเซกเตอร์สำหรับบูตเหมือนกันในบล็อก 0
ดูเหมือนว่าฉันจะต้องมีการปรับปรุงอย่างอื่น ฉันเดาว่าที่ใดที่หนึ่งมีการอ้างอิงบล็อกแบบสัมบูรณ์ที่ฉันต้องการอัปเดตอาจชี้ไปที่ตัวโหลดระดับถัดไปหรือเคอร์เนล NT
ปรับปรุง:ฉันพบนี้บทความไปค่อนข้างลึกของสิ่งที่ฉันต้องการที่จะรู้ว่า อย่างไรก็ตามมันบอกว่าจะแก้ไข boot.ini แต่ฉันติดตั้ง Windows 7 ที่นี่ซึ่งสิ่งต่าง ๆ ดูเหมือนจะมีการเปลี่ยนแปลง: ไม่มี boot.ini แต่โฟลเดอร์ที่เรียกว่าSystem Volume Informationพร้อม GUID และข้อมูลอื่น ๆ ที่เกี่ยวข้องกับปัญหาของฉัน . จะขุดต่อไป ...
อัปเดต 2:ขอบคุณเว็บไซต์starman ที่ดูดี แต่ให้ข้อมูลมากฉันสามารถหาขั้นตอนแรกได้: บูตเซกเตอร์ NTFS มีช่องสำหรับภาค "ซ่อน" Feld นี้จะต้องมีหมายเลขเซกเตอร์ของบูตเซกเตอร์ วิธีนี้จะแก้ไขข้อความ "อ่านผิดพลาด" อย่างไรก็ตามตอนนี้ฉันได้รับข้อผิดพลาด "BOOTMGR is missing" แทน ดูเหมือนว่ามีสถานที่อื่นที่ต้องทำการปรับหมายเลขบล็อก แต่ฉันไม่พบสิ่งใดในรายการรหัสเกี่ยวกับสิ่งนี้
ฉันพบไซต์ช่วยเหลือจำนวนมากที่แนะนำเครื่องมือ Windows สำหรับแก้ไขปัญหา "BOOTMGR is missing" แต่ดูเหมือนไม่มีใครรู้ว่ามีอะไรเกิดขึ้นเบื้องหลัง ชนิดของการแนะนำให้ติดตั้ง Windows ใหม่เมื่อมีปัญหาเล็กน้อยกับมัน อย่างน้อยการแก้ไขเหล่านั้นดูเหมือนจะใช้งานได้ส่วนใหญ่เกี่ยวข้องกับเครื่องมือ Bcdedit และ Bootrec ตอนนี้ใครจะรู้ว่าสิ่งที่พวกเขาทำโดยเฉพาะอย่างยิ่งในส่วนที่เกี่ยวกับพาร์ทิชันย้าย?
อัปเดต 3:หลังจากความพยายามทดลองใช้และข้อผิดพลาดมากมายฉันเชื่อว่าตอนนี้โซลูชันอยู่ในไฟล์รีจิสตรีBCD- เทมเพลตซึ่งโดยปกติจะอยู่ใน \ Windows \ System32 \ config หากฉันได้รับการอัปเดตนี้โดยใช้คำสั่ง "bcdboot" Windows จะเริ่มการทำงานจากมัน ตอนนี้ฉันกำลังค้นหาว่าข้อมูลใดที่รีจิสทรีนี้มีเกี่ยวข้องกับคำถามข้างต้น ตัวชี้ไปยังเนื้อหาของรีจิสตรีนี้ยินดีต้อนรับ
อัปเดต 4:ปรากฎว่าในขณะที่ไฟล์ BCD- เทมเพลตได้รับการเขียนใหม่และมีเนื้อหาไบนารีที่แตกต่างจากรุ่นก่อน แต่ค่าภายในไม่เปลี่ยนแปลง ดังนั้นจะต้องเป็นอย่างอื่นที่ bcdboot.exe เขียน ก่อนหน้านี้ฉันเคยตรวจสอบแล้วว่ามันเปลี่ยน 32 boot block แรกของพาร์ติชั่นหรือไม่ แต่มันยังคงไม่เปลี่ยนแปลง แผนที่ Parititon ก็ไม่ได้รับการเปลี่ยนแปลงเช่นกัน ดังนั้นมันคืออะไรที่ bcdboot แก้ไขนอกเหนือจากรีจิสทรี BCD? มีคำแนะนำใดบ้างสำหรับฉันจะติดตามสิ่งนั้นได้อย่างไร มีเครื่องมือระดับต่ำที่แสดงให้ฉันเห็นว่าโปรแกรมเขียนไปยังไฟล์ใด
อัปเดต 5:คำตอบน่าจะเป็น: c: \ Boot \ BCD ก็เปลี่ยนไปและนั่นก็เป็นไฟล์สำคัญสำหรับกระบวนการของตัวจัดการการบูต ฉันจะตรวจสอบเรื่องนี้ในภายหลัง ...
อัปเดต 6:ดูเหมือนว่าจะเป็นรายละเอียดที่สำคัญที่ฉันมีสองพาร์ติชันที่สร้างขึ้นเมื่อฉันติดตั้ง Windows 7: พาร์ติชันขนาดเล็กของภาค 204800 ซึ่งดูเหมือนว่าจะเป็นพาร์ติชัน bootstrap ตามด้วยพาร์ติชันที่แท้จริง ขับ C :) เมื่อฉันพยายามถ่ายโอนการติดตั้งนี้ไปยังดิสก์ใหม่ที่ใหญ่กว่าฉันได้เก็บพาร์ติชั่นทั้งสองไว้ในไดรฟ์ใหม่แม้ว่าพวกเขาจะได้ออฟเซ็ตต่างกันก็ตาม ข้อความนี้นำไปสู่ข้อความ "BOOTMGR is missing" ตั้งแต่นั้นมาฉันใช้ bcdboot.exe บนพาร์ติชัน Windows เท่านั้นซึ่งเพิ่มไฟล์ \ Boot \ BCD บนพาร์ติชันนั้น ไฟล์ (และโฟลเดอร์) นั้นมีอยู่ แต่เดิมบนพาร์ติชันที่มีขนาดเล็กกว่าเท่านั้น ดังนั้นปัญหานี้อาจซับซ้อนกว่าในกรณีของฉันในฐานะพาร์ติชันหนึ่ง (บู๊ตสเตปเปอร์) ที่อ้างถึงพาร์ติชันอื่น (อันที่มีระบบปฏิบัติการ) ในขณะที่คนอื่นอาจต้องจัดการกับพาร์ติชันหนึ่งที่มีทั้งคู่ ง่ายกว่า
อัปเดต 7:พบหนึ่งรายละเอียดเพิ่มเติม: ไฟล์ \ Boot \ BCD บันทึกหมายเลขซีเรียลของ MBR หากหมายเลขนั้นไม่ตรงกันระบบจะไม่บู๊ต ต่อไปฉันจะทดสอบว่ามีการอ้างอิงบล็อกแบบสัมบูรณ์อยู่หรือไม่
\BCD\Boot
และคุณต้องการแก้ไขได้ตามปกติว่ามีการไม่ได้bcdedit.exe
bcdboot
และใช่พาร์ติชั่นแยกต่างหากสำหรับการรัดสายบู๊ต (ซึ่งจำเป็นต้องใช้เฉพาะเมื่อคุณใช้คุณสมบัติการเข้ารหัสดิสก์เต็มเนื่องจากรหัสถอดรหัสนั้นจะต้องถูกเก็บไว้นอกพาร์ติชั่นหลักของ Windows) ควบคุมกระบวนการบูตหากมีอยู่