在Mac OS X上挂载VHD


14

是否可以(如何)在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}

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

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


Win7与它有什么关系?要完全回答您的问题,我需要知道哪个应用程序创建了您的VHD(VirtualBox,VMware(以及工作站与服务器与……)等)
gWaldo 2010年

实际上,我使用Windows 7中包含的diskpart创建了VHD ...
janbernlöhr,2010年

如果您运行的是Leopard或Snow Leopard(esp 10.6),则可能要在第7行中使用gcc -arch x86-64“ $ {infile}” \,以便编译64位
gWaldo 2010年

@ gWaldo,VHD是Windows 6.1,Virtual PC,Virtual Server,Hyper-V,Xen等使用的文件格式。
克里斯·S

令人难以置信的是,我无需对这些说明进行太多改动就可以在2020年开始工作。但是,做了一些小改动。我在新帖子中列出了他们。
Ben XO

Answers:


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


令人难以置信的是,我无需对这些说明进行太多改动就可以在2020年开始工作。但是,做了一些小改动。我在新帖子中列出了他们。
Ben XO

3

这为我在山狮上工作。无需安装或编译:

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

在10.8.3上对我说:hdiutil:附加失败-没有可挂载的文件系统
hkulekci 2013年

我只是再次尝试,并得到相同的错误消息。奇怪的。几个月前,我已经成功使用了几次。
henning77

使用较旧的vhd映像,它可以再次运行(NTFS,创建于01/2013)。使用更新的vhd则不会。我还不知道区别在哪里。
henning77

我没有找到关于这个问题的东西。
hkulekci 2013年

我有一个Windows 7加密的VHD,可以用类似的方式安装它hdiutil attach -imagekey diskimage-class=CRawDiskImage /Path/to/encrypted.vhd -nomount,然后使用m3datarecovery.com/mac-bitlocker对其进行解密。适用于Mac的DAEMON工具:智能安装和映像软件也可以进行安装,但是它不是免费的。
帕特

1

FUSE在MacOSX上有效,但是您需要标题。


谢谢,我已经在我们的机器上建立了macfuse,以使osx用户可以访问ntfs(tuxera),ext2和其他文件系统。也许我可以在Linux系统上编译lib,然后复制ot osx文件...
janbernlöhr2010年

1

如果找不到其他解决方案,则可以使用VirtualBox(或支持VHD文件的其他类似工具)运行使用该虚拟磁盘映像的虚拟系统,然后使用Samba或sftp等访问或复制所需的文件。 。


谢谢您,这是可行的,但不幸的是,这并不是我想要的。目前,我在双引导系统上具有NTFS分区,因此我可以从win和osx读取/写入数据。下一步是虚拟化包含win7和数据的分区...但是,仍需要在osx上访问数据。
janbernlöhr,2010年

0

只需将您的VHD文件重命名为IMG ..双击将其挂载。就这样。

请记住,Mac OS X仅提供对NTFS卷的读访问权限,因此,如果您的VHD具有NTFS卷,则您只有读访问权限。


1
不幸的是,这不起作用。DiskImageMounter只是说“无法识别”。
janbernlöhr2012年

0

现在是2020年,这些具有10年历史的指令几乎奏效了。这是我根据JanBernlöhr接受的答案以及问题中的脚本在Mojave Mac上从Windows 7挂载旧备份映像的过程。

  1. 安装osxfuse(macfuse的后继者)
  2. 安装VirtualBox
  3. 从以下位置下载vdfuse源代码(vdfuse.c 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

奇迹般地,这很迷人!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.