Смонтируйте VHD на Mac OS X

14

Можно ли (как) смонтировать VHD-файл, созданный Windows 7 в OS X?

Я нашел некоторую информацию о том, как сделать это на Linux. Существует предохранитель fs "vdfuse", который использует библиотеки virtualbox для монтирования файловых систем, поддерживаемых virtualbox. Однако я не смог скомпилировать пакет на OSX, потому что почти все заголовки отсутствуют, и я сомневаюсь, что он все равно будет работать ...

РЕДАКТИРОВАТЬ # 2: Хорошо, я испачкал руки и, наконец, скомпилировал vdfuse ( http://forums.virtualbox.org/viewtopic.php?f=26&t=33355&start=0 ) на osx. В качестве отправной точки я использовал macfuse ( http://code.google.com/p/macfuse/ ) и посмотрел примеры файловых систем.

Это привело меня к следующему сценарию сборки

infile=vdfuse.c
outfile=vdfuse
incdir="your/path/to/vbox/headers"
INSTALL_DIR="/Applications/VirtualBox.app/Contents/MacOS"
CFLAGS="-pipe"

gcc -arch i386 "${infile}" \
         "${INSTALL_DIR}"/VBoxDD.dylib \
         "${INSTALL_DIR}"/VBoxDDU.dylib \
         "${INSTALL_DIR}"/VBoxVMM.dylib \
         "${INSTALL_DIR}"/VBoxRT.dylib \
         "${INSTALL_DIR}"/VBoxDD2.dylib \
         "${INSTALL_DIR}"/VBoxREM.dylib \
        -o "${outfile}" \
        -I"${incdir}" -I"/usr/local/include/fuse" \
        -Wl,-rpath,"${INSTALL_DIR}"  \
        -lfuse_ino64  \
        -Wall ${CFLAGS}

На самом деле вам не нужно компилировать VirtualBox на вашем компьютере, просто установите последнюю версию VirtualBox.

Так что теперь я могу частично смонтировать VHDS. Отдельные разделы отображаются в виде файлов блоков Partition1, Partition2, ... в моей точке монтирования. Однако Mac OS X не включает в себя петлевую файловую систему, а петлевая fs macfuse не работает с блочными файлами, поэтому нам нужен петлевой fs для монтирования блочных файлов как фактических разделов.

Ян Бернлёр
источник
При чем тут Win7? Чтобы полностью ответить на ваш вопрос, мне нужно знать, какое приложение создало ваш виртуальный жесткий диск (VirtualBox, VMware (и рабочая станция против сервера против ...) и т. Д.)
gWaldo
На самом деле я создал VHD с
дисковой частью,
Возможно, вы захотите использовать gcc -arch x86-64 "$ {infile}" \ для строки 7, если вы используете Leopard или Snow Leopard (особенно 10.6), поэтому он компилируется 64-
битно
@gWaldo, VHD - это формат файлов, используемый Windows 6.1, Virtual PC, Virtual Server, Hyper-V, Xen и другими.
Крис С
Невероятно, но мне не пришлось много менять эти инструкции, чтобы это заработало в 2020 году. Однако было несколько небольших изменений. Я перечислил их в новом посте.
Бен XO

Ответы:

7

Наконец-то я заработал. Итак, в заключение, вот шаги для выполнения

  1. Установите Macfuse
  2. Установить виртуальную коробку
  3. Скомпилируйте vdfuse, как указано в вопросе
  4. Смонтировать диск VHD

    sudo ./vdfuse -tVHD -w -f / Путь / К / VHD / Путь / К / Точка монтирования

  5. Присоедините блочные файлы виртуального раздела

    hdiutil attach -imagekey diskimage-class = CRawDiskImage -nomount / Path / To / Mountpoint / PartitionN

  6. Смонтировать виртуальный раздел

    mount -t YourFS / dev / diskK / Path / To / ParitionMountPoint

Ян Бернлёр
источник
Невероятно, но мне не пришлось много менять эти инструкции, чтобы это заработало в 2020 году. Однако было несколько небольших изменений. Я перечислил их в новом посте.
Бен XO
3

Это сработало для меня на Mountain Lion. Не требуется установка или компиляция:

