Montare un disco rigido virtuale su Mac OS X.


14

È possibile (come) montare un file VHD creato da Windows 7 in OS X?

Ho trovato alcune informazioni su come farlo su Linux. Esiste un fusibile "vdfuse" che utilizza le librerie virtualbox per montare i filesystem supportati da virtualbox. Tuttavia non sono riuscito a compilare il pacchetto su osx perché mancano quasi tutte le intestazioni e dubito che funzionerebbe comunque ...

EDIT # 2: Okay mi sono sporcato le mani e finalmente ho compilato vdfuse ( http://forums.virtualbox.org/viewtopic.php?f=26&t=33355&start=0 ) su osx. Come punto di partenza ho usato macfuse ( http://code.google.com/p/macfuse/ ) e ho esaminato i file system di esempio.

Questo mi ha portato al seguente script di build

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}

In realtà non è necessario compilare VirtualBox sul tuo computer, basta installare una versione recente di VirtualBox.

Quindi ora posso montare parzialmente i VHD. Le partizioni separate appaiono come file di blocco Partition1, Partition2, ... sul mio mount point. Tuttavia Mac OS X non include un file system di loopback e il fs di loopback di macfuse non funziona con i file di blocco, quindi abbiamo bisogno di un f di loopback per montare i file di blocco come partizioni effettive.


Cosa c'entra Win7 con esso? Per rispondere completamente alla tua domanda, dovrei sapere quale applicazione ha creato il tuo
disco rigido

In realtà ho creato il
disco rigido

Potresti voler usare gcc -arch x86-64 "$ {infile}" \ per la linea 7 se stai eseguendo Leopard o Snow Leopard (esp 10.6) in modo da compilare a 64 bit
gWaldo

@gWaldo, VHD è un formato di file utilizzato da Windows 6.1, Virtual PC, Virtual Server, Hyper-V, Xen e altri.
Chris S,

Incredibilmente, non ho dovuto modificare molto queste istruzioni per farlo funzionare nel 2020. Tuttavia, ci sono state alcune piccole modifiche. Li ho elencati in un nuovo post.
Ben XO,

Risposte:


7

Finalmente l'ho fatto funzionare. Quindi, in sintesi, ecco i passaggi da eseguire

  1. Installa macfuse
  2. Installa Virtual Box
  3. Compilare vdfuse come indicato nella domanda
  4. Montare il disco VHD

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

  5. Collegare i file di blocco della partizione virtuale

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

  6. Montare la partizione virtuale

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


Incredibilmente, non ho dovuto modificare molto queste istruzioni per farlo funzionare nel 2020. Tuttavia, ci sono state alcune piccole modifiche. Li ho elencati in un nuovo post.
Ben XO,

3

Questo ha funzionato per me su Mountain Lion. Nessuna installazione o compilazione necessaria:

hdiutil attach -readonly -imagekey diskimage-class=CRawDiskImage <Path to .vhd file>

Di 'per me il 10.8.3: hdiutil: collegamento non riuscito - nessun file system montabile
hkulekci

Ho appena provato di nuovo e ricevo lo stesso messaggio di errore. Strano. L'ho usato un paio di volte con successo alcuni mesi fa.
henning77,

Con un'immagine vhd precedente funziona di nuovo (NTFS, creato nel 01/2013). Con un nuovo vhd non lo fa. Non so ancora dove sia la differenza.
henning77,

non ho trovato qualcosa su questo problema.
hkulekci,

Ho un disco rigido virtuale crittografato con bitlocker da Windows 7 ed è stato in grado di montarlo in modo simile con hdiutil attach -imagekey diskimage-class=CRawDiskImage /Path/to/encrypted.vhd -nomounte quindi utilizzare m3datarecovery.com/mac-bitlocker per decodificarlo . DAEMON Tools per Mac: anche il software di montaggio e imaging intelligente ha funzionato per il montaggio, ma non è gratuito.
Pat

1

FUSE funziona su MacOSX, tuttavia avresti bisogno delle intestazioni.


Grazie, ho già creato macfuse sui nostri computer per rendere accessibili ai nostri utenti osx ntfs (tuxera), ext2 e altri file system. Forse posso compilare la lib su un sistema linux e quindi copiare i file su osx ...
Jan Bernernöhr

1

Se non trovi un'altra soluzione, puoi utilizzare VirtualBox (o un altro strumento simile che supporta i file VHD) per eseguire un sistema virtuale che utilizza l'immagine del disco virtuale e quindi accedere o copiare i file necessari utilizzando Samba o sftp o simili .


Grazie, questo è fattibile ma purtroppo non è proprio quello che sto cercando. Attualmente ho partizioni NTFS su un sistema a doppio avvio, quindi posso leggere / scrivere dati da win e osx. Il prossimo passo è la virtualizzazione delle partizioni che contengono win7 e dati ... Tuttavia, i dati sono ancora necessari per essere accessibili su osx.
jan bernlöhr,

0

Rinomina il tuo file VHD in IMG .. fai doppio clic su di esso per montarlo. È tutto.

Ricorda che Mac OS X fornisce l'accesso in lettura solo per il volume NTFS, quindi se il tuo disco rigido virtuale ha un volume NTFS, hai solo l'accesso in lettura.


1
Purtroppo questo non funziona. DiskImageMounter dice semplicemente "non riconosciuto".
jan bernlöhr,

0

Ora è il 2020 e quasi queste istruzioni di 10 anni funzionato. Ecco cosa ho fatto per montare una vecchia immagine di backup da Windows 7 sul mio Mac Mojave, sulla base della risposta accettata da Jan Bernlöhr, nonché dello script nella domanda.

  1. Installa osxfuse (il successore di macfuse)
  2. Installa VirtualBox
  3. Scarica il codice sorgente di vdfuse ( vdfuse.c) da https://github.com/Thorsten-Sick/vdfuse (attualmente su v83 - il collegamento originale è ancorato a v80).
  4. Scarica le intestazioni di VirtualBox, ma devi ottenere una versione dal 2012. Ho usato il seguente comando: svn co -r '{20120801}' http://www.virtualbox.org/svn/vbox/trunk/include/
  5. Utilizzare le seguenti istruzioni di compilazione, adattate dalla domanda, ma con alcune piccole modifiche (build a 64 bit e VirtualBox più recenti non sembrano avere 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. Montare il disco VHD

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

  2. Collegare i file di blocco della partizione virtuale

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

  3. Montare la partizione virtuale

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

Miracolosamente, questo fa incantare!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.