Установить образ диска VirtualBox (vdi)?

77

Возможно ли монтировать образ диска VirtualBox (.vdi), чтобы содержимое можно было просматривать в Nautilus и т. д.?

У меня есть Windows 2000 .vdi, который не будет загружаться («недоступное загрузочное устройство») после обновления с VirtualBox 2.x до 3.1.6. Я считаю, что данные диска IDE изменились, и все, что мне нужно сделать, это получить доступ к внутреннему изображению диска и отредактировать Windows boot.ini , чтобы указать на новое местоположение.

    
задан matt wilkie 30.12.2010 в 15:44
источник

7 ответов

49

Вы можете преобразовать в стандартное изображение, а затем смонтировать его.

VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img

Тогда

mount -t ext3 -o loop,rw ./ubuntu.img /mnt

В этом случае вам нужно ЗНАТЬ тип файловой системы, ext3 . После того, как он установлен, зайдите и отредактируйте с помощью редактора по вашему выбору. Не путайте файлы внутри места /mnt с запущенным хостом, или это будет плохо.

Чтобы проверить информацию о файле VDI, запустите: VBoxManage showhdinfo ubuntu.vdi .

Источник: [SOLVED] Open .vdi с менеджером архива? - ubuntuforums.org

    
ответ дан Vojtech Trefny 30.12.2010 в 15:47
источник
75

Используйте qemu-nbd , процесс объясняется на serverfault и в этом блоге .

В принципе, вам нужно будет установить qemu при необходимости:

sudo apt-get install qemu

Затем вам нужно загрузить модуль сетевого блока :

sudo rmmod nbd
sudo modprobe nbd max_part=16

Прикрепите изображение .vdi к одному из созданных вами nbd:

sudo qemu-nbd -c /dev/nbd0 drive.vdi

Теперь вы получите блок-блок / dev / nbd0 вместе с несколькими / dev / nbd0p * узлами устройства разделов.

sudo mount /dev/nbd0p1 /mnt

Как только вы закончите, отключите все и отключите устройство:

sudo qemu-nbd -d /dev/nbd0
    
ответ дан Maxime R. 24.06.2011 в 03:48
35

Похоже, vdfuse - это тот инструмент, который вы ищете. Он находится в репозиториях Ubuntu. Если вы хотите скомпилировать себя (источник 2010), вы можете сделать это тоже .

Однако для большинства из нас это сводится к простому:

sudo apt-get install virtualbox-fuse

Кажется, теперь он поддерживает динамический vdi.

И чтобы установить файл .vdi в файле /mnt , используйте команду:

sudo vdfuse -a -f /path-to-vdi-file /mnt

Весь диск будет установлен с разделами Partition1 , Partition2 именования. Затем эти файлы могут быть установлены в петле. Например,

sudo mount -o loop /mnt/Parition1 /mountpoint
    
ответ дан stwissel 07.05.2012 в 08:02
14

Установите диск как вторичный мастер для другой виртуальной ОС, затем загрузитесь в эту (виртуальную) ОС, и вы можете смонтировать его.

Шаг 1: Предполагая, что у вас есть виртуальный os (скажем Ubuntu 16.04), уже установленный в виртуальном поле, добавьте новое хранилище из настроек этого виртуального os.

Шаг 2: Просмотрите файл Vdi, к которому вы хотите получить доступ, и выберите его.

Шаг 3: Вход в виртуальную ОС.

Шаг 4: Виртуальный диск, вероятно, будет доступен в ОС. Если нет, выполните шаг 5

Шаг 5: Внутри виртуальной ОС используйте Gparted и проверьте диски. и убедитесь, что диск имеет тип, доступный виртуальной ОС. Если это не так, вам может потребоваться отредактировать диск, но затем вы потеряете существующее содержимое.

    
ответ дан josef 30.12.2010 в 16:13
6

Я не тестировал себя, но, похоже, для их монтирования есть модуль плавких предохранителей ( vfduse ), проверьте следующую страницу:

Обратите внимание, что использование этого параметра для доступа к записи является рискованным.

Использование:

$ ./vdfuse-v<version> -h
USAGE: ./vdfuse [options] -f image-file mountpoint
   -h   help
   -r   readonly
   -t   specify type (VDI, VMDK, VHD, or raw; default: auto)
   -f   VDimage file
   -a   allow all users to read disk
   -w   allow all users to read and write to disk
   -g   run in foreground
   -v   verbose
   -d   debug

Чтобы смонтировать изображение напрямую, используя его имя файла:

$ ./vdfuse-v<version> -f image.vdi /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP

Для монтирования машинного диска (включая моментальные снимки):

$ ./vdautomount-<version> -p /path/to/vdfuse WinXP /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP
    
ответ дан João Pinto 30.12.2010 в 16:08
3

Не то, что вы просили, но если это просто вопрос получения файлов с vdi , и вы хотите очень быстрое решение :

  1. Запустите ssh-сервер на вашем хосте ( apt-get install openssh-server && service ssh restart )
  2. Используйте VirtualBox для создания виртуальной машины из существующего vdi-файла, а затем загрузите эту виртуальную машину. (Я просто сохранил сетевой адаптер по умолчанию (NAT) при создании виртуальной машины.)
  3. Внутри виртуальной машины sftp для вашего хоста. ( sftp [email protected] )
  4. В сеансе sftp put столько файлов на хост, сколько вам нужно.
ответ дан JellicleCat 20.02.2015 в 18:23
-1

Как упоминалось выше Vojtech Trefny,

1) сначала конвертируйте VDI - > IMG

VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img

2) Затем установите IMG

mount -t ext3 -o loop,rw ./ubuntu.img /mnt

3) Однако, когда я получил это сообщение об ошибке:

mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

и dmesg сказали:

[3105578.013671] EXT4-fs (loop0): VFS: Can't find ext3 filesystem

вам нужно проверить структуру раздела .img:

fdisk -l ubuntu.img

Disk ubuntu.img: 21.0 GB, 20971520000 bytes
255 heads, 63 sectors/track, 2549 cylinders, total 40960000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf45bc910

   Device Boot      Start         End      Blocks   Id  System
ubuntu.img1   *        2048    12582911     6290432   83  Linux
ubuntu.img2        12584958    16775167     2095105    5  Extended
ubuntu.img3        16775168    40959999    12092416   83  Linux
ubuntu.img5        12584960    16775167     2095104   82  Linux swap / Solaris

4) Как вы можете видеть, основной раздел начинается с байтов 16775168. Однако обратите внимание, что размер сектора составляет 512 байт, поэтому вам нужно умножить результаты 16775168 x 512 = 8588886016, чтобы вам нужно было компенсировать монтирование подобно это:

mount -t ext3 -o loop,rw,offset=8588886016 ./ubuntu.img /mnt

5) На самом деле это не сработало для меня, если файловая система была загрязнена после изменения размера. В этом случае я сделал следующее:

dd if=ubuntu.img of=ubuntu.disk bs=512 skip=16775168 count=12092416
e2fsck ubuntu.disk
mount ubuntu.disk /mnt
    
ответ дан PHZ.fi-Pharazon 18.06.2017 в 14:51