Monta uma imagem de unidade do VirtualBox (vdi)?

78

É possível montar uma imagem de unidade do VirtualBox (.vdi) para que o conteúdo possa ser visualizado no Nautilus, etc.?

Eu tenho um windows 2000 .vdi que não inicializa ("dispositivo de inicialização inacessível") após a atualização do VirtualBox 2.x para 3.1.6. Acredito que os detalhes da unidade IDE mudaram e que tudo o que preciso fazer é acessar a imagem da unidade interna e editar o Windows boot.ini para apontar para a nova localização.

    
por matt wilkie 30.12.2010 / 15:44

7 respostas

49

Você pode converter em imagem padrão e montá-lo.

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

Então

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

Você precisará CONHECER o tipo de sistema de arquivos, ext3 neste caso. Depois de montado, entre e edite com o editor de sua escolha. Não confunda arquivos dentro do /mnt local com o host em execução, ou será ruim.

Para verificar detalhes sobre o seu arquivo VDI, execute: VBoxManage showhdinfo ubuntu.vdi .

Fonte: [RESOLVIDO] Abra o arquivo .vdi com o gerenciador de arquivos? - ubuntuforums.org

    
por Vojtech Trefny 30.12.2010 / 15:47
76

Use qemu-nbd , o processo é explicado no serverfault e neste blog .

Basicamente, você precisará instalar o qemu , se necessário:

sudo apt-get install qemu

Em seguida, você precisará carregar o módulo dispositivo de bloco de rede :

sudo rmmod nbd
sudo modprobe nbd max_part=16

Anexe a imagem .vdi a um dos nbd que acabou de criar:

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

Agora você obterá um dispositivo de bloco / dev / nbd0, juntamente com vários nós de dispositivo de partição / dev / nbd0p *.

sudo mount /dev/nbd0p1 /mnt

Quando terminar, desmonte tudo e desconecte o dispositivo:

sudo qemu-nbd -d /dev/nbd0
    
por Maxime R. 24.06.2011 / 03:48
35

Parece que vdfuse é a ferramenta que você está procurando. Está nos repositórios do Ubuntu. Se você quiser se compilar (fonte de 2010), você pode fazer isso também .

No entanto, para a maioria de nós, tudo se resume a um simples:

sudo apt-get install virtualbox-fuse

Parece que agora também suporta dinâmica vdi.

E para montar o arquivo .vdi em /mnt dir, use o comando:

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

O disco inteiro será montado com partições Partition1 , Partition2 formato de nomenclatura. Então esses arquivos podem ser montados em loop. Por exemplo,

sudo mount -o loop /mnt/Parition1 /mountpoint
    
por stwissel 07.05.2012 / 08:02
14

Defina o disco como mestre secundário para outro sistema operacional virtual, depois inicialize nesse sistema operacional (virtual) e você poderá montá-lo.

Etapa 1: Supondo que você tenha um sistema operacional virtual (como o Ubuntu 16.04) já instalado na caixa Virtual, inclua um novo armazenamento nas configurações desse sistema operacional virtual.

Etapa 2: Navegue no arquivo Vdi que você deseja acessar e selecione-o.

Etapa 3: faça logon no sistema operacional virtual.

Etapa 4: O disco virtual provavelmente estará disponível dentro do sistema operacional. Caso contrário, siga o passo 5

Passo 5: Dentro do sistema operacional virtual, use o Gparted e verifique os discos. e assegure-se de que o disco é do tipo que é acessível pelo sistema operacional virtual. Se não for, você pode ter que editar o disco, mas você perderá o conteúdo existente.

    
por josef 30.12.2010 / 16:13
6

Eu não testei a mim mesmo, mas parece haver um módulo de fusível para montá-los ( vfduse ), verifique a seguinte página:

Por favor, note que usá-lo para acesso de escrita é arriscado.

Uso:

$ ./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

Para montar uma imagem diretamente usando o nome do arquivo:

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

Para montar um disco de máquina (incluindo instantâneos):

$ ./vdautomount-<version> -p /path/to/vdfuse WinXP /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP
    
por João Pinto 30.12.2010 / 16:08
3

Não é o que você solicitou, mas se for apenas uma questão de obter arquivos do vdi e você quiser uma solução muito rápida :

  1. Executar um servidor ssh no seu host ( apt-get install openssh-server && service ssh restart )
  2. Use o VirtualBox para criar uma máquina virtual a partir do arquivo vdi existente e, em seguida, inicialize essa máquina virtual. (Acabei de manter o adaptador de rede (NAT) padrão ao criar a VM.)
  3. Dentro da máquina virtual, sftp para o seu host. ( sftp hostuser@hostip )
  4. Na sessão sftp, put tantos arquivos para o host quanto você precisar.
por JellicleCat 20.02.2015 / 18:23
-1

Como Vojtech Trefny mencionado acima,

1) primeiro converta seu VDI - > IMG

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

2) Em seguida, monte o IMG

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

3) No entanto, como recebi esta mensagem de erro:

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

e o dmesg disse:

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

você precisa verificar a estrutura de partições do .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) Como você pode ver, a partição principal está começando nos bytes 16775168. Entretanto, note que o tamanho do setor é de 512 bytes, então você precisa multiplicar os resultados 16775168 x 512 = 8588886016, então você precisa compensar a montagem como isso:

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

5) Na verdade, isso não funcionou para mim no caso de o sistema de arquivos estar sujo após o redimensionamento. Neste caso eu ainda fiz isso:

dd if=ubuntu.img of=ubuntu.disk bs=512 skip=16775168 count=12092416
e2fsck ubuntu.disk
mount ubuntu.disk /mnt
    
por PHZ.fi-Pharazon 18.06.2017 / 14:51