VirtualBox 드라이브 이미지 (VDI)를 마운트 하시겠습니까?


88

노틸러스 등에서 내용을 볼 수 있도록 VirtualBox 드라이브 이미지 (.vdi)를 마운트 할 수 있습니까?

VirtualBox 2.x에서 3.1.6으로 업그레이드 한 후 부팅되지 않는 Windows 2000 .vdi가 있습니다 ( "액세스 할 수없는 부팅 장치"). IDE 드라이브 세부 사항이 변경되었다고 생각하고 내부 드라이브 이미지에 액세스하고 Windows boot.ini를 편집 하여 새 위치를 가리 키기 만하면됩니다.


1
.vdi와 .img 파일에 1 개 이상의 파티션이 포함되어 있으면 매우 유용합니다. browse-img-without-mounting
user2689749

답변:


55

표준 이미지로 변환 한 다음 마운트 할 수 있습니다.

VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img

그때

mount -t ext3 -o loop,rw ./ubuntu.img /mnt

ext3이 경우 파일 시스템 유형을 알아야합니다 . 마운트 된 후 원하는 편집기를 사용하여 편집하십시오. 해당 /mnt위치의 파일을 실행중인 호스트와 혼동하지 마십시오 .

VDI 파일에 대한 세부 사항을 확인하려면 다음을 실행하십시오 VBoxManage showhdinfo ubuntu.vdi..

출처 : [해결] 아카이브 관리자로 .vdi를 열겠습니까? -우분투 포럼


4
Specilly는 이와 같은 상황에서 유용합니다. OP는 원본을 백업으로 유지하면서 사본에서 작업 할 수 있습니다.
Javier Rivera

7
동적 크기의 .vdi 파일을 사용하여이 작업을 신중하게 수행하십시오. .img로 변환하면 이미지 파일이 디스크의 논리 크기만큼 커지므로이 방법이 작동하지만 .vdi 파일보다 훨씬 클 수 있습니다. VBoxManage showhdinfo [your vdi file]확실하지 않은 경우 의 출력을 살펴보십시오 .
잭 오코너

1
-1, stwisselMaxime R. 의 답변은 해결책을 제공합니다. 이것은 공정한 해결책이지만 문제에 대한 최상의 답변은 아닙니다
STW

3
이미지에 대부분의 드라이브와 같은 파티션 테이블이있는 경우이 답변을 파티션 과 결합 하여 개별 파티션을 마운트해야합니다.
bain

1
작동하지 않습니다. 잘못된 fs 유형의 장착 오류가 계속 발생합니다. ext3과 ext2 및 ext4 시도했습니다. 가상 상자는 hd fs 유형이 ext4라고 말합니다.
Joshua Robison

86

사용 qemu-nbd, 과정을 설명한다 저기 serverfault에이 블로그에 .

기본적으로 qemu필요한 경우 설치 해야합니다.

sudo apt-get install qemu

그런 다음 네트워크 블록 장치 모듈 을로드해야 합니다.

sudo rmmod nbd
sudo modprobe nbd max_part=16

.vdi 이미지를 방금 만든 nbd 중 하나에 연결하십시오.

sudo qemu-nbd -c /dev/nbd0 drive.vdi

이제 여러 개의 / dev / nbd0p * 파티션 장치 노드와 함께 / dev / nbd0 블록 장치를 얻게됩니다.

sudo mount /dev/nbd0p1 /mnt

완료되면 모든 것을 마운트 해제하고 장치를 분리하십시오.

sudo qemu-nbd -d /dev/nbd0

나는주의하고 싶은 max_part=16중요한 부분이 될 것으로 보인다. 그것이 없으면 /dev/nbd0pX주 장치가 제대로 작동하더라도 파일 이 표시되지 않습니다 . 사람들이이 문제를 해결 한 것을 보려면 Gentoo 포럼 에서 다음 토론을 확인하십시오 .
firegurafiku

모든 답변은 어느 정도 작동하지만 이것은 내가 가장 좋아하는 것이며 받아 들여야합니다. clonehd는 작업을 수행하지만 스토리지 요구 사항을 두 배로 늘립니다. virtualbox-fuse가 이상적이지만 여전히 얻을 수는 있지만 최신 OS 릴리스에서는 repos로 만들지 못했습니다.
Hatoru Hansou

