วิธีการคัดลอกเนื้อหา VirtualBox VDI ไปยังพาร์ติชันและทำการบูทสองระบบจากมัน?


12

ฉันเป็นผู้ใช้ Linux แต่ฉันเก็บ ISO XP ของ Windows แบบบีบอัดไว้กับฉันในไดรฟ์ปากกาสำหรับกรณีที่ฉันต้องการ Windows อย่างยิ่งที่จะทำอะไรบางอย่าง ใช้งานได้ใน VirtualBox เกือบตลอดเวลา

แต่ตอนนี้ฉันต้องการเล่นเกมบางเกมดังนั้นฉันต้องการเรียกใช้อิมเมจ Windows โดยกำเนิด คอมพิวเตอร์ของฉันไม่มีไดรฟ์ซีดีดังนั้นไม่สามารถเขียน ISO และทำการติดตั้งได้ตามปกติ

สิ่งที่ฉันพยายามทำคือการย้ายอิมเมจ Windows ที่ติดตั้งไปยังพาร์ติชัน NTFS แบบฟิสิคัลบน HDD ของฉันและตั้งค่า GRUB เพื่อให้ฉันบูทสองครั้ง

ฉันพบบทเรียนมากมายที่เกี่ยวข้องกับการทำให้ VDI เป็นไดรฟ์ทางกายภาพ แต่พวกเขาคิดว่าฉันต้องการเขียนทับไดรฟ์ทั้งหมดของฉัน การย้ายอิมเมจดิสก์ดิบddไปยังพาร์ติชันทำให้พาร์ติชันเสียหาย

ฉันยังลองใช้เคล็ดลับ VMDK เพื่อใช้พาร์ติชันว่างเปล่านั้นและติดตั้ง Windows บนมัน แม้ว่าขั้นตอนโหมดข้อความของการติดตั้งจะเสร็จสิ้นโดยไม่มีปัญหา VM จะไม่ทำงานทั้งขัดข้องและทำการรีบูตหรือหยุดทันที (ขึ้นอยู่กับวิธีที่ฉันสร้าง VMDK ด้วย-rawdisk /dev/sda3หรือ-rawdisk /dev/sda -partition 3)

คำตอบ:


4

ฉันใช้เวลาทั้งหมดในการค้นคว้าเมื่อวานนี้และในที่สุดก็สามารถบูต Windows XP ได้ มันควรจะค่อนข้างคล้ายกับระบบปฏิบัติการอื่น ๆ เช่นกัน แต่การดำเนินการเป็นทุกอย่าง แต่ไม่น่ารำคาญ

เนื่องจากเป็นการดำเนินการที่เป็นอันตรายฉันขอแนะนำให้สำรองข้อมูลอันมีค่าของคุณ

นี่คือขั้นตอน:

การจัดเตรียม

ในกรณีที่ Windows XP คุณต้องลืมการตั้งค่าตัวอักษรดิสก์และพาร์ติชันปัจจุบันดังนั้นคุณต้องลบค่าทั้งหมดออกจากคีย์ HKEY_LOCAL_MACHINE / MountedDevices บนเครื่องเสมือนก่อนการโยกย้าย เคอร์เนลจะสร้างใหม่ในการรีบูตครั้งถัดไป บนเครื่องเสมือน Linux หมายถึงการแก้ไข fstab หลังการโอนย้าย

การเมานต์อิมเมจ VDI

คุณไม่สามารถคัดลอก VDI ทั้งหมดไปยังพาร์ติชันได้เนื่องจากมันมี MBR ด้วย คุณต้องคัดลอกเฉพาะพาร์ติชันเสมือนดังนั้นก่อนอื่นคุณต้องหาวิธีในการเมานต์ VDI

คุณต้องการnbdไดรเวอร์และqemu-nbdคำสั่ง บน Ubuntu มันอยู่ในqemu-kvmแพ็คเกจ

ก่อนโหลดไดรเวอร์ nbd:

# modprobe nbd

นี้ควรทำให้บางอุปกรณ์nbd/dev

จากนั้นเมานต์ VDI:

# qemu-nbd -c /dev/nbd0 path_to.vdi

