Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การแก้ไขปัญหา >> Linux

โอนไฟล์ VHD ไปยังฮาร์ดดิสก์จริงด้วย dd: คู่มือปฏิบัติ (VirtualBox / QEMU)

VHD (Virtual Hard Disk) = ไฟล์ใหญ่จำลองดิสก์จริงใน VirtualBox/QEMU ใช้รัน Windows, macOS, BSD, Linux ฯลฯ ใน VM

ไม่สามารถ dd ไฟล์ VHD ตรงๆ ได้ (ต่างจาก ISO) แต่มีวิธี — ไม่ต้องแปลงเป็น ISO หากใช้ VirtualBox บน Linux มอเดิร์น

⚠️ ข้อควรระวัง

  • **Backup ข้อมูลสำคัญก่อน** — คำสั่งนี้ทำลายข้อมูลบนดิสก์ปลายทาง
  • ดิสก์ปลายทางต้อง **unmounted** แต่ต่ออยู่ (เช่น USB HDD ที่ยังเสียบแต่มาunmount)
  • อย่าใช้ดิสก์ที่บูทระบบอยู่

วิธีที่ 1: ใช้ VBoxManage (ง่ายที่สุด — VirtualBox)

  1. แปลง VHD/VHDX → RAW image:
    VBoxManage clonehd freeBSD.VHDX --format RAW freeBSD.RAW
  2. เขียน RAW ไปดิสก์จริงด้วย dd:
    sudo dd if=freeBSD.RAW of=/dev/sde
    • แทน freeBSD.RAW = ไฟล์ RAW ที่สร้าง, /dev/sde = ดิสก์ปลายทาง
    • เช็กชื่อดิสก์: sudo fdisk -l

อาจขึ้น error "no space left on device" แต่ทดสอบผ่าน — กระบวนการเพิ่ม zero padding

วิธีที่ 2: ใช้ QEMU NBD (Network Block Device)

สำหรับผู้ใช้ QEMU เท่านั้น — ขั้นตอนซับซ้อนกว่า

  1. sudo modprobe nbd
  2. qemu-nbd -r -c /dev/nbd0 -f vpc ourTest.vhd (อาจต้อง sudo)
  3. เขียนพาร์ติชัน:
    qemu-nbd -P 2 -r -c /dev/nbd2 -f vpc ourTest.vhd
    sudo ddrescue -v -f /dev/nbd2 /dev/sde2
  4. แทน device/partition ให้ถูกต้อง (ใช้ fdisk -l เช็ก)

VHDX (Hyper-V, >2TB):

qemu-nbd -c /dev/nbd0 -f VHDX ourTest.vhdx
sudo ddrescue -v -f /dev/nbd2 /dev/sde2

mount ตรวจสอบ: sudo mount /dev/nbd2 /mnt (ต้องว่าง)

วิธีที่ 3: Unmount และ Disconnect (QEMU)

sudo umount /mnt
qemu-nbd -d /dev/nbd2

เกี่ยวกับผู้เขียน

Kevin Arrows — MCTS, 10+ ปีประสบการณ์