Как мне смонтировать .vhd файл?


11

Я использую 13.04 Raring amd64, и мне нужно смонтировать файл .vhd на мою Ubuntu . Я гуглил об этом и обнаружил, что пакет virtualbox-fuse является ответом.

Но пакет был удален из репозитория apt. Есть ли способ установить пакет с 13.04? или есть ли альтернатива virtualbox-fuse?


Я просто сделал то же самое, и мои результаты поиска закончились тем, что вы можете преобразовать VDI в необработанное изображение
Zeitue

бу. это не очень хорошее решение, когда VHD или VDI-файл может быть слишком большим, чтобы его можно было скопировать в виде необработанного изображения
Джошуа Робисон,

1
Итак, если я установлю virtualbox, я могу использовать команду vdfuse?

Ответы:


4
sudo apt-get install virtualbox-fuse
sudo mkdir /mnt/vhd-disk/
sudo vdfuse -f disk.vhd /mnt/vhd-disk/
sudo mount -o loop  /mnt/vhd-disk/Partition1 /mnt/partition1

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


Это работает, вы можете скачать vdfuse с vdfuse.sourceforge.net, например, в моем случае последняя строка была: sudo mount -o -loop / tmp / win / Partition1 / mnt / Windows
MaxV

4

Используя Ubuntu 15.10 (работает также в Ubuntu 16.04), вы можете установить vhdimount и tsk (The Sleuth Kit) через:

sudo apt-get install libvhdi-utils sleuthkit

Тогда вы можете действовать следующим образом:

sudo mkdir -v /mnt/vhd
sudo vhdimount -X allow_root /path/to/file.vhd /mnt/vhd/
sudo mmls -aB /mnt/vhd/vhdi1

Далее вам нужно будет рассчитать смещение по выводу mmlsпримерно так:

echo offset*512 | bc

И закончить:

sudo mkdir -v /media/${USER}/your/folder
sudo mount -vt ntfs-3g -o ro,noload,offset=offset-found /mnt/vhd/vhdi1 /media/${USER}/your/folder

Заменить offset-foundна ваше смещение. Возможно, вам также придется изменить тип fs в соответствии с типом fs, включенным в ваш VHD-файл.

Я сделал скрипт, поэтому мне не нужно вводить его каждый раз;)


Это монтирует его только для чтения. Что я могу сделать, чтобы смонтировать его с разрешениями на запись? Пропуск roдля mountвсе еще результатов только для чтения.
Мадс Скьерн

Изменение roна rwи это должно работать в режиме чтения / записи вместо чтения / только. vhdimountотображается /mnt/vhd/vhdi1в режиме чтения / записи, но следующая команда, используемая mountв режиме чтения / записи, если вы не укажете rwв качестве опции
Jiab77

1
В Ubuntu 16.04: вместо того, чтобы использовать mmls или fdisk, чтобы узнать о начальном секторе раздела, вы также можете использовать kpartxдля создания файла виртуального устройства, который вы можете смонтировать без offsetопции:sudo kpartx -av /mnt/vhd/vhdi1; sudo mount -vt ntfs-3g -o ro,noload /dev/mapper/loop0p1 /media/${USER}/your/folder
slowhand

2

При поиске пространства Launchpad в Ubuntu появляется следующее:

virtualbox (двоичный «virtualbox-fuse» является частью пакета virtualbox)

Это означает, что они объединены virtualbox-fuseв основной пакет, и вам просто нужно установить virtualbox из репозитория (это то, что раньше называлось virtualbox-ose, поэтому, если вам нужна лицензионная «полная» версия PUEL, это вам не поможет.)


2

Я предпочел бы не полагаться на ВМ для доступа к данным на образе VHD. Так как virtualbox-fuseи vdfuseбольше не доступен в Ubuntu ( не точно (12.04) ) и Debian ( не начиная с Wheezy (7) ). Я смог смонтировать раздел NTFS личного VHD с помощью blk-tap.

Вставьте соответствующий пид от tap-ctl spawn, конечно. Ваша схема разбиения может отличаться от моей, поэтому настройте ее соответствующим образом.

# apt-get install blktap-utils
# modprobe blktap
# tap-ctl allocate
/dev/xen/blktap-2/tapdev0
# tap-ctl spawn
tapdisk spawned with pid 1234
# tap-ctl attach -m 0 -p 1234
# tap-ctl open -m 0 -p 1234 -a vhd:/full/path/to/image.vhd
# mount /dev/disk/by-id/dm-name-tapdev0p1
# ls -lh do/your/thing with/all/your/files.txt 
# tap-ctl close -m 0 -p 1234
# tap-ctl detach -m 0 -p 1234
# tap-ctl free -m 0

Эти шаги взяты из вики проекта xen .

Мое блочное устройство было создано в /dev/xen/blktap-2/blktap0. По какой-то причине kpartx -aне отображал разделы (я искал / dev / xen / blktap-2 / tapdev0p1), но я обнаружил, что /dev/disk/by-id/dm-name-tapdev0p1он был связан с блочным устройством для раздела.


1

Вот что я сделал для этого:

Кажется, нет плавного пути. Я только что загрузил virtualbox-fuseфайл пакета deb с панели запуска. ( здесь )

Я выбрал 4.1.18, потому что мой vbox немного старше, но я думаю, он будет работать с последней версией.

Установите пакет с помощью dpkg -i. Возможно, вам придется указать --force-dependsопцию для установки.


9
Тогда что? Как вы монтируете VHD после установки этого?
Enkouyami

1

Я успешно смонтировал файл .vhdx, созданный с помощью файлов резервного копирования Windows 10, в свою ОС Ubuntu 16.04 с помощью программы под названием guestmount

guestmountстраница руководства на libguestfs.org .

Обратите внимание, что разрешения необходимо будет отрегулировать, или монтировать доступ после sudo -iили sudo -sбыл выполнен.


-1

Вы можете использовать VirtualBox.

VirtualBox - это бесплатное решение для виртуализации x86, позволяющее запускать в системе Linux широкий спектр операционных систем x86, таких как Windows, DOS, BSD или Linux.

Чтобы установить VirtualBox под Ubuntu 13.04, просто нажмите Ctrl+ Alt+ Tна клавиатуре, чтобы открыть терминал. Когда он откроется, выполните команду (ы) ниже:

sudo apt-get install virtualbox

Как только он закончит установку, продолжайте и создайте новую виртуальную машину

введите описание изображения здесь

Введите имя. Убедитесь, что вы выбрали правильный тип и версию ОС, которая находится на VHD.

введите описание изображения здесь

Выберите «Использовать существующий файл виртуального жесткого диска», найдите файл VHD и нажмите «Создать».

введите описание изображения здесь


2
Это позволит вам запустить ОС, которая находится на VHD, но не позволит вам смонтировать образ в Linux.
IQAndreas
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.