¿Montar una imagen de unidad VirtualBox (vdi)?


88

¿Es posible montar una imagen de unidad VirtualBox (.vdi) para que los contenidos se puedan ver en Nautilus, etc.?

Tengo un Windows 2000 .vdi que no arranca ("dispositivo de arranque inaccesible") después de actualizar de VirtualBox 2.xa 3.1.6. Creo que los detalles de la unidad IDE han cambiado y que todo lo que necesito hacer es acceder a la imagen de la unidad interna y editar Windows boot.inipara que apunte a la nueva ubicación.


1
Si su archivo .vdi y luego .img contiene más de 1 partición, esto es muy útil: browse-img-without-
mount

Respuestas:


56

Puede convertir en imagen estándar y luego montarla.

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

Entonces

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

Necesitará SABER el tipo de sistema de archivos, ext3en este caso. Después de montarlo, entra y edita con el editor que elijas. No confunda los archivos dentro de la /mntubicación con el host en ejecución, o será malo.

Para verificar los detalles acerca de su archivo VDI, ejecute: VBoxManage showhdinfo ubuntu.vdi.

Fuente: [SOLUCIONADO] ¿Abrir .vdi con el administrador de archivos? - ubuntuforums.org


44
Especialmente útil en una situación como esta. OP podrá trabajar en la copia manteniendo el original como copia de seguridad.
Javier Rivera

77
Tenga cuidado al hacer esto con archivos .vdi de tamaño dinámico. La conversión a .img forzará que el archivo de imagen sea tan grande como el tamaño lógico del disco, por lo que este enfoque funciona, pero podría ser mucho más grande que el archivo .vdi. Echa un vistazo a la salida de VBoxManage showhdinfo [your vdi file]si no estás seguro.
Jack O'Connor

1
-1, las respuestas de stwissel y Maxime R. proporcionan soluciones: esta es una solución justa, pero no la mejor respuesta a la pregunta
STW

3
Si la imagen tiene una tabla de particiones (como la mayoría de las unidades), deberá combinar esta respuesta con esta para montar las particiones individuales.
Bain

1
No funciona Sigue recibiendo errores de montaje tipo fs incorrecto. Intenté ext3 y ext2 y ext4. El cuadro virtual dice que el tipo hd fs es ext4.
Joshua Robison

86

Uso qemu-nbd, el proceso se explica en serverfault y en este blog .

Básicamente, tendrás que instalar qemusi es necesario:

sudo apt-get install qemu

Luego deberá cargar el módulo del dispositivo de bloqueo de red :

sudo rmmod nbd
sudo modprobe nbd max_part=16

Adjunte la imagen .vdi a una de las nbd que acaba de crear:

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

Ahora obtendrá un dispositivo de bloque / dev / nbd0, junto con varios nodos de dispositivo de partición / dev / nbd0p *.

sudo mount /dev/nbd0p1 /mnt

Una vez que haya terminado, desmonte todo y desconecte el dispositivo:

sudo qemu-nbd -d /dev/nbd0

Me gustaría señalar que max_part=16parece ser una parte crítica. Sin él, no verá ningún /dev/nbd0pXarchivo, a pesar de que el dispositivo principal funcionará correctamente. Consulte la siguiente discusión en los foros de Gentoo para ver a las personas que se encuentran con este problema.
firegurafiku

Todas las respuestas funcionan hasta cierto punto, pero este es mi favorito y debería ser el aceptado. clonehd hace el trabajo pero duplica los requisitos de almacenamiento. virtualbox-fuse es ideal, pero aunque todavía puede obtenerlo, no llegó a los repositorios en las versiones modernas del sistema operativo.
Hatoru Hansou

2
Esto funcionó muy bien. Tenga en cuenta que la instalación en qemu-kvmlugar de qemupuede funcionar igual de bien. Lo hizo para mí en mi Ububtu 16.04, e instaló solo 23 MB y 13 dependencias en lugar de 230 MB y muchas más dependencias para la instalación completa de qemu.
mivk

2
Me gustaría agregar que aparentemente sudo partprobedebe ejecutarse con núcleos más nuevos para que /dev/nbd0p*se creen en Debian / Ubuntu ( bugs.debian.org/cgi-bin/bugreport.cgi?bug=824553 ).
Kai

1
¡Esta debería ser la respuesta aceptada! Mi vdi es demasiado grande para convertirlo a un .iso en mi disco duro. Después de luchar por un tiempo, me desplacé hacia abajo para ver si algún otro método usaba el vdi directamente. Este es simple. (Nota: qemu toma alrededor de 300 MB para aquellos de nosotros que se preocupan por nuestro disco duro se llene.)
psitae

35

