web-dev-qa-db-fra.com

Monter une image de lecteur VirtualBox (vdi)?

Est-il possible de monter une image de lecteur VirtualBox (.vdi) afin que le contenu puisse être visualisé dans Nautilus, etc.?

J'ai un Windows 2000 .vdi qui ne démarre pas ("périphérique d'amorçage inaccessible") après la mise à niveau de VirtualBox 2.x à 3.1.6. Je crois que les détails du lecteur IDE ont changé et que tout ce que j'ai à faire est d'accéder à l'image du lecteur interne et de modifier Windows boot.ini pour qu'il pointe vers le nouvel emplacement.

86
matt wilkie

Vous pouvez convertir en image standard et ensuite le monter.

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

Ensuite

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

Vous devrez CONNAÎTRE le type de système de fichiers, ext3 dans ce cas. Une fois celui-ci monté, entrez-y et éditez-le avec l'éditeur de votre choix. Ne confondez pas les fichiers de l’emplacement /mnt avec l’hôte en cours d’exécution, sinon ce sera mauvais.

Pour vérifier les détails de votre fichier VDI, exécutez: VBoxManage showhdinfo ubuntu.vdi.

Source: [RESOLU] Ouvrir le fichier .vdi avec le gestionnaire d'archives? - ubuntuforums.org

55
Vojtech Trefny

Utilisez qemu-nbd, le processus est expliqué on serverfault et dans ce blog .

Fondamentalement, vous devrez installer qemu si nécessaire:

Sudo apt-get install qemu

Ensuite, vous devrez charger le module périphérique résea:

Sudo rmmod nbd
Sudo modprobe nbd max_part=16

Associez l'image .vdi à l'un des nbd que vous venez de créer:

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

Vous obtiendrez maintenant un périphérique bloc/dev/nbd0, ainsi que plusieurs nœuds de périphériques/dev/nbd0p *.

Sudo mount /dev/nbd0p1 /mnt

Une fois que vous avez terminé, démontez tout et débranchez le périphérique:

Sudo qemu-nbd -d /dev/nbd0
83
Maxime R.

Il ressemble à vdfuse est l'outil que vous recherchez. C'est dans les dépôts Ubuntu. Si vous voulez vous compiler (source 2010), vous pouvez le faire aussi .

Cependant, pour la plupart d'entre nous, cela se résume à un simple:

Sudo apt-get install virtualbox-Fuse

Il semble qu’il supporte maintenant le vdi dynamique également.

Et pour monter le fichier .vdi dans le répertoire /mnt, utilisez la commande suivante:

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

Le disque entier sera monté avec les partitions Partition1, Partition2 au format de nommage. Ensuite, ces fichiers peuvent être montés en boucle. Par exemple,

Sudo mount -o loop /mnt/Parition1 /mountpoint
35
stwissel

Définissez le disque en tant que maître secondaire pour un autre système d'exploitation virtuel, puis démarrez-le dans ce système d'exploitation (virtuel) et vous pourrez le monter.

Étape 1: En supposant que vous ayez un système d'exploitation virtuel (par exemple Ubuntu 16.04) déjà installé dans Virtual Box, ajoutez un nouveau stockage à partir des paramètres de ce système d'exploitation virtuel. enter image description here

Étape 2: Parcourez le fichier Vdi auquel vous souhaitez accéder et sélectionnez-le.

Étape 3: Connectez-vous à l'OS virtuel.

Étape 4: Le disque virtuel sera probablement disponible dans le système d'exploitation. Sinon, suivez l'étape 5

Étape 5: À l'intérieur du système d'exploitation virtuel, utilisez Gparted et vérifiez les disques. et assurez-vous que le disque est d'un type accessible par le système d'exploitation virtuel. Si ce n'est pas le cas, vous devrez peut-être éditer le disque, mais vous perdrez alors le contenu existant.

14
josef

Je ne me suis pas testé mais il existe un module Fuse pour les monter (vdfuse), consultez la page suivante:

Veuillez noter que l’utiliser pour un accès en écriture est risqué.


Usage:

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

Pour monter une image directement à l'aide de son nom de fichier:

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

Pour monter un disque de machine (y compris les instantanés):

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

Ce n’est pas ce que vous avez demandé, mais s’il s’agit juste de obtenir des fichiers du vdi, et vous voulez ne solution très rapide:

  1. Exécuter un serveur ssh sur votre hôte (apt-get install openssh-server && service ssh restart)
  2. Utilisez VirtualBox pour créer une machine virtuelle à partir du fichier vdi existant, puis démarrez cette machine virtuelle. (Je viens de conserver la carte réseau par défaut lors de la construction de la machine virtuelle.)
  3. Au sein de la machine virtuelle, envoyez le sftp à votre hôte. (sftp hostuser@hostip)
  4. Dans la session sftp, put autant de fichiers dans l'hôte que vous avez besoin.
3
JellicleCat

Vojtech Trefny mentionné ci-dessus,

1) convertissez d'abord votre VDI -> IMG

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

2) Puis montez l'IMG

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

3) Cependant, comme j'ai eu ce message d'erreur:

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

et dmesg dit:

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

vous devez vérifier la structure de partition du .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) Comme vous pouvez le constater, la partition principale commence par les octets 16775168. Cependant, notez que la taille du secteur est de 512 octets, vous devez donc multiplier les résultats 16775168 x 512 = 8588886016 et décaler le montage de la manière suivante:

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

5) En fait, cela ne fonctionnait pas dans le cas où le système de fichiers était sale après le redimensionnement. Dans ce cas, j'ai également fait ceci:

dd if=ubuntu.img of=ubuntu.disk bs=512 skip=16775168 count=12092416
e2fsck ubuntu.disk
mount ubuntu.disk /mnt
2
PHZ.fi-Pharazon