Skip to contentSkip to conversation

Converting QEMU Harddisk to native Partition

DISCUSSION Erik Rull 2 participants 4 messages Feb 15, 2011 KVM

lore
Share & tools
lore

Erik Rull

author
#0 lore raw

Hi all,

I have currently virtualized two partitions (/dev/sda2 and /dev/sda3) that are exposed as QEMU Harddisks to the Windows XP Guest (Drive C and D there). Are there possibilities to convert or adapt those to native partitions or native disks so that I could theoretically boot the Windows that is placed in the virtual disk natively?

Thanks!

Best regards,

Erik

#1 lore raw
Quoted 10 lines · Erik Rull

Hi all,

I have currently virtualized two partitions (/dev/sda2 and /dev/sda3) that are exposed as QEMU Harddisks to the Windows XP Guest (Drive C and D there).
Are there possibilities to convert or adapt those to native partitions or native disks so that I could theoretically boot the Windows that is placed in the virtual disk natively?

Thanks!

Anything that works on real hardware is likely to work if run in a guest. At the very least, one of several similar and equivalent methods would be, create another virtual disk a bit bigger than the Windows partition you want to make native and attach it to a VM with the Windows partition you want to make native and boot a linux rescue disk. Put a linux file system on the new disk and mount it (say at /mnt/workspace) then, assuming the Windows partition you want to make native is hda1:

# dd if=/dev/sda2 of=/mnt/workspace/windowsCdrive.img bs=1M
# dd if=/dev/sda3 of=/mnt/workspace/windowsDdrive.img bs=1M
# scp /mnt/workspace/windows*img user@vmhost:~/

I'm assuming you get how that would give you a block copy of the guest partitions as files on the host, which you could then lay down on a real disk via dd and a USB device for example.

Signature · 1 line
David.
author
#2 lore raw
Quoted 16 lines · David Mair
Quoted 8 lines

I have currently virtualized two partitions (/dev/sda2 and /dev/sda3) that are exposed as QEMU Harddisks to the Windows XP Guest (Drive C and D there).
Are there possibilities to convert or adapt those to native partitions or native disks so that I could theoretically boot the Windows that is placed in the virtual disk natively?

Anything that works on real hardware is likely to work if run in a guest. At the very least, one of several similar and equivalent methods would be, create another virtual disk a bit bigger than the Windows partition you want to make native and attach it to a VM with the Windows partition you want to make native and boot a linux rescue disk. Put a linux file system on the new disk and mount it (say at /mnt/workspace) then, assuming the Windows partition you want to make native is hda1:

Quoted 8 lines
# dd if=/dev/sda2 of=/mnt/workspace/windowsCdrive.img bs=1M
# dd if=/dev/sda3 of=/mnt/workspace/windowsDdrive.img bs=1M
# scp /mnt/workspace/windows*img user@vmhost:~/

I'm assuming you get how that would give you a block copy of the guest partitions as files on the host, which you could then lay down on a real disk via dd and a USB device for example.

Yeah, I thought about a similar approach already but it looked too complex to me :-) I assume that my hardware resources might be too limited for such an operation, but I will give it a try. For saving space I could try to do a .gz or .tgz out of it right (using "dd | tar...")? Are there other possibilities from the host side to handle that? I heard about the qemu-img tool but it doesn't seem to match my usecase.
Or have I just missed some parameters?

Thanks.

Best regards,

Erik

#3 lore raw
Quoted 26 lines · Erik Rull
Quoted 16 lines · David Mair
Quoted 8 lines

I have currently virtualized two partitions (/dev/sda2 and /dev/sda3) that are exposed as QEMU Harddisks to the Windows XP Guest (Drive C and D there).
Are there possibilities to convert or adapt those to native partitions or native disks so that I could theoretically boot the Windows that is placed in the virtual disk natively?

Anything that works on real hardware is likely to work if run in a guest. At the very least, one of several similar and equivalent methods would be, create another virtual disk a bit bigger than the Windows partition you want to make native and attach it to a VM with the Windows partition you want to make native and boot a linux rescue disk. Put a linux file system on the new disk and mount it (say at /mnt/workspace) then, assuming the Windows partition you want to make native is hda1:

Quoted 8 lines
# dd if=/dev/sda2 of=/mnt/workspace/windowsCdrive.img bs=1M
# dd if=/dev/sda3 of=/mnt/workspace/windowsDdrive.img bs=1M
# scp /mnt/workspace/windows*img user@vmhost:~/

I'm assuming you get how that would give you a block copy of the guest partitions as files on the host, which you could then lay down on a real disk via dd and a USB device for example.

Quoted 8 lines

Yeah, I thought about a similar approach already but it looked too complex to me :-) I assume that my hardware resources might be too limited for such an operation, but I will give it a try. For saving space I could try to do a .gz or .tgz out of it right (using "dd | tar...")?
Are there other possibilities from the host side to handle that? I heard about the qemu-img tool but it doesn't seem to match my usecase. Or have I just missed some parameters?

qemu-nbd (see man qemu-nbd) might be what you are looking for, booting a guest with it attached seems simpler to me so I admit I haven't tried qemu-nbd.

If it's a simple block image you can mount it on the host via the loop device like any unencoded disk image in a file.

You could go directly to a USB disk in a guest just by using USB pass-thru of a physical disk, I'd boot a linux rescue disk and use dd.

Signature · 1 line
David Mair.