Parece que vdfuse es la herramienta que estás buscando. Está en los repositorios de Ubuntu. Si desea compilarse (fuente de 2010), también puede hacerlo .

Sin embargo, para la mayoría de nosotros se reduce a un simple:

sudo apt-get install virtualbox-fuse

Parece que ahora también admite vdi dinámico.

Y para montar el .vdiarchivo en /mntdir use el comando:

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

Todo el disco se montará con particiones Partition1, Partition2formato de nombres. Entonces esos archivos se pueden montar en bucle. Por ejemplo,

sudo mount -o loop /mnt/Parition1 /mountpoint

1
@mattwilkie: La diferencia ahora: ya no se requiere compilación manual
stwissel

1
De nada. Sentarse en una pantalla / teclado adecuado en lugar de picotear glas marcó la diferencia :-)
stwissel

55
No está disponible en 14.04.
int_ua

2
Se puede descargar desde aquí: sourceforge.net/projects/vdfuse/?source=typ_redirect y funciona (en 15.04)
sup

44
Ya no es válido para 16.10, el paquete ya no existe.
Piskvor

14

Configure el disco como maestro secundario para otro sistema operativo virtual, luego inicie en este sistema operativo (virtual) y podrá montarlo.

Paso 1: Suponiendo que ya tiene un sistema operativo virtual (digamos Ubuntu 16.04) instalado en Virtual box, agregue un nuevo almacenamiento desde la configuración de ese sistema operativo virtual. ingrese la descripción de la imagen aquí

Paso 2: Explore el archivo Vdi al que desea acceder y selecciónelo.

Paso 3: Inicie sesión en el SO virtual.

Paso 4: El disco virtual probablemente estará disponible dentro del sistema operativo. Si no, siga el paso 5

Paso 5: Dentro del SO virtual, use Gparted y verifique los discos. y asegúrese de que el sistema operativo virtual tenga acceso al disco. Si no es así, es posible que deba editar el disco, pero perderá el contenido existente.


1
Para el registro, en 2016 no funcionará
Paulo Pedroso

1
Funciona en ubuntu 16.04.
Sharun

esta es realmente la única solución cuando necesita hacer cambios y luego volver a usarlo, no pude trabajar con vdfuse
DuBistKomisch

7

No me he probado, pero hay un módulo de fusibles para montarlos ( vdfuse), consulte la siguiente página:

Tenga en cuenta que usarlo para acceso de escritura es arriesgado.


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 una imagen directamente usando su nombre de archivo:

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

Para montar un disco de máquina (incluidas las instantáneas):

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

Ya no es relevante ya que esta utilidad no es compatible.
Evan Carroll

3

No es lo que solicitó, pero si solo se trata de obtener archivos del vdi y desea una solución muy rápida :

  1. Ejecute un servidor ssh en su host ( apt-get install openssh-server && service ssh restart)
  2. Use VirtualBox para construir una máquina virtual a partir del archivo vdi existente, luego inicie esa máquina virtual. (Simplemente conservé el Adaptador de red (NAT) predeterminado al crear la VM).
  3. Dentro de la máquina virtual, sftp a su host. ( sftp hostuser@hostip)
  4. En la sesión sftp, puttantos archivos al host como necesite.

1
Un truco feo, pero si estás en una situación difícil, hace el trabajo.
Piskvor

Un problema puede ser que la máquina actualmente no se inicia correctamente, por lo que primero deberá solucionar ese problema y eso significa que no puede hacerlo desde dentro. También usar SSH con sus sistemas operativos virtualbox es el camino a seguir para copiar archivos. Mucho más rápido que intentar compartir un disco.
Alexis Wilke

2

Como Vojtech Trefny mencionó anteriormente,

1) primero convierta su VDI -> IMG

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

2) Luego monte el IMG

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

3) Sin embargo, cuando recibí este mensaje de error:

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

y dmesg dijo:

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

debe verificar la estructura de partición de .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 puede ver, la partición principal está comenzando en los bytes 16775168. Sin embargo, tenga en cuenta que el tamaño del sector es 512 bytes, por lo que debe multiplicar los resultados 16775168 x 512 = 8588886016, por lo que debe compensar el montaje de esta manera:

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

5) En realidad, esto no funcionó para mí en caso de que el sistema de archivos estuviera sucio después de cambiar el tamaño. En este caso, hice más esto:

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

1
Esta no es una respuesta a la pregunta. Tuviste otro problema: una imagen corrupta. Deberías haber respondido una nueva pregunta.
Evan Carroll

Esto se expande a la respuesta anterior que cubre el caso de error. La imagen corrupta fue un caso de uso. +1 para muchos trucos nuevos.
FractalSpace
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.