สิ่งนี้ควรทำ/dev/nbd0p1, /dev/nbd0p2และ/dev/nbd0p3อื่น ๆ สำหรับพาร์ติชันเสมือนทั้งหมด สามารถติดตั้งได้เหมือนกับอุปกรณ์ทั่วไป

การโอนย้ายพาร์ติชัน

ใช้ddสำหรับการถอดแบบพาร์ติชันทั้งสองก่อนการดำเนินการ:

# dd -if=<nbd_device> -of=<real_partition>

เช่น.:

# dd -if=/dev/nbd0p3 -of=/dev/sda4

การทำงานของโหมดddเงียบอาจใช้เวลาหลายนาทีหรือครึ่งชั่วโมง ในระหว่างการดำเนินการคุณอาจเปิดเทอร์มินัลและใช้fdisk -lเพื่อดูว่าทุกอย่างเป็นไปด้วยดี

UPDATE:

เห็นได้ชัดว่า NBD ไม่ใช่โซลูชันที่เข้าใจผิดได้ มันอาจทำให้เกิดข้อผิดพลาด I / O และทำให้ dd ล้มเหลว ยิ่งไปกว่านั้นความพยายามครั้งต่อไปล้มเหลวทันที คุณยังสามารถลองสร้างดิสก์ดิบ VMDK ด้วยคำสั่งนี้ (ภายใต้ linux):

$ VBoxManage internalcommands createrawvmdk -filename physical.vmdk -rawdisk /dev/sda

คุณต้องอยู่ในdiskกลุ่มเพื่อให้มันทำงานได้ จากนั้นเพิ่ม vmdk นี้ไปยังเครื่องเสมือนเป็นฮาร์ดไดรฟ์รองจากนั้นใช้ Live Linux ISO ddในพาร์ติชัน

แก้ไขบูตเซกเตอร์ของพาร์ติชัน NTFS

นี่คือส่วนที่แฮ็ก

เราเกือบจะพร้อม แต่ Windows XP 0x1Cจะไม่บูตเพราะเราต้องกำหนดจำนวนของภาคซ่อนของระบบแฟ้มที่ชดเชย นี่เป็นจำนวนเซ็กเตอร์ก่อนพาร์ติชัน NTFS เราสามารถรับหมายเลขนี้จากfdisk -ulคำสั่ง startเขตของรัฐที่ส่งออกภาคพาร์ทิชันที่กำหนดเริ่มต้นที่ที่เป็นพื้นจำนวนของภาคก่อนที่พาร์ทิชัน เพื่อให้ได้ตัวเลขจากนั้นแปลงเป็นเลขฐานสิบหกโดยใช้ gcalctool เป็นต้น

เปิดพาร์ติชันด้วยhexeditเช่นนี้:

# hexedit /dev/sda4

จากนั้นเขียนจำนวนของภาคที่ซ่อนอยู่ตามลำดับของ endian เพียงเล็กน้อยที่1Cออฟเซ็ต วิธี endiean น้อย: จะเป็น0xABCDEFGH GH EF CD ABหากเลขฐานสิบหกสั้นกว่า 8 หลักให้นำหน้าด้วยเลขศูนย์

เมื่อเสร็จแล้วให้บันทึกและออก (Ctrl + X)

การตั้งค่าด้วง

คุณต้องบอก GRUB ให้บูตพาร์ติชันนั้นโดยตรงเพื่อให้ GRUB เพิ่มรายการเมนูต่อไปนี้:

title       Microsoft Windows XP Professional
root        (hd0,3)
savedefault
makeactive
chainloader +1

จะ(hdX, Y)ระบุพาร์ติชั่นที่ไหน X คือ 0 สำหรับฮาร์ดดิสเริ่มต้น, 1 สำหรับ/dev/sda, 2 /dev/sdbเป็นต้นเป็นต้น Y คือหมายเลขพาร์ติชัน 0 สำหรับ/dev/sda1, 1 สำหรับ/dev/sda2, เป็นต้น

สิ่งนี้ควรคล้ายกับ GRUB2 เช่นกัน แต่ใช้ไวยากรณ์ที่แตกต่างกันเล็กน้อยสำหรับรายการเมนู

สัมผัสสุดท้าย

