Zamontuj dysk VHD w systemie Mac OS X.

14

Czy jest możliwe (jak) zamontować plik VHD utworzony przez Windows 7 w OS X?

Znalazłem trochę informacji o tym, jak to zrobić na Linuksie. Istnieje bezpiecznik fs „vdfuse”, który wykorzystuje biblioteki virtualbox do montowania systemów plików obsługiwanych przez virtualbox. Nie udało mi się jednak skompilować pakietu na osx, ponieważ brakuje prawie wszystkich nagłówków i wątpię, czy i tak by to zadziałało ...

EDYCJA 2: Dobra, ubrudziłem sobie ręce i ostatecznie skompilowałem vdfuse ( http://forums.virtualbox.org/viewtopic.php?f=26&t=33355&start=0 ) na osx. Jako punkt wyjścia użyłem macfuse ( http://code.google.com/p/macfuse/ ) i spojrzałem na przykładowe systemy plików.

Doprowadziło mnie to do następującego skryptu kompilacji

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}

W rzeczywistości nie musisz kompilować VirtualBox na swoim komputerze, po prostu zainstaluj najnowszą wersję VirtualBox.

Więc teraz mogę częściowo zamontować VHD. Oddzielne partycje pojawiają się jako pliki bloków Partition1, Partition2, ... w moim punkcie montowania. Jednak Mac OS X nie zawiera systemu plików pętli zwrotnej, a fs pętli zwrotnej macfuse nie działa z plikami blokowymi, więc potrzebujemy pętli zwrotnej fs, aby zamontować pliki bloków jako rzeczywiste partycje.

jan bernlöhr
źródło
Co ma z tym wspólnego Win7? Aby odpowiedzieć na to pytanie całkowicie, to muszę wiedzieć, co aplikacja stworzona swoją VHD (VirtualBox, VMware (i stacji roboczej vs Server vs ...), itd.)
gWaldo
Właściwie stworzyłem VHD z diskpart zawartym w Windows 7 ...
Jan Bernlöhr
Możesz użyć gcc -arch x86-64 „$ {infile}” \ dla linii 7, jeśli korzystasz z Leoparda lub Snow Leoparda (esp 10.6), więc kompiluje się w wersji 64-bitowej
gWaldo
@gWaldo, VHD to format plików używany przez Windows 6.1, Virtual PC, Virtual Server, Hyper-V, Xen i inne.
Chris S
Co niewiarygodne, nie musiałem zbytnio zmieniać tych instrukcji, aby działało to w 2020 r. Było jednak kilka drobnych zmian. Wymieniłem je w nowym poście.
Ben XO

Odpowiedzi:

7

W końcu udało mi się. Podsumowując, oto kroki do wykonania

  1. Zainstaluj Macfuse
  2. Zainstaluj Virtual Box
  3. Skompiluj vdfuse, jak wspomniano w pytaniu
  4. Zamontuj dysk VHD

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

  5. Dołącz pliki blokowe partycji wirtualnej

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

  6. Zamontuj partycję wirtualną

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

jan bernlöhr
źródło
Co niewiarygodne, nie musiałem zbytnio zmieniać tych instrukcji, aby działało to w 2020 r. Było jednak kilka drobnych zmian. Wymieniłem je w nowym poście.
Ben XO
3

To działało dla mnie w Mountain Lion. Nie wymaga instalacji ani kompilacji:

hdiutil attach -readonly -imagekey diskimage-class=CRawDiskImage <Path to .vhd file>
henning77
źródło
Powiedzieć, dla mnie na 10.8.3: hdiutil: attach powiodło - bez zamontowania systemów plików
hkulekci
Właśnie spróbowałem ponownie i otrzymałem ten sam komunikat o błędzie. Dziwne. Użyłem tego kilka razy z powodzeniem kilka miesięcy temu.
henning77
W przypadku starszego obrazu vhd działa ponownie (NTFS, utworzony w 01/2013). Z nowszym VHD tak nie jest. Nie wiem jeszcze, na czym polega różnica.
henning77
nie znalazłem czegoś na temat tego problemu.
hkulekci
Mam VHD zaszyfrowany bitlockerem z Windows 7 i byłem w stanie zamontować go podobnie, hdiutil attach -imagekey diskimage-class=CRawDiskImage /Path/to/encrypted.vhd -nomounta następnie użyć m3datarecovery.com/mac-bitlocker, aby go odszyfrować. DAEMON Tools dla komputerów Mac: oprogramowanie do montażu i obrazowania również działało, ale nie jest darmowe.
Pat
1

FUSE działa na MacOSX-ie, jednak potrzebujesz nagłówków.

gWaldo
źródło
Dzięki, założyłem już macfuse na naszych maszynach, aby udostępnić ntfs (tuxera), ext2 i inne systemy plików naszym użytkownikom osx. Może uda mi się skompilować lib na systemie Linux, a następnie skopiować pliki z systemu
OSX
1

Jeśli nie znajdziesz innego rozwiązania, możesz użyć VirtualBox (lub innego podobnego narzędzia obsługującego pliki VHD), aby uruchomić system wirtualny, który korzysta z tego obrazu dysku wirtualnego, a następnie uzyskać dostęp lub skopiować potrzebne pliki za pomocą Samby lub sftp itp. .

JanC
źródło
Dziękuję, jest to wykonalne, ale niestety nie do końca to, czego szukam. Obecnie mam partycje NTFS w systemie podwójnego rozruchu, więc mogę czytać / zapisywać dane z Win i OSX. Następnym krokiem jest wirtualizacja partycji, które zawierają win7 i dane ... Jednak dane są nadal potrzebne, aby były dostępne w systemie OSX.
jan bernlöhr
0

Po prostu zmień nazwę pliku VHD na IMG .. kliknij dwukrotnie, aby go zamontować. To wszystko.

Pamiętaj, że Mac OS X zapewnia dostęp tylko do odczytu dla woluminu NTFS, więc jeśli twój dysk VHD ma wolumin NTFS, masz dostęp tylko do odczytu.

FiReBaT
źródło
1
Niestety to nie działa. DiskImageMounter mówi po prostu „nie rozpoznano”.
jan bernlöhr
0

Jest teraz 2020, a te 10-letnie instrukcje prawie się sprawdziły. Oto, co zrobiłem, aby zamontować stary obraz zapasowy z systemu Windows 7 na moim komputerze Mac Mojave, w oparciu o zaakceptowaną odpowiedź Jana Bernlöhra, a także skrypt w pytaniu.

  1. Zainstaluj osxfuse (następca Macfuse)
  2. Zainstaluj VirtualBox
  3. Pobierz kod źródłowy vdfuse ( vdfuse.c) ze strony https://github.com/Thorsten-Sick/vdfuse (obecnie na v83 - oryginalny link jest przypisany do v80).
  4. Pobierz nagłówki VirtualBox, ale musisz pobrać wersję z 2012 roku. Użyłem następującego polecenia: svn co -r '{20120801}' http://www.virtualbox.org/svn/vbox/trunk/include/
  5. Skorzystaj z poniższych instrukcji kompilacji, dostosowanych do pytania, ale z kilkoma niewielkimi zmianami (kompilacja 64-bitowa i nowsze VirtualBoxy nie wydają się mieć 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. Zamontuj dysk VHD

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

  2. Dołącz pliki blokowe partycji wirtualnej

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

  3. Zamontuj partycję wirtualną

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

Cudem działa to na urok!

Ben XO
źródło