Mac OS X에서 VHD 마운트


14

OS X에서 Windows 7로 만든 VHD 파일을 마운트 할 수 있습니까 (어떻게)?

리눅스에서 이것을 수행하는 방법에 대한 정보를 찾았습니다. virtualbox libs를 사용하여 virtualbox가 지원하는 파일 시스템을 마운트하는 퓨즈 fs "vdfuse"가 있습니다. 그러나 거의 모든 헤더가 누락되어 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를 설치하면됩니다.

이제 vhd를 부분적으로 마운트 할 수 있습니다. 별도의 파티션은 마운트 지점에 Partition1, Partition2, ... 블록 파일로 나타납니다. 그러나 Mac OS X에는 루프백 파일 시스템이 포함되어 있지 않으며 macfuse의 루프백 fs는 블록 파일에서 작동하지 않으므로 블록 파일을 실제 파티션으로 마운트하려면 루프백 fs가 필요합니다.


Win7과 관련이 있습니까? 귀하의 질문에 완전히 대답하려면 VHD를 생성 한 응용 프로그램 (VirtualBox, VMware (및 워크 스테이션 vs 서버 vs ...) 등)을
알아야합니다

실제로 Windows 7에 포함 된 diskpart를 사용하여 VHD를 만들었습니다.
jan bernlöhr

당신은 사용할 수 있습니다 GCC -arch - 64 "$ {INFILE}"라인 7 \는 64 비트 컴파일 그래서 당신은 (특히 10.6) 레오파드 또는 스노우 레오파드 (Snow Leopard)를 실행하는 경우
gWaldo

@gWaldo, VHD는 Windows 6.1, Virtual PC, Virtual Server, Hyper-V, Xen 등에서 사용되는 파일 형식입니다.
Chris 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 / 경로 / 끝 / 마운트 포인트 / 파티션 N

  6. 가상 파티션을 마운트

    mount -t YourFS / dev / diskK / 경로 / To / ParitionMountPoint


놀랍게도 2020 년에이 작업을 수행하기 위해이 지침을 많이 변경할 필요는 없었습니다. 그러나 몇 가지 작은 변경이있었습니다. 나는 그들을 새로운 게시물에 나열했습니다.
벤 XO

3

이것은 Mountain Lion에서 나를 위해 일했습니다. 설치 또는 컴파일이 필요하지 않습니다.

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

10.8.3에 나를 위해 말 : hdiutil : 실패하지 첨부 할 - 아니 마운트 파일 시스템
hkulekci

방금 다시 시도했는데 동일한 오류 메시지가 나타납니다. 기묘한. 몇 달 전에 이것을 몇 번 성공적으로 사용했습니다.
henning77 2016 년

오래된 vhd 이미지를 사용하면 다시 작동합니다 (NTFS, 01/2013에서 생성됨). 최신 vhd에서는 그렇지 않습니다. 나는 그 차이가 어디에 있는지 아직 모른다.
henning77

이 문제에 대해 뭔가를 찾지 못했습니다.
hkulekci 2016 년

Windows 7의 bitlocker 암호화 VHD hdiutil attach -imagekey diskimage-class=CRawDiskImage /Path/to/encrypted.vhd -nomount를 사용 하여 비슷하게 마운트 한 다음 m3datarecovery.com/mac-bitlocker 를 사용 하여 암호화를 해제 할 수있었습니다. Mac 용 DAEMON Tools : 스마트 마운팅 및 이미징 소프트웨어 도 탑재 되었으나 무료는 아닙니다.
Pat

1

퓨즈는 MacOSX에서 작동하지만 헤더가 필요합니다.


고맙게도, 나는 OSF 사용자가 ntfs (tuxera), ext2 및 기타 파일 시스템에 액세스 할 수 있도록 컴퓨터에 macfuse를 이미 설정했습니다. 아마 리눅스 시스템에서 lib를 컴파일하고 ot osx 파일을 복사 할 수있다.
jan bernlöhr

1

다른 솔루션을 찾지 못하면 VirtualBox (또는 VHD 파일을 지원하는 다른 유사한 도구)를 사용하여 해당 가상 디스크 이미지를 사용하는 가상 시스템을 실행 한 다음 Samba 또는 sftp 등을 사용하여 필요한 파일에 액세스하거나 복사 할 수 있습니다 .


고맙습니다, 이것은 가능하지만 불행히도 내가 찾고있는 것은 아닙니다. 현재 이중 부팅 시스템에 NTFS 파티션이 있으므로 win 및 osx에서 데이터를 읽고 쓸 수 있습니다. 다음 단계는 win7 및 데이터가 포함 된 파티션을 가상화하는 것입니다. 그러나 osx에서 여전히 데이터에 액세스 할 수 있어야합니다.
jan bernlöhr

0

VHD 파일의 이름을 IMG로 바꾸십시오. 두 번 클릭하여 마운트하십시오. 그게 다야.

Mac OS X은 NTFS 볼륨에 대해서만 읽기 권한을 제공하므로 VHD에 NTFS 볼륨이있는 경우 읽기 권한 만 갖습니다.


1
불행히도 이것은 작동하지 않습니다. DiskImageMounter는 "인식되지 않습니다"라고 말합니다.
jan bernlöhr

0

이제 2020 년이되었으며이 10 살짜리 지침 은 거의 효과가있었습니다. Jan Bernlöhr의 대답과 질문의 스크립트를 기반으로 Windows 7의 이전 백업 이미지를 Mojave Mac에 마운트하기 위해 수행 한 작업은 다음과 같습니다.

  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.