Montar un VHD en Mac OS X

14

¿Es posible (cómo) montar un archivo VHD creado por Windows 7 en OS X?

Encontré información sobre cómo hacer esto en Linux. Hay un fusible fs "vdfuse" que usa las bibliotecas de virtualbox para montar sistemas de archivos compatibles con virtualbox. Sin embargo, no pude compilar el paquete en osx porque faltan casi todos los encabezados y dudo que funcione de todos modos ...

EDITAR # 2: Bien, me ensucié las manos y finalmente compilé vdfuse ( http://forums.virtualbox.org/viewtopic.php?f=26&t=33355&start=0 ) en osx. Como punto de partida, utilicé macfuse ( http://code.google.com/p/macfuse/ ) y miré los sistemas de archivos de ejemplo.

Esto me llevó al siguiente script de compilación

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}

En realidad, no necesita compilar VirtualBox en su máquina, solo instale una versión reciente de VirtualBox.

Entonces ahora puedo montar parcialmente vhds. Las particiones separadas aparecen como archivos de bloque Partición1, Partición2, ... en mi punto de montaje. Sin embargo, Mac OS X no incluye un sistema de archivos loopback y el loopback fs de macfuse no funciona con archivos de bloque, por lo que necesitamos un loopback fs para montar los archivos de bloque como particiones reales.

Jan bernlöhr
fuente
¿Qué tiene que ver Win7 con eso? Para responder a su pregunta por completo, necesito saber qué aplicación creó su VHD (VirtualBox, VMware (y estación de trabajo vs Servidor vs ...), etc.)
gWaldo
En realidad he creado el VHD con diskpart contenida en Windows 7 ...
enero Bernlohr
Es posible que desee utilizar gcc -arch x86-64 "$ {infile}" \ para la línea 7 si está ejecutando Leopard o Snow Leopard (esp 10.6) para que
compile
@gWaldo, VHD es un formato de archivo utilizado por Windows 6.1, Virtual PC, Virtual Server, Hyper-V, Xen y otros.
Chris S
Increíblemente, no tuve que alterar mucho estas instrucciones para que esto funcionara en 2020. Sin embargo, hubo algunas pequeñas modificaciones. Los he enumerado en una nueva publicación.
Ben XO

Respuestas:

7

Finalmente lo conseguí funcionando. En resumen, aquí están los pasos para realizar

  1. Instalar macfuse
  2. Instalar Virtual Box
  3. Compile vdfuse como se menciona en la pregunta
  4. Monta el disco vhd

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

  5. Adjunte los archivos de bloque de partición virtual

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

  6. Montar la partición virtual

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

Jan bernlöhr
fuente
Increíblemente, no tuve que alterar mucho estas instrucciones para que esto funcionara en 2020. Sin embargo, hubo algunas pequeñas modificaciones. Los he enumerado en una nueva publicación.
Ben XO
3

Esto funcionó para mí en Mountain Lion. No es necesaria instalación ni compilación:

hdiutil attach -readonly -imagekey diskimage-class=CRawDiskImage <Path to .vhd file>
Henning77
fuente
Digan por mí el 10.8.3: hdiutil: adjunto falló - no hay sistemas de archivos montables
hkulekci
Acabo de intentarlo nuevamente y aparece el mismo mensaje de error. Extraño. He usado esto un par de veces con éxito hace algunos meses.
henning77
Con una imagen vhd anterior, funciona de nuevo (NTFS, creado en 01/2013). Con un nuevo vhd no lo hace. Todavía no sé dónde está la diferencia.
henning77
No encontré algo sobre este tema.
hkulekci
Tengo un VHD encriptado con bitlocker de Windows 7 y pude montarlo de manera similar hdiutil attach -imagekey diskimage-class=CRawDiskImage /Path/to/encrypted.vhd -nomounty luego usar m3datarecovery.com/mac-bitlocker para desencriptarlo. DAEMON Tools para Mac: el software de montaje e imagen inteligente también funcionó para montar, pero no es gratis.
Pat
1

FUSE funciona en MacOSX, sin embargo, necesitaría los encabezados.

gWaldo
fuente
Gracias, ya establecí macfuse en nuestras máquinas para que nuestros usuarios de osx puedan acceder a ntfs (tuxera), ext2 y otros sistemas de archivos. Tal vez pueda compilar la biblioteca en un sistema Linux y luego copiar los archivos otx ...
jan bernlöhr
1

Si no encuentra otra solución, puede usar VirtualBox (u otra herramienta similar que admita archivos VHD) para ejecutar un sistema virtual que use esa imagen de disco virtual, y luego acceder o copiar los archivos que necesita usando Samba o sftp o tal .

JanC
fuente
Gracias, esto es factible pero desafortunadamente no es exactamente lo que estoy buscando. Actualmente tengo particiones NTFS en un sistema de arranque dual, por lo que puedo leer / escribir datos de win y osx. El siguiente paso es virtualizar las particiones que contienen win7 y datos ... Sin embargo, los datos aún se necesitan para estar accesibles en osx.
enero bernlöhr
0

Simplemente cambie el nombre de su archivo VHD a IMG ... haga doble clic en él para montarlo. Eso es todo.

Recuerde que Mac OS X proporciona acceso de lectura solo para el volumen NTFS, por lo que si su VHD tiene un volumen NTFS, solo tiene acceso de lectura.

FiReBaT
fuente
1
Por desgracia, esto no funciona. DiskImageMounter solo dice "no reconocido".
enero bernlöhr
0

Ahora es 2020, y estas instrucciones de hace 10 años casi funcionaron. Esto es lo que hice para montar una imagen de copia de seguridad antigua de Windows 7 en mi Mac Mojave, según la respuesta aceptada de Jan Bernlöhr, así como el guión de la pregunta.

  1. Instalar osxfuse (el sucesor de macfuse)
  2. Instalar VirtualBox
  3. Descargue el código fuente de vdfuse ( vdfuse.c) desde https://github.com/Thorsten-Sick/vdfuse (actualmente en v83, el enlace original está vinculado a v80).
  4. Descargue los encabezados de VirtualBox, pero debe obtener una versión de 2012. Usé el siguiente comando: svn co -r '{20120801}' http://www.virtualbox.org/svn/vbox/trunk/include/
  5. Use las siguientes instrucciones de compilación, adaptadas de la pregunta, pero con algunas pequeñas modificaciones (compilación de 64 bits, y las VirtualBoxes más recientes no parecen tener 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. Monta el disco vhd

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

  2. Adjunte los archivos de bloque de partición virtual

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

  3. Montar la partición virtual

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

Milagrosamente, esto funciona un encanto!

Ben XO
fuente