在 Mac OS X 上挂载 VHD

jan*_*öhr 15 mount mac-osx vhd

是否可以(如何)在 OS X 中挂载由 Windows 7 创建的 VHD 文件?

我找到了一些有关如何在 linux 上执行此操作的信息。有一个熔断器 fs “vdfuse”,它使用 virtualbox 库来挂载 virtualbox 支持的文件系统。但是我无法在 osx 上编译这个包,因为几乎所有的头文件都丢失了,我怀疑它无论如何都能工作......

编辑 #2:好吧,我弄脏了我的手,最后在 osx 上编译了 vdfuse(http://forums.virtualbox.org/viewtopic.php?f=26&t=33355&start=0)。作为起点,我使用了 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}
Run Code Online (Sandbox Code Playgroud)

您实际上不需要在您的机器上编译 VirtualBox,只需安装最新版本的 VirtualBox。

所以现在我可以部分安装 vhds。单独的分区在我的挂载点上显示为块文件 Partition1、Partition2、...。然而,Mac OS X 不包含环回文件系统,并且 macfuse 的环回 fs 不适用于块文件,因此我们需要一个环回 fs 将块文件挂载为实际分区。

jan*_*öhr 7

最后我让它工作了。所以总而言之,这里是执行的步骤

  1. 安装 macfuse
  2. 安装虚拟盒子
  3. 如问题中所述编译 vdfuse
  4. 挂载 vhd 磁盘

    须藤 ./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


小智 6

现在已经是 2020 年了,这些 10 年前的指令几乎奏效了。以下是我根据 Jan Bernl\xc3\xb6hr 接受的答案以及问题中的脚本,在我的 Mojave Mac 上安装 Windows 7 的旧备份映像所做的操作。

\n\n
    \n
  1. 安装 osxfuse(macfuse 的后继者)
  2. \n
  3. 安装VirtualBox
  4. \n
  5. vdfuse.chttps://github.com/Thorsten-Sick/vdfuse下载 vdfuse 源代码 ( ) (当前版本为 v83 - 原始链接与 v80 挂钩)。
  6. \n
  7. 下载 VirtualBox 标头,但您必须获取 2012 年以来的版本。\n我使用了以下命令:svn co -r \'{20120801}\' http://www.virtualbox.org/svn/vbox/trunk/include/
  8. \n
  9. 使用以下构建指令,改编自问题,但进行一些小改动(64位构建和较新的 VirtualBox 似乎没有 VBoxREM.dylib:
  10. \n
\n\n
  infile=vdfuse.c\n  outfile=vdfuse\n  incdir="$(pwd)/include"\n  INSTALL_DIR="/Applications/VirtualBox.app/Contents/MacOS"\n  CFLAGS="-pipe"\n\n  gcc -arch x86_64 "${infile}" \\\n         "${INSTALL_DIR}"/VBoxDD.dylib \\\n         "${INSTALL_DIR}"/VBoxDDU.dylib \\\n         "${INSTALL_DIR}"/VBoxVMM.dylib \\\n         "${INSTALL_DIR}"/VBoxRT.dylib \\\n         "${INSTALL_DIR}"/VBoxDD2.dylib \\\n        -o "${outfile}" \\\n        -I"${incdir}" -I"/usr/local/include/fuse" \\\n        -Wl,-rpath,"${INSTALL_DIR}"  \\\n        -lfuse_ino64  \\\n        -Wall ${CFLAGS}\n
Run Code Online (Sandbox Code Playgroud)\n\n
    \n
  1. 挂载vhd磁盘

    \n\n

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

  2. \n
  3. 附加虚拟分区块文件

    \n\n

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

  4. \n
  5. 挂载虚拟分区

    \n\n

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

  6. \n
\n\n

奇迹般的是,这很有魅力!

\n