2
이것은 훌륭하게 작동했습니다. qemu-kvm대신 설치 하는 qemu것만으로도 작동 할 수 있습니다. 그것은 Ububtu 16.04에서 나를 위해했고 230MB 대신 23MB와 13의 종속성과 전체 qemu 설치에 대한 더 많은 종속성을 설치했습니다.
mivk

2
데비안 / 우분투 ( bugs.debian.org/cgi-bin/bugreport.cgi?bug=824553 ) 에서 생성 된 sudo partprobe새로운 커널로 실행해야 한다는 것을 추가하고 싶습니다 . /dev/nbd0p*
Kai

1
이것은 받아 들여야 할 답변입니다! 내 vdi가 너무 커서 내 하드 드라이브의 .iso로 변환 할 수 없습니다. 잠시 동안 어려움을 겪은 후 다른 방법으로 vdi를 직접 사용했는지 확인하기 위해 아래로 스크롤했습니다. 이것은 간단합니다. (참고 : qemu는 하드 드라이브 충전에 관심이있는 사람들을 위해 약 300MB를 사용합니다.)
psitae

35

것 같습니다 vdfuse은 당신이 찾고있는 도구입니다. 우분투 저장소에 있습니다. 자신을 컴파일하려면 (2010 소스) 그렇게 할 수도 있습니다 .

그러나 우리 대부분은 간단한 것으로 요약합니다.

sudo apt-get install virtualbox-fuse

이제 동적 vdi도 지원하는 것 같습니다.

그리고 dir에 .vdi파일 을 마운트 /mnt하려면 다음 명령을 사용하십시오.

sudo vdfuse -a -f /path-to-vdi-file /mnt

전체 디스크 파티션과 마운트됩니다 Partition1, Partition2형식을 이름. 그런 다음 해당 파일을 루프 마운트 할 수 있습니다. 예를 들어

sudo mount -o loop /mnt/Parition1 /mountpoint

1
@ mattwilkie : 지금의 차이점 : 더 이상 수동 컴파일이 필요하지 않습니다
stwissel

1
천만에요.
글래스

5
14.04에서는 사용할 수 없습니다.
int_ua

2
여기에서 다운로드 할 수 있습니다 : sourceforge.net/projects/vdfuse/?source=typ_redirect 그리고 그것은 작동합니다 (15.04에)
sup

4
16.10에 더 이상 유효하지 않으며 패키지가 더 이상 존재하지 않습니다.
Piskvor

14

디스크를 다른 가상 OS의 보조 마스터로 설정 한 다음이 (가상) OS로 부팅하면 마운트 할 수 있습니다.

1 단계 : 가상 상자에 가상 OS (예 : Ubuntu 16.04)가 이미 설치되어 있다고 가정하면 해당 가상 OS의 설정에서 새 저장소를 추가하십시오. 여기에 이미지 설명을 입력하십시오

2 단계 : 액세스하려는 Vdi 파일을 찾아서 선택합니다.

3 단계 : 가상 OS에 로그온합니다.

4 단계 : 가상 디스크가 OS 내에서 사용 가능할 수 있습니다. 그렇지 않은 경우 5 단계를 수행하십시오.

5 단계 : 가상 OS 내부에서 Gparted를 사용하여 디스크를 확인하십시오. 디스크가 가상 OS에서 액세스 할 수있는 유형인지 확인하십시오. 그렇지 않은 경우 디스크를 편집해야 할 수 있지만 기존 내용이 손실됩니다.


1
공식적으로, 2016 년 작동하지 않습니다
파울로 페드로 소에게

1
우분투 16.04에서 작동합니다.
Sharun

이것은 실제로 변경 사항을 적용한 후 다시 사용할 때 vdfuse로 작업 할 수없는 유일한 솔루션입니다.
DuBistKomisch

7

직접 테스트하지는 않았지만 장착 할 퓨즈 모듈이 있습니다 ( vdfuse). 다음 페이지를 확인하십시오.

쓰기 액세스에 사용하는 것은 위험합니다.


용법:

$ ./vdfuse-v<version> -h
USAGE: ./vdfuse [options] -f image-file mountpoint
   -h   help
   -r   readonly
   -t   specify type (VDI, VMDK, VHD, or raw; default: auto)
   -f   VDimage file
   -a   allow all users to read disk
   -w   allow all users to read and write to disk
   -g   run in foreground
   -v   verbose
   -d   debug

파일 이름을 사용하여 이미지를 직접 마운트하려면 :

$ ./vdfuse-v<version> -f image.vdi /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP

머신 디스크를 마운트하려면 (스냅 샷 포함) :

$ ./vdautomount-<version> -p /path/to/vdfuse WinXP /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP

이 유틸리티는 지원되지 않으므로 더 이상 관련이 없습니다.
Evan Carroll

3

요청한 것이 아니라 vdi 에서 파일가져 오는 문제 일 경우 매우 빠른 솔루션 을 원합니다 .

  1. 호스트에서 ssh 서버를 실행하십시오 ( apt-get install openssh-server && service ssh restart).
  2. VirtualBox를 사용하여 기존 vdi 파일에서 가상 머신을 빌드 한 다음 해당 가상 머신을 부팅하십시오. (VM을 만들 때 방금 기본 NAT (Network Adapter)를 유지했습니다.)
  3. 가상 머신 내에서 호스트로 sftp하십시오. ( sftp hostuser@hostip)
  4. sftp 세션에서 필요한 put만큼의 파일을 호스트에 저장하십시오.

1
못생긴 해킹이지만 빡빡한 곳에 있으면 작업이 완료됩니다.
Piskvor

한 가지 문제는 컴퓨터가 현재 올바르게 부팅되지 않아서 먼저 문제를 해결해야하기 때문에 문제를 해결할 수 없다는 것입니다. 또한 virtualbox OS와 함께 SSH를 사용하면 파일을 복사 할 수 있습니다. 디스크를 공유하는 것보다 훨씬 빠릅니다.
Alexis Wilke 2016 년

2

Vojtech Trefny가 위에서 언급했듯이

1) 먼저 VDI를 변환하십시오-> IMG

VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img

2) 그런 다음 IMG를 장착하십시오

mount -t ext3 -o loop,rw ./ubuntu.img /mnt

3) 그러나이 오류 메시지가 나타납니다.

mount: wrong fs type, bad option, bad superblock on /dev/loop0,
       missing codepage or helper program, or other error
       In some cases useful info is found in syslog - try
       dmesg | tail  or so

그리고 dmesg는 말했다 :

[3105578.013671] EXT4-fs (loop0): VFS: Can't find ext3 filesystem

.img의 파티션 구조를 확인해야합니다.

fdisk -l ubuntu.img

Disk ubuntu.img: 21.0 GB, 20971520000 bytes
255 heads, 63 sectors/track, 2549 cylinders, total 40960000 sectors
Units = sectors of 1 * 512 = 512 bytes
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Disk identifier: 0xf45bc910

   Device Boot      Start         End      Blocks   Id  System
ubuntu.img1   *        2048    12582911     6290432   83  Linux
ubuntu.img2        12584958    16775167     2095105    5  Extended
ubuntu.img3        16775168    40959999    12092416   83  Linux
ubuntu.img5        12584960    16775167     2095104   82  Linux swap / Solaris

4) 보시다시피, 주 파티션은 16775168 바이트에서 시작합니다. 그러나 섹터 크기는 512 바이트이므로 결과를 16775168 x 512 = 8588886016으로 곱해야합니다. 따라서 마운트를 다음과 같이 오프셋해야합니다.

mount -t ext3 -o loop,rw,offset=8588886016 ./ubuntu.img /mnt

5) 실제로 크기 조정 후 파일 시스템이 더러운 경우에는 작동하지 않았습니다. 이 경우 추가로 수행했습니다.

dd if=ubuntu.img of=ubuntu.disk bs=512 skip=16775168 count=12092416
e2fsck ubuntu.disk
mount ubuntu.disk /mnt

1
이것은 질문에 대한 답변이 아닙니다. 또 다른 문제인 이미지가 손상되었습니다. 새로운 질문에 스스로 대답해야합니다.
Evan Carroll

이것은 오류 사례를 다루는 이전 답변으로 확장됩니다. 손상된 이미지는 하나의 사용 사례였습니다. 많은 새로운 트릭에 +1.
FractalSpace
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.