พาร์ติชัน NTFS ใหม่พร้อมที่จะบู๊ตแล้ว แต่คุณยังต้องแฮ็คเพื่อเข้าถึงเดสก์ท็อป Windows XP ระบบอื่นอาจต้องการแฮ็คที่แตกต่างกัน ก่อนอื่น boot.ini ต้องได้รับการแก้ไข

[boot loader]
timeout=1
default=multi(0)disk(0)rdisk(0)partition(3)\WINDOWS
[operating systems]
multi(0)disk(0)rdisk(0)partition(3)\WINDOWS="Microsoft Windows XP Professional" /noexecute=optin /fastdetect

ตั้งหมายเลข parition ตาม ฉันติดตั้งไว้ใน / dev / sda4 ดังนั้นหมายเลขพาร์ติชันควรเป็น 3

คุณอาจต้องแก้ไขรายการ MountedDevices ในรีจิสทรีหาก Windows ค้างไว้ก่อนหน้าจอการเข้าสู่ระบบ

สตรีที่คุณสามารถดูได้จาก<path to windows>/system32/config/system chntpwนี่อาจเป็นปัญหาหากอักษรระบุไดรฟ์ระบบของคุณไม่ใช่ C. เนื่องจากchntpwความสามารถในการเขียนรีจิสทรีของมี จำกัด มากคุณต้องใช้ทางเลือกและใช้ hexeditor เช่น ghex2 เพื่อแก้ไข คุณต้องค้นหา\DosDevices\C:และแทนที่ C ด้วยอักษรชื่อไดรฟ์อื่นFในกรณีของฉัน

หลังจากนี้คุณควรจะสามารถเข้าถึงเดสก์ท็อปได้ตอนนี้คุณต้องตามล่าหาไดรเวอร์ทั้งหมด แต่มันไม่ได้อยู่ในขอบเขตของบทช่วยสอนนี้

แหล่งที่มา

การย้าย Windows XP ไปยังพาร์ติชันอื่น

เมานต์ VDI ภายใต้ linux


0

คุณสามารถลองใช้ partimage และ gdisk เพื่อทำสิ่งนั้นได้ ใช้ gdisk หรือโปรแกรมพาร์ติชั่นอื่นและปรับขนาดดิสก์ปัจจุบันของคุณ / ตั้งค่าพาร์ติชั่นบนดิสก์บางตำแหน่ง idealy มันจะเป็นพาร์ติชันหลัก ฉันมักจะเก็บพาร์ติชัน 1 สำหรับ windows และ 2+ สำหรับข้อมูล linux

เมื่อตั้งค่าพาร์ติชันแล้วคุณสามารถใช้ gdisk หรือ ghost clone อื่นเพื่อสร้างไฟล์สำรองหรือภาพตรงไปยังไดรฟ์อื่น เป็นไปได้ที่จะตั้งค่าการเชื่อมต่อเครือข่ายไปยังโฮสต์หากคุณต้องการวางไฟล์ด้วยวิธีนี้หรือคุณสามารถสร้างไฟล์ img จากนั้นคัดลอกจากไฟล์ vmdk ไปยังระบบโฮสต์ของคุณ ... จากนั้นใช้ซอฟต์แวร์ภาพเพื่อเรียกคืนพาร์ติชัน ไปยังตำแหน่งที่คุณสร้างบนระบบโฮสต์

กำหนดค่าด้วงตามต้องการเพื่อเพิ่มการบูทให้กับพาร์ติชัน ntfs


คุณอาจ moutnt vmdk ใน mannter ที่จะอนุญาตให้ซอฟต์แวร์ภาพอ่านโดยตรงจากโฮสต์ jsut ขึ้นอยู่กับว่าซอฟต์แวร์รูปภาพนั้นเป็นอย่างไร
Kendrick

ฉันใช้เวลาทั้งหมดในการค้นคว้าเมื่อวานนี้และในที่สุดก็สามารถบูต Windows XP ได้ ฉันจะเขียนรายละเอียดลงไป มันไม่สำคัญเลย
Calmarius

มันค่อนข้างแดกดัน แต่ฉันจะต้องทำกระบวนการนี้ในไม่ช้า ฉันมีพีซีที่ไม่ชอบติดตั้งโซลาริสด้วยเหตุผลบางอย่างดังนั้นฉันต้องดึงข้อมูลจาก VM ฉันต้องไปที่เครื่องใหม่
Kendrick
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.