Возможно ли (как) смонтировать файл VHD, созданный Windows 7, в OS X?
Я нашел информацию о том, как это сделать в Linux. Существует предохранитель fs "vdfuse", который использует библиотеки виртуальных боксов для монтирования файловых систем, поддерживаемых виртуальным боксом. Однако мне не удалось скомпилировать пакет на 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.
Так что теперь я могу частично смонтировать VHD. Отдельные разделы отображаются как файлы блоков Partition1, Partition2, ... в моей точке монтирования. Однако Mac OS X не включает файловую систему с обратной связью, а fs с обратной связью в macfuse не работает с блочными файлами, поэтому нам нужна циклическая fs для монтирования файлов блоков как фактических разделов.
Наконец-то все заработало. Итак, вкратце, вот шаги для выполнения
Смонтируйте vhd диск
sudo ./vdfuse -tVHD -w -f / Путь / К / VHD / Путь / К / Точка подключения
Прикрепите блок-файлы виртуального раздела
hdiutil attach -imagekey diskimage-class = CRawDiskImage -nomount / Path / To / Mountpoint / PartitionN
Смонтируйте виртуальный раздел
монтировать -t YourFS / dev / diskK / Путь / К / ParitionMountPoint
Это сработало для меня на Mountain Lion. Не требует установки или компиляции:
hdiutil attach -readonly -imagekey diskimage-class=CRawDiskImage <Path to .vhd file>
FUSE работает на MacOSX, однако вам понадобятся заголовки.
Если вы не найдете другого решения, вы можете использовать VirtualBox (или другой аналогичный инструмент, поддерживающий файлы VHD) для запуска виртуальной системы, которая использует этот образ виртуального диска, а затем получить доступ или скопировать нужные файлы с помощью Samba или sftp или т. .
Просто переименуйте файл VHD в IMG ... дважды щелкните по нему, чтобы смонтировать. Вот и все.
Помните, что Mac OS X предоставляет доступ для чтения только для тома NTFS, поэтому, если на вашем VHD есть том NTFS, у вас есть доступ только для чтения.
Сейчас 2020 год, и эти инструкции 10-летней давности почти работал. Вот что я сделал, чтобы смонтировать старый образ резервной копии из Windows 7 на моем Mac Mojave, на основе принятого ответа Яна Бернлёра, а также сценария в вопросе.
vdfuse.c
) из https://github.com/Thorsten-Sick/vdfuse (в настоящее время v83 - исходная ссылка привязана к v80).svn co -r '{20120801}' http://www.virtualbox.org/svn/vbox/trunk/include/
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}
Смонтируйте vhd диск
sudo ./vdfuse -tVHD -w -f/Path/To/VHD /Path/To/Mountpoint
Прикрепите блок-файлы виртуального раздела
hdiutil attach -imagekey diskimage-class=CRawDiskImage -nomount /Path/To/Mountpoint/PartitionN
Смонтируйте виртуальный раздел
mount -t YourFS /dev/diskK /Path/To/ParitionMountPoint
Чудесным образом это творит чудо!