hdiutil attach -readonly -imagekey diskimage-class=CRawDiskImage <Path to .vhd file>
henning77
источник
Скажи мне 10.8.3: hdiutil: прикрепление не удалось - нет монтируемых файловых систем
hkulekci
Я просто попробовал еще раз и получил то же сообщение об ошибке. Weird. Я использовал это пару раз успешно несколько месяцев назад.
henning77
С более старым образом VHD он снова работает (NTFS, созданный в 01/2013). С более новым VHD это не так. Я еще не знаю, где разница.
henning77
я не нашел что-то об этой проблеме.
hkulekci
У меня есть VHD с зашифрованным битлоком из Windows 7, и я смог смонтировать его аналогично, hdiutil attach -imagekey diskimage-class=CRawDiskImage /Path/to/encrypted.vhd -nomountа затем использовать m3datarecovery.com/mac-bitlocker для его дешифрования . DAEMON Tools для Mac: умное программное обеспечение для монтажа и обработки изображений также работало для монтирования, но оно не бесплатно.
Пэт
1

FUSE работает на MacOSX, однако вам понадобятся заголовки.

gWaldo
источник
Спасибо, я уже установил macfuse на наших машинах, чтобы сделать ntfs (tuxera), ext2 и другие файловые системы доступными для наших пользователей osx. Может быть, я смогу скомпилировать lib в системе linux, а затем скопировать файлы из osx ...
jan bernlöhr
1

Если вы не найдете другого решения, вы можете использовать VirtualBox (или другой аналогичный инструмент, который поддерживает файлы VHD), чтобы запустить виртуальную систему, которая использует этот образ виртуального диска, а затем получить доступ или скопировать файлы, которые вам нужны, используя Samba или sftp или тому подобное. ,

Janc
источник
Спасибо, это возможно, но, к сожалению, не совсем то, что я ищу. В настоящее время у меня NTFS-разделы в системе с двойной загрузкой, поэтому я могу читать / записывать данные из win и osx. Следующим шагом является виртуализация разделов, которые содержат win7 и данные ... Однако данные по-прежнему должны быть доступны на OSX.
Ян Бернлёр
0

Просто переименуйте ваш VHD-файл в IMG ... дважды щелкните его, чтобы смонтировать. Это все.

Помните, что Mac OS X предоставляет доступ на чтение только для тома NTFS, поэтому, если ваш VHD имеет том NTFS, у вас есть только доступ на чтение.

Firebat
источник
1
К сожалению, это не работает. DiskImageMounter просто говорит "не распознан".
Бернлёр
0

Сейчас 2020 год, и эти 10-летние инструкции почти сработали. Вот что я сделал, чтобы смонтировать старый образ резервной копии из Windows 7 на моем Mac в Mojave, основываясь на принятом ответе Яна Бернлёра, а также на сценарии в вопросе.

  1. Установите osxfuse (преемник macfuse)
  2. Установите VirtualBox
  3. Загрузите исходный код vdfuse ( vdfuse.c) с веб-сайта https://github.com/Thorsten-Sick/vdfuse (в настоящее время на v83 - исходная ссылка привязана к v80).
  4. Загрузите заголовки VirtualBox, но вы должны получить версию с 2012 года. Я использовал следующую команду: svn co -r '{20120801}' http://www.virtualbox.org/svn/vbox/trunk/include/
  5. Используйте следующие инструкции по сборке, адаптированные из вопроса, но с небольшими изменениями (64-битная сборка и более новые VirtualBox, похоже, не имеют VBoxREM.dylib:
  infile=vdfuse.c
  outfile=vdfuse
  incdir="$(pwd)/include"
  INSTALL_DIR="/Applications/VirtualBox.app/Contents/MacOS"
  CFLAGS="-pipe"

  gcc -arch x86_64 "${infile}" \
         "${INSTALL_DIR}"/VBoxDD.dylib \
         "${INSTALL_DIR}"/VBoxDDU.dylib \
         "${INSTALL_DIR}"/VBoxVMM.dylib \
         "${INSTALL_DIR}"/VBoxRT.dylib \
         "${INSTALL_DIR}"/VBoxDD2.dylib \
        -o "${outfile}" \
        -I"${incdir}" -I"/usr/local/include/fuse" \
        -Wl,-rpath,"${INSTALL_DIR}"  \
        -lfuse_ino64  \
        -Wall ${CFLAGS}
  1. Смонтировать диск VHD

    sudo ./vdfuse -tVHD -w -f/Path/To/VHD /Path/To/Mountpoint

  2. Присоедините блочные файлы виртуального раздела

    hdiutil attach -imagekey diskimage-class=CRawDiskImage -nomount /Path/To/Mountpoint/PartitionN

  3. Смонтировать виртуальный раздел

    mount -t YourFS /dev/diskK /Path/To/ParitionMountPoint

Чудесно, это работает шарм!

Бен Хо
источник