web-dev-qa-db-ja.com

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

OS XでWindows 7によって作成されたVHDファイルをマウントすることは可能ですか?

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

EDIT#2:さて、手を汚し、最終的にvdfuseをコンパイルしました( http://forums.virtualbox.org/viewtopic.php ?f = 26&t = 33355&start = )(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にはループバックファイルシステムが含まれておらず、macfuseのループバックfsはブロックファイルでは機能しないため、ブロックファイルを実際のパーティションとしてマウントするにはループバックfsが必要です。

14
jan bernlöhr

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

  1. Macfuseをインストールする
  2. Virtual Boxをインストールする
  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

7
jan bernlöhr

これはマウンテンライオンで私のために働いた。インストールやコンパイルは必要ありません:

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

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

1
JanC

FuseはMacOSXで動作しますが、ヘッダーが必要になります。

1
gWaldo

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

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

0
FiReBaT

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

  1. Osxfuse(macfuseの後継)をインストールします。
  2. VirtualBoxをインストールする
  3. Vdfuseのソースコード(vdfuse.c)from https://github.com/Thorsten-Sick/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

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

0
Ben XO