ฉันพยายามหาวิธีที่ง่ายกว่าในการติดตั้ง Windows และ Linux สำหรับการบูตคู่บนแล็ปท็อปของฉันไม่จำเป็นต้องอยู่ในลำดับนั้น สิ่งที่เราต้องทำคือติดตั้ง Windows ก่อนจากนั้นติดตั้ง linux และอนุญาตให้ GRUB จัดการ Windows
ดังนั้นสิ่งที่ฉันพยายามที่จะบรรลุคือการหาวิธีที่จะหลีกเลี่ยงกระบวนการติดตั้งที่น่ารำคาญ (windows) และเพียงแค่ใช้รูปภาพเพื่อคัดลอกโดยตรงลงในไดรฟ์ของฉัน สิ่งนี้จะทำให้ฉันสามารถรักษาตัวจัดการการบูต (GRUB) ไว้ได้ (ไม่ใช่ว่าฉันไม่สามารถกู้คืนได้ในภายหลัง แต่เป็นนโยบายของ Microsoft ที่จะผูกขาดในกรณีนี้ปฏิเสธการมีอยู่ของตัวจัดการการบูตอื่น ๆ ในระบบ)
ฉันได้รับสำเนาทางกฎหมายของ Windows 8.1 ก่อนจากนั้นจึงทำการติดตั้งบนเครื่องเสมือนโดยใช้ VirtualBox จากนั้นฉันสร้างพาร์ติชัน NTFS บนฮาร์ดไดรฟ์ที่แบ่งพาร์ติชัน GPT และคัดลอกเนื้อหาของพาร์ติชัน Windows จากอิมเมจ. vdi ไปยังพาร์ติชันที่สร้างขึ้นใหม่
แน่นอนมันยังไม่ทำงาน ฉันไม่รู้วิธีเปลี่ยน bootmgr มันให้
File: \Boot\BCD
Status: 0xc000000e
Info: The Boot Configuration Data for your PC is missing or contains errors.
เนื่องจากไม่พบไฟล์นั้นจากพาร์ติชั่นอื่นซึ่งใช้สำหรับการบูท, การกู้คืนระบบ, เป็นต้น
ตอนนี้ฉันได้อ่านแล้วว่าในที่สุด bootmgr จะเรียกใช้งาน winload.exe เพื่อบูต Windows ขึ้น ฉันไม่รู้ว่าจะทำอย่างไรต่อไป
ฉันคิดว่ามันควรจะทำงานในทางทฤษฎีเพราะฉันมีไฟล์ทั้งหมดที่จำเป็นในการเรียกใช้ Windows ฉันคิดด้วยว่าฉันไม่ควรเป็นคนเดียวที่คิดเรื่องนี้และด้วยเหตุนี้ฉันจึงอาจพลาดบางสิ่งบางอย่างที่นี่พื้นฐาน บางทีมันทำไปแล้ว?
ฉันมีความคิดเล็กน้อยว่าการบูททำงานอย่างไร สิ่งที่ฉันเข้าใจได้คือเมื่อคุณดูอัลบูท Windows และ Linux คุณเชื่อมโยง windows bootloader เข้ากับลินุกซ์ ดังนั้นสิ่งที่ฉันพยายามที่จะบรรลุคือการกำจัด bootloader ของ Windows อย่างใด
แก้ไข
ฉันได้รับการมองหาที่ไฟล์ไบนารีและbootmgr อ่านไฟล์ BCD และแสดงรายการตัวเลือกของคุณซึ่งคุณสามารถเลือกที่จะบูตได้\Boot\BCDbootmgr
ข้อมูลเช่นการดำเนินการwinload.exeอยู่ในไฟล์ BCD ตอนนี้ฉันคิดว่าbootmgrตัวเองดำเนินการโดย syslinux โดยใช้chain.c32โมดูล สิ่งที่ฉันพยายามทำคือการดำเนินการอย่างใดหน้าต่าง bootloader คือwinload.exeโดยตรงจาก syslinux (ถ้าเป็นไปได้) หรือแก้ไขbootmgrเพื่อที่จะดำเนินการwinload.exeเอง (ซึ่งเป็นเส้นทางที่จะโดยตรงในbootmgrปฏิบัติการ) โดยไม่ต้องมองหา BCD หรือสิ่งอื่นใด
การไฮเบอร์เนต (ซึ่งต้องใช้ขั้นตอนที่แตกต่างกัน) ไม่ต้องกังวลกับฉันในขั้นตอนนี้
แก้ไขคำถามของคุณเพื่อบอกเราประเภทของเฟิร์มแวร์และ (ถ้า EFI) ว่าคุณได้เปิดใช้งานโมดูลสนับสนุนความเข้ากันได้ในการตั้งค่าของเฟิร์มแวร์หรือไม่
เฟิร์มแวร์ของฉันคือ EFI (โดยเปิดใช้งาน CSM) และปกติฉันจะบูตเข้าสู่ Arch Linux โดยใช้ GRUB ฉันได้ค้นพบว่าbootmgrดำเนินการSystem32\winload.exeในระบบมรดกและSystem32\winload.efiใน EFI
ฉันมี0.0ความคิดเกี่ยวกับสิ่งที่ต้องทำจากที่นี่ ในช่วง 10 วันที่ผ่านมาฉันพยายามเปลี่ยนแปลง BCD และฉันคิดว่าฉันกำลังจะประสบความสำเร็จ แต่นั่นไม่เกี่ยวข้องเพราะสิ่งที่ฉันต้องการทำจริงๆคือการข้ามตัวจัดการการบูต Windows ไปด้วยกัน
หากคุณมีความคิดใด ๆ ว่ามีวิธีการดำเนินการwinload.efiจากเปลือก EFI (เพียงเดา) หรือการปรับเปลี่ยนอื่น ๆ เพื่อ GRUB เพื่อที่จะบูต Windows ในโหมด EFI โดยไม่ต้อง chainloader
คำแนะนำใด ๆ ยินดีต้อนรับ
ภาคผนวก
การโพสต์ในฟอรัมอาจให้ข้อมูลเชิงลึกที่เป็นประโยชน์:
http://reboot.pro/topic/19371-chainload-directly-to-winloadexe/
1
ตอนนี้ grub4dos สามารถทำการโหลด bootloader (เช่น NTLDR หรือ BOOTMGR) เพราะมันสามารถทำหน้าที่แทนรหัสที่มีอยู่ใน bootsector "ปกติ" (เช่น 300 ไบต์ของรหัสเครื่อง)
รหัสนี้เพียงแค่ตั้งค่าพารามิเตอร์สองสามอย่างแล้วเรียกใช้ตัวโหลด
แม้จะเป็นเรื่องที่ไม่ง่ายเลยที่จะเข้าใจและทำซ้ำด้วยรหัสที่แตกต่างกัน
โหลดเดอร์ระบบ NT เช่น BOOTMGR มีระบบปฏิบัติการ "โหมดจริง" ไม่มากก็น้อย (ไม่เหมือนกับระบบ DOS) และเครื่องมือ / เครื่องมือในการแยกวิเคราะห์ทั้งข้อความธรรมดาและรีจิสตรี Registry มันไม่ใช่สิ่งที่สามารถ เขียนตั้งแต่เริ่มต้นได้อย่างง่ายดาย
ผู้ชายที่ดี @ReactOS กำลังทำงานเขียน FREELDR (ซึ่งมีวัตถุประสงค์เพื่อทดแทน NTLDR ที่ง่ายกว่ามาก) มาตั้งแต่ปี (และเชื่อว่าฉันมีโปรแกรมเมอร์ของ ReactOS อยู่บ้างและดีสำหรับพวกมัน)
มันดูเหมือนว่า ( แต่ก็ไม่ได้บันทึกไว้อย่างชัดเจน) ว่าพวกเขามีการจัดการเพื่อการบูตทดลองเซิร์ฟเวอร์ 2003 NTLDR
2
ด้วยการแนะนำการสนับสนุนสำหรับ (U) EFI, BootMgr ช่วยในการสรุปความแตกต่างระหว่าง BIOS และ (U) EFI ตัวอย่างเช่นที่นี่มีสองลำดับดังนี้
BIOS (PCAT) -> BootMgr { BootMgr stub -> embedded BootMgr.exe } -> WinLoad.exe -> Windows 64-bit (U)EFI -> BootMgFw.efi -> BootMgr.efi -> WinLoad.efi -> WindowsWinLoad คาดว่าจะมีสภาพแวดล้อมบางอย่าง (รวมถึง API) BootMgr ดูแลสิ่งนี้ดังนั้น [เกือบ] โปรแกรม WinLoad เดียวกันจะทำงานในทั้งสองสภาพแวดล้อม
ในความเป็นจริง (U) EFI กำหนดวิธีการจัดเก็บและดึงพารามิเตอร์การบูตดังนั้น BCD ของ BootMgr จึงครอบคลุมวัตถุประสงค์เดียวกันโดยไม่คำนึงถึง BIOS / (U) EFI
แต่นอกเหนือจาก BIOS และ (U) EFI ที่แตกต่างกัน BootMgr ให้คุณเลือก "boot choice" ในขณะที่ WinLoad จะบู๊ตระบบปฏิบัติการเฉพาะที่รู้วิธีบู๊ต
ขึ้นอยู่กับสภาพแวดล้อมของ WinLoad ที่คาดว่าจะมีอยู่มันอาจจะเรียก WinLoad ได้โดยตรง wimboot ของ Michael Brown เรียกใช้ BootMgr PE [1] โดยตรงดังนั้นจึงสามารถเรียก WinLoad ได้โดยตรงยกเว้น WinLoad อาจต้องการสภาพแวดล้อมมากขึ้น คุณสามารถลอง!
[1] อย่าสับสนกับ BootMgr ที่ GRUB4DOS และ Syslinux 'chain.c32 สามารถเรียกใช้ได้ BootMgr นั้นมีต้นขั้วซึ่งรู้วิธีเรียกใช้ BootMgr PE แบบฝัง