Mac OS XでVHDをマウントする


14

OS XでWindows 7によって作成されたVHDファイルを(どのように)マウントできますか?

Linuxでこれを行う方法に関する情報を見つけました。virtualboxでサポートされるファイルシステムをマウントするためにvirtualbox libsを使用するfuse fs "vdfuse"があります。しかし、ほとんどすべてのヘッダーが欠落しているため、osxでパッケージをコンパイルできませんでしたが、とにかく動作することを疑います...

EDIT#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にはループバックファイルシステムが含まれておらず、macfuseのループバックfsはブロックファイルでは機能しないため、ブロックファイルを実際のパーティションとしてマウントするにはループバックfsが必要です。


Win7はそれと何をする必要がありますか?あなたの質問に完全に答えるには、VHDを作成したアプリケーション(VirtualBox、VMware(およびワークステーションvsサーバー...)など)を知る必要があります
-gWaldo

実際に、Windows 7に含まれるdiskpartでVHDを作成しました...
janbernlöhr10年

あなたはヒョウやSnow Leopardのを実行している場合、それは、64ビットをコンパイルして(ESP 10.6)7行目のために\ gccの-arch x86-64で"$ {INFILEを}"を使用することをお勧めします
gWaldo

@ gWaldo、VHDは、Windows 6.1、Virtual PC、Virtual Server、Hyper-V、Xenなどで使用されるファイル形式です。
クリスS

信じられないほど、2020年にこれを機能させるためにこれらの指示を大幅に変更する必要はありませんでした。しかし、いくつかの小さな変更がありました。それらを新しい投稿にリストしました。
ベンXO

回答:


7

最後に、私はそれを機能させました。要約すると、ここに実行する手順があります

  1. macfuseをインストールする
  2. 仮想ボックスをインストールする
  3. 質問で述べたようにvdfuseをコンパイルします
  4. vhdディスクをマウントします

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

  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>

10.8.3で私に言ってください:hdiutil:接続に失敗しました-マウント可能なファイルシステムがありません
hkulekci

もう一度試したところ、同じエラーメッセージが表示されました。奇妙な。数ヶ月前にこれを数回使用しました。
henning77

古いvhdイメージでは再び機能します(NTFS、2013年1月に作成)。新しいvhdではありません。違いがどこにあるかはまだわかりません。
henning77

私はこの問題について何かを見つけませんでした。
hkulekci

Windows 7のbitlockerで暗号化されたVHDをhdiutil attach -imagekey diskimage-class=CRawDiskImage /Path/to/encrypted.vhd -nomount使用しており、同様にマウントして、m3datarecovery.com / mac- bitlockerを使用して暗号化を解除できました。DAEMON Tools for Mac:スマートマウントおよびイメージングソフトウェアもマウントに機能しましたが、無料ではありません。
パット

1

FUSEはMacOSXで動作しますが、ヘッダーが必要です。


おかげで、私たちのマシンにはすでにmacfuseを確立して、osxユーザーがntfs(tuxera)、ext2、その他のファイルシステムにアクセスできるようにしています。たぶん私は、Linuxシステム上のlibをコンパイルすることができますし、ファイルをコピーOT OSX ...
bernlöhr1月

1

別のソリューションが見つからない場合は、VirtualBox(またはVHDファイルをサポートする別の同様のツール)を使用して、その仮想ディスクイメージを使用する仮想システムを実行し、Sambaまたはsftpなどを使用して必要なファイルにアクセスまたはコピーできます。


ありがとう、これは実行可能ですが、残念ながら私が探しているものとはまったく異なります。現在、デュアルブートシステムにNTFSパーティションがあるため、winとosxからデータを読み書きできます。次のステップは、win7とデータを含むパーティションを仮想化することです...ただし、osxでアクセスできるようにするためにはデータが必要です。
ヤンbernlöhr10年

0

VHDファイルの名前をIMGに変更するだけです。ダブルクリックしてマウントします。それで全部です。

Mac OS XはNTFSボリュームに対してのみ読み取りアクセスを提供するため、VHDにNTFSボリュームがある場合は、読み取りアクセスのみが許可されることに注意してください。


1
残念ながら、これは機能しません。DiskImageMounterは「認識されない」とだけ言います。
bernlöhr12年

0

今では2020年であり、これらの10年前の指示はほとんど機能しました。JanBernlöhrからの受け入れられた回答と質問のスクリプトに基づいて、Mojave MacにWindows 7から古いバックアップイメージをマウントするために私がしたことは次のとおりです。

  1. osxfuseのインストール(macfuseの後継)
  2. VirtualBoxをインストールする
  3. https://github.com/Thorsten-Sick/vdfusevdfuse.cから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

奇跡的に、これは魅力的です!

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.