Монтирование vdi (образ VirtualBox) в Ubuntu: различия между версиями
imported>Vix Нет описания правки |
imported>Vix |
||
(не показано 8 промежуточных версий этого же участника) | |||
Строка 61: | Строка 61: | ||
* [http://andrey.fishchenko.name/linux/ubuntu-%D0%BC%D0%BE%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-vdi взято тут] | * [http://andrey.fishchenko.name/linux/ubuntu-%D0%BC%D0%BE%D0%BD%D1%82%D0%B8%D1%80%D0%BE%D0%B2%D0%B0%D0%BD%D0%B8%D0%B5-vdi взято тут] | ||
=='''Монтирование стандартными утилитами virtualbox от oracle и Linux'''== | |||
Сначала определим какие есть у нас образы и их тип - динамические или статические: | |||
$vboxmanage list hdds | |||
UUID: c8ee2279-a3cc-4ad6-91a7-6846cd4e84e7 | |||
Parent UUID: base | |||
Format: VDI | |||
Location: /home/user/VirtualBox_VMs/WinXp/WinXp.vdi | |||
State: created | |||
Type: normal | |||
Usage: WinXp (UUID: 3e3b5aa6-eccc-5efd-a2c2-3bbb4e71f8ba) | |||
UUID: d9c6f76b-2db3-4d48-bcc6-e5170414b1fd | |||
Parent UUID: base | |||
Format: VDI | |||
Location: /home/user/VirtualBox_VMs/Debian/Debian.vdi | |||
State: created | |||
Type: normal | |||
Usage: Debian (UUID: a634089b-bfa8-4376-83f7-3d54cc2560cb) | |||
проверяем статический образ или нет: | |||
$vboxmanage showhdinfo /home/user/VirtualBox_VMs/WinXp/WinXp.vdi | |||
UUID: c8ee2279-a3cc-4ad6-91a7-6846cd4e84e7 | |||
Accessible: yes | |||
Logical size: 15389 MBytes | |||
Current size on disk: 15390 MBytes | |||
Type: normal (base) | |||
Storage format: VDI | |||
'''Format variant: fixed default''' | |||
In use by VMs: WinXp (UUID: 3e3b5aa6-eccc-5efd-a2c2-3bbb4e71f8ba) | |||
Location: /home/user/VirtualBox VMs/WinXp/WinXp.vdi | |||
если '''fixed default''' - значит статический, что нам и нужно... | |||
теперь вычисляем смещение первого раздела на нужном нам образе: | |||
$head -c 348 /home/user/VirtualBox_VMs/WinXp/WinXp.vdi |tail -c 4|perl -ne 'print unpack("L",$_),"/n"' | |||
$69632 | |||
или так: | |||
$od -j344 -N4 -td4 /home/user/VirtualBox_VMs/WinXp/WinXp.vdi | awk 'NR==1{print $2;}' | |||
$69632 | |||
узнаем все о нашем диске: | |||
$dd if=/home/user/VirtualBox_VMs/WinXp/WinXp.vdi of=vdstart bs=1 skip=69632 count=1b >/dev/null | |||
$/sbin/sfdisk -luS vdstart | |||
Disk vdstart: cannot get geometry | |||
Disk vdstart: 0 cylinders, 255 heads, 63 sectors/track | |||
Units = sectors of 512 bytes, counting from 0 | |||
Device Boot Start End #sectors Id System | |||
vdstart1 * 63 31487399 31487337 7 HPFS/NTFS/exFAT | |||
vdstart2 0 - 0 0 Empty | |||
vdstart3 0 - 0 0 Empty | |||
vdstart4 0 - 0 0 Empty | |||
информация получена.. | |||
удаляем теперь ненужное: | |||
$rm vdstart | |||
теперь можно просто примонтировать и работать с данными: | |||
sudo mount -o loop,offset=$((69632+63*512)) /home/user/VirtualBox_VMs/WinXp/WinXp.vdi /mnt | |||
или делаем устройство для снятие образа или обслуживания: | |||
losetup -o $((69632+63*512)) /dev/loop11 /home/user/VirtualBox_VMs/WinXp/WinXp.vdi | |||
для проверки монтирование: | |||
ntfs-3g /dev/loop11 /mnt | |||
в каталоге /mnt должно появиться содержимое диска... | |||
* [http://binsh.ru/2010/07/21/mount-fs-from-vdi.html использованы материалы от сюда] | |||
* [http://isaleksey.blogspot.ru/2011/03/dos-vs-virtualbox-for-linux.html и от сюда] | |||
* [http://przemoc.net/tips/linux#mounting_partition_from_vdi_fixed-size_image и от сюда] |
Текущая версия от 22:51, 29 сентября 2013
Монтирование через стандартную утилиту virtualbox-fuse
По некоторым причинам мне приходится пользоваться VirtualBox, к сожалению Wine может запустить далеко не все приложения, которые мне нужны для работы. И иногда нужно что то достать с виртуального жёсткого диска, но каждый раз запускать VirtualBox слишком долго.
Вот тут то и поможет пакет virtualbox-fuse. Он использует библиотеку для доступа к образам VirtualBox и монтирует в локальную папку, используя FUSE. В локальной папке вы обнаружите EntireDisk, Partition1, Partition2 и т.д.
Итак, для начала установим сам пакет:
sudo apt-get install virtualbox-fuse
Теперь откройте файл /etc/fuse.conf:
sudo nano /etc/fuse.conf
В данном файле найдите такую строчку:
#user_allow_other
Уберите решётку (#) и сохраните файл.
Теперь разберёмся с самой программой. Подключим образ vdi:
sudo vdfuse -f /home/sk8er/VirtualBoxVMs/Windows7/Windows7.vdi /home/sk8er/VirtualBoxVMs/Windows7/mount
Где:
/home/sk8er/VirtualBoxVMs/Windows7/Windows7.vdi - путь к образу vdi /home/sk8er/VirtualBoxVMs/Windows7/mount - путь для монтирования
В монтируемой папке появятся файлы EntireDisk, Partition1, Partition2 и т.д. Собственно их и нужно подключить, чтобы видеть файлы и папки на разделах виртуального диска.
Итак, ищем нужный файл (я просто выбрал тот, что имел самый большой объём) и подключаем:
sudo mount /home/sk8er/VirtualBoxVMs/Windows7/mount/Partition1 /home/sk8er/VirtualBoxVMs/Windows7/mount/disk
Где:
/home/sk8er/VirtualBoxVMs/Windows7/mount/Partition1 - путь к файлу /home/sk8er/VirtualBoxVMs/Windows7/mount/disk - путь для монтирования
Вот и всё, теперь вы можете спокойно редактировать виртуальный жёсткий диск VirtualBox.
Монтирование через утилиты qemu-kvm (kvm)
Перед монтированием жесткого диска виртуальной машины необходимо ее выключить.
- установка необходимого приложения
$ sudo apt-get install qemu-kvm
- загрузка модуля
$ sudo modprobe nbd
- создание loopback устройства для образа
$ sudo qemu-nbd -c /dev/nbd0 [image].vdi
- монтируем разделы, которые доступны как /dev/nbd0pXXX
$ sudo mount -o noatime,noexec /dev/nbd0p1 /tmp/vdi/
По завершению работы с образом необходимо отмантировать и выключить nbd.
$ sudo umount /tmp/vdi/ $ sudo qemu-nbd -d /dev/nbd0
Монтирование стандартными утилитами virtualbox от oracle и Linux
Сначала определим какие есть у нас образы и их тип - динамические или статические:
$vboxmanage list hdds
UUID: c8ee2279-a3cc-4ad6-91a7-6846cd4e84e7 Parent UUID: base Format: VDI Location: /home/user/VirtualBox_VMs/WinXp/WinXp.vdi State: created Type: normal Usage: WinXp (UUID: 3e3b5aa6-eccc-5efd-a2c2-3bbb4e71f8ba)
UUID: d9c6f76b-2db3-4d48-bcc6-e5170414b1fd Parent UUID: base Format: VDI Location: /home/user/VirtualBox_VMs/Debian/Debian.vdi State: created Type: normal Usage: Debian (UUID: a634089b-bfa8-4376-83f7-3d54cc2560cb)
проверяем статический образ или нет:
$vboxmanage showhdinfo /home/user/VirtualBox_VMs/WinXp/WinXp.vdi UUID: c8ee2279-a3cc-4ad6-91a7-6846cd4e84e7 Accessible: yes Logical size: 15389 MBytes Current size on disk: 15390 MBytes Type: normal (base) Storage format: VDI Format variant: fixed default In use by VMs: WinXp (UUID: 3e3b5aa6-eccc-5efd-a2c2-3bbb4e71f8ba) Location: /home/user/VirtualBox VMs/WinXp/WinXp.vdi
если fixed default - значит статический, что нам и нужно...
теперь вычисляем смещение первого раздела на нужном нам образе:
$head -c 348 /home/user/VirtualBox_VMs/WinXp/WinXp.vdi |tail -c 4|perl -ne 'print unpack("L",$_),"/n"'
$69632
или так:
$od -j344 -N4 -td4 /home/user/VirtualBox_VMs/WinXp/WinXp.vdi | awk 'NR==1{print $2;}'
$69632
узнаем все о нашем диске:
$dd if=/home/user/VirtualBox_VMs/WinXp/WinXp.vdi of=vdstart bs=1 skip=69632 count=1b >/dev/null $/sbin/sfdisk -luS vdstart Disk vdstart: cannot get geometry Disk vdstart: 0 cylinders, 255 heads, 63 sectors/track Units = sectors of 512 bytes, counting from 0 Device Boot Start End #sectors Id System vdstart1 * 63 31487399 31487337 7 HPFS/NTFS/exFAT vdstart2 0 - 0 0 Empty vdstart3 0 - 0 0 Empty vdstart4 0 - 0 0 Empty
информация получена..
удаляем теперь ненужное:
$rm vdstart
теперь можно просто примонтировать и работать с данными:
sudo mount -o loop,offset=$((69632+63*512)) /home/user/VirtualBox_VMs/WinXp/WinXp.vdi /mnt
или делаем устройство для снятие образа или обслуживания:
losetup -o $((69632+63*512)) /dev/loop11 /home/user/VirtualBox_VMs/WinXp/WinXp.vdi
для проверки монтирование:
ntfs-3g /dev/loop11 /mnt
в каталоге /mnt должно появиться содержимое диска...