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

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

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

100
задан 6 February 2012 в 02:33

9 ответов

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

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

Затем

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

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

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

Source: [Решено] Открыть .vdi с архивным менеджером? - ubuntuforums.org

60
ответ дан 6 February 2012 в 02:33

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

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

sudo apt-get install virtualbox-fuse

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

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

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

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

sudo mount -o loop /mnt/Parition1 /mountpoint
38
ответ дан 6 February 2012 в 02:33

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

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

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

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

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

16
ответ дан 6 February 2012 в 02:33

Используйте 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
113
ответ дан 6 February 2012 в 02:33

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

Пожалуйста, обратите внимание, что использовать его для доступа на запись рискованно.


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

$ ./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
8
ответ дан 6 February 2012 в 02:33

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

  1. Запустите ssh-сервер на вашем хосте ( apt- get install openssh-server && service ssh restart )
  2. Используйте VirtualBox для создания виртуальной машины из существующего файла vdi, затем загрузите эту виртуальную машину. (Я просто сохранил сетевой адаптер (NAT) по умолчанию при построении виртуальной машины.)
  3. Внутри виртуальной машины выполните sftp для вашего хоста. ( sftp hostuser @ hostip )
  4. В сеансе sftp поместите на хост столько файлов, сколько вам нужно.
3
ответ дан 6 February 2012 в 02:33

Как упоминал Войтех Трефны выше,

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
3
ответ дан 6 February 2012 в 02:33

Подход qemu из этот ответ необходимо немного изменить для работы в Ubuntu 20.04 .1. Сначала мне пришлось загрузить модуль nbd , автор:

lsmod | grep nbd
modprobe nbd

Это не сработало:

sudo mount /dev/nbd0p1 /mnt

Мне нужно было сделать это вместо этого:

sudo mount /dev/nbd0p2 /mnt
0
ответ дан 4 January 2021 в 12:11

Вы можете использовать программу vboximg-mount , которая является частью инструментов командной строки VirtualBox.

0
ответ дан 4 January 2021 в 12:11

Другие вопросы по тегам:

Похожие вопросы: