Смонтировать образ диска VirtualBox (vdi)?
Можно ли смонтировать образ диска VirtualBox (.vdi), чтобы содержимое можно было просматривать в Nautilus и т. Д.?
У меня есть windows 2000 .vdi, который не загружается ("недоступное загрузочное устройство") после обновления с VirtualBox 2.x до 3.1.6. Я считаю, что данные IDE-диска изменились, и все, что мне нужно сделать, это получить доступ к образу внутреннего диска и отредактировать Windows boot.ini
указать на новое место.
11 ответов
Вы можете конвертировать в стандартный образ, а затем смонтировать его.
VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img
затем
mount -t ext3 -o loop,rw ./ubuntu.img /mnt
Вам нужно будет знать тип файловой системы, ext3
в этом случае. После того, как он смонтирован, зайдите и отредактируйте его с помощью редактора по вашему выбору. Не путайте файлы внутри /mnt
расположение с работающим хостом, иначе будет плохо.
Чтобы проверить детали вашего файла VDI, запустите: VBoxManage showhdinfo ubuntu.vdi
,
Источник: [решено] Открыть.vdi с менеджером архива? - ubuntuforums.org
Использование 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
Похоже, vdfuse это инструмент, который вы ищете. Это в репозиториях Ubuntu. Если вы хотите скомпилировать себя (источник 2010 года), вы можете сделать это тоже.
Однако для большинства из нас это сводится к простому:
sudo apt-get install virtualbox-fuse
Кажется, теперь он поддерживает динамический VDI.
И смонтировать .vdi
файл в /mnt
dir используйте команду:
sudo vdfuse -a -f /path-to-vdi-file /mnt
Весь диск будет смонтирован с разделами Partition1
, Partition2
формат именования Затем эти файлы можно смонтировать. Например,
sudo mount -o loop /mnt/Parition1 /mountpoint
Установите диск в качестве вторичного мастера для другой виртуальной ОС, затем загрузитесь в эту (виртуальную) ОС, и вы сможете смонтировать его.
Шаг 1: Предполагая, что у вас уже установлена виртуальная ОС (скажем, Ubuntu 16.04) в Virtual Box, добавьте новое хранилище из настроек этой виртуальной ОС.
Шаг 2: Найдите файл Vdi, к которому вы хотите получить доступ, и выберите его.
Шаг 3: Войдите в виртуальную ОС.
Шаг 4: Виртуальный диск, вероятно, будет доступен внутри ОС. Если нет, выполните шаг 5
Шаг 5: Внутри виртуальной ОС используйте Gparted и проверьте диски. и убедитесь, что диск имеет тип, доступный для виртуальной ОС. Если это не так, возможно, вам придется редактировать диск, но тогда вы потеряете существующее содержимое.
Я не проверял себя, но есть модуль предохранителей для их установки (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
Делать
VirtualBox
образы дисков, доступные хосту с помощью утилиты vboximg-mount :
Открыть VDI
sudo mkdir -p /mnt/vdi/expanded
sudo vboximg-mount -i <path-to-vdi> -o allow_other /mnt/vdi/expanded
Пример вывода
ls /mnt/vdi/expanded
<filename.vdi> vhdd vol0 vol1
Смонтировать диск
mkdir /mnt/vdi/vol1
sudo mount /mnt/vdi/expanded/vol1 /mnt/vdi/vol1
Размонтировать
cd /mnt # Optional (avoid mount: ... target is busy)
sudo umount /mnt/vdi/vol1 # Order importent
sudo umount /mnt/vdi/expanded
rm -rf /mnt/vdi # Optional (clean-up resources)
Ты можешь использовать
vboximg-mount
программа, которая является частью инструментов командной строки VirtualBox.
Как упоминалось выше Войтех Трефны,
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
Не то, что вы просили, но если это просто вопрос извлечения файлов из vdi, и вы хотите очень быстрое решение:
- Запустите на своем хосте сервер ssh (
apt-get install openssh-server && service ssh restart
) - Используйте VirtualBox для создания виртуальной машины из существующего файла vdi, затем загрузите эту виртуальную машину. (Я просто оставил сетевой адаптер по умолчанию (NAT) при создании виртуальной машины.)
- В виртуальной машине sftp к вашему хосту. (
sftp hostuser@hostip
) - В сеансе sftp
put
столько файлов на хост, сколько вам нужно.
P7Zip откроет файлы VDI
Установите P7Zip - Desktop из Ubuntu Software по этой ссылке или запустив:
sudo snap install p7zip-desktop
Запустите P7Zip Desktop и перейдите в папку, содержащую
.vdi
файл (вероятно, подVirtualBox VMs
в вашем домашнем каталоге)Дважды щелкните файл VDI в окне P7Zip.
Просмотрите или извлеките файлы, как вам нравится.
В qemu
подход из этого ответа необходимо немного изменить для работы в Ubuntu 20.04.1. Сначала мне пришлось загрузитьnbd
модуль:
lsmod | grep nbd
modprobe nbd
Это не сработало:
sudo mount /dev/nbd0p1 /mnt
Вместо этого мне нужно было сделать это:
sudo mount /dev/nbd0p2 /mnt