노틸러스 등에서 내용을 볼 수 있도록 VirtualBox 드라이브 이미지 (.vdi)를 마운트 할 수 있습니까?
VirtualBox 2.x에서 3.1.6으로 업그레이드 한 후 부팅되지 않는 Windows 2000 .vdi가 있습니다 ( "액세스 할 수없는 부팅 장치"). IDE 드라이브 세부 사항이 변경되었다고 생각하고 내부 드라이브 이미지에 액세스하고 Windows boot.ini
를 편집 하여 새 위치를 가리 키기 만하면됩니다.
노틸러스 등에서 내용을 볼 수 있도록 VirtualBox 드라이브 이미지 (.vdi)를 마운트 할 수 있습니까?
VirtualBox 2.x에서 3.1.6으로 업그레이드 한 후 부팅되지 않는 Windows 2000 .vdi가 있습니다 ( "액세스 할 수없는 부팅 장치"). IDE 드라이브 세부 사항이 변경되었다고 생각하고 내부 드라이브 이미지에 액세스하고 Windows boot.ini
를 편집 하여 새 위치를 가리 키기 만하면됩니다.
답변:
표준 이미지로 변환 한 다음 마운트 할 수 있습니다.
VBoxManage clonehd --format RAW ubuntu.vdi ubuntu.img
그때
mount -t ext3 -o loop,rw ./ubuntu.img /mnt
ext3
이 경우 파일 시스템 유형을 알아야합니다 . 마운트 된 후 원하는 편집기를 사용하여 편집하십시오. 해당 /mnt
위치의 파일을 실행중인 호스트와 혼동하지 마십시오 .
VDI 파일에 대한 세부 사항을 확인하려면 다음을 실행하십시오 VBoxManage showhdinfo ubuntu.vdi
..
VBoxManage showhdinfo [your vdi file]
확실하지 않은 경우 의 출력을 살펴보십시오 .
사용 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 포럼 에서 다음 토론을 확인하십시오 .
qemu-kvm
대신 설치 하는 qemu
것만으로도 작동 할 수 있습니다. 그것은 Ububtu 16.04에서 나를 위해했고 230MB 대신 23MB와 13의 종속성과 전체 qemu 설치에 대한 더 많은 종속성을 설치했습니다.
sudo partprobe
새로운 커널로 실행해야 한다는 것을 추가하고 싶습니다 . /dev/nbd0p*
것 같습니다 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
디스크를 다른 가상 OS의 보조 마스터로 설정 한 다음이 (가상) OS로 부팅하면 마운트 할 수 있습니다.
1 단계 : 가상 상자에 가상 OS (예 : Ubuntu 16.04)가 이미 설치되어 있다고 가정하면 해당 가상 OS의 설정에서 새 저장소를 추가하십시오.
2 단계 : 액세스하려는 Vdi 파일을 찾아서 선택합니다.
3 단계 : 가상 OS에 로그온합니다.
4 단계 : 가상 디스크가 OS 내에서 사용 가능할 수 있습니다. 그렇지 않은 경우 5 단계를 수행하십시오.
5 단계 : 가상 OS 내부에서 Gparted를 사용하여 디스크를 확인하십시오. 디스크가 가상 OS에서 액세스 할 수있는 유형인지 확인하십시오. 그렇지 않은 경우 디스크를 편집해야 할 수 있지만 기존 내용이 손실됩니다.
직접 테스트하지는 않았지만 장착 할 퓨즈 모듈이 있습니다 ( 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
요청한 것이 아니라 vdi 에서 파일 을 가져 오는 문제 일 경우 매우 빠른 솔루션 을 원합니다 .
apt-get install openssh-server && service ssh restart
).sftp hostuser@hostip
)put
만큼의 파일을 호스트에 저장하십시오.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