Преобразование существующего дискового раздела в формат виртуальной машины VirtualBox.
Создаем слепок дискового раздела /dev/sda1
dd if=/dev/sda1 bs=512k of=os_image.img
Преобразуем созданный образ в формат VDI:
VBoxManage convertdd os_image.img os_image.vdi --format VDI
Преобразование образа виртуальной машины для записи на диск/Flash.
Если внутри виртуального диска один раздел, конвертируем VDI в сырой дамп:
VBoxManage internalcommands converttoraw os_image.vdi os_image.img
или
VBoxManage clonehd os_image.vdi /путь/os_image.img --format RAW
Вычисляем смещение до нужного раздела:
fdisk os_image.img
Команда (m для справки): p
Диск os_image.img: 0 МБ, 0 байт
16 heads, 63 sectors/track, 0 cylinders
Units = цилиндры of 1008 * 512 = 516096 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0x00000000
Устр-во Загр Начало Конец Блоки Id Система
os_image.img1 1 213 107320+ 83 Linux
Раздел начинается с первого трека, значит смещение будет 63 * 512 = 32256
Монтируем:
sudo mount -o loop,offset=32256 os_image.img /mnt
Записываем на диск /dev/sda8 (skip=63 - пропускаем 63 блока по 512 байт (bs=512)):
dd if=os_image.img bs=512 skip=63 of=/dev/sda8
если в образе больше одного раздела необходимо также указать размер копируемых
данных через опцию count=N, где N - размер в 512 байтных блоках.
Локальное монтирование статического VDI-образа.
К ранее рассчитанному смещению для дискового раздела, нужно учесть размер
заголовка (512 байт) и системного индекса VDI (4 байт на каждый мегабайт
размера VDI).
ls -al os_image.vdi
-rw------- 1 test test 110101504 2010-12-20 21:47 os_image.vdi
Для диска размером 105 Мб получаем смещение: 32256 + 512 + 4*(110101504/(1024*1024)) = 33188
Значение 33188 дополняем до границы в 512 байт:
echo "33188 - 33188 % 512 + 512" | bc
33280
Монтируем:
mount -o loop,offset=33280 os_image.vdi /mnt/vdi
Внимание ! Монтирование динамически расширяемых VDI невозможно, так как они
имеют неоднородную структуру.
Изменение размера VDI-образа:
Самый простой способ создать пустой VDI нужного размера, из виртуального
окружения разметить на нем ФС и скопировать данные. Любители графических
интерфейсов могут загрузить в виртуальном окружении LiveCD c gparted (http://gparted.sourceforge.net/).
Дополнение от pavlinux:
Еще один метод локального монтирования статического VDI-образа.
# modprobe nbd max_part=8 nbds_max=1
# qemu-nbd --connect=/dev/nbd0 WindowsXPSP3.vdi
# fdisk -l /dev/nbd0
Устр-во Загр Начало Конец Блоки Id Система
/dev/nbd0p1 * 1 2813 22595391 7 HPFS/NTFS
# mount -t ntfs-3g /dev/nbd0p1 /media/foofeel
# ls /media/foofeel
AUTOEXEC.BAT boot.ini Documents and Settings MSDOS.SYS
|