Monter une image de disque VirtualBox (vdi)?

75

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

J'ai un Windows 2000 .vdi qui ne démarrera pas ("périphérique de démarrage inaccessible") après la mise à niveau de VirtualBox 2.x vers 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 d'éditer Windows boot.ini pour pointer vers le nouvel emplacement.     

posée matt wilkie 30.12.2010 - 15:44
la source

7 réponses

47

Vous pouvez convertir en image standard puis la monter.

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

Alors

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

Vous devrez CONNAITRE le type de système de fichiers, ext3 dans ce cas. Une fois monté, entrez et modifiez-le avec l'éditeur de votre choix. Ne confondez pas les fichiers dans l'emplacement /mnt avec l'hôte en cours d'exécution, ou ce sera mauvais.

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

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

    
réponse donnée Vojtech Trefny 30.12.2010 - 15:47
la source
73

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

En gros, vous devrez installer qemu si nécessaire:

sudo apt-get install qemu

Ensuite, vous devrez charger le module périphérique de bloc réseau :

sudo rmmod nbd
sudo modprobe nbd max_part=16

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

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

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

sudo mount /dev/nbd0p1 /mnt

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

sudo qemu-nbd -d /dev/nbd0
    
réponse donnée Maxime R. 24.06.2011 - 03:48
la source
35

Il semble que vdfuse soit l'outil que vous recherchez. C'est dans les dépôts Ubuntu. Si vous souhaitez vous compiler vous-même (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 également le vdi dynamique.

Et pour monter le fichier .vdi dans /mnt dir, utilisez la commande:

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

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

sudo mount -o loop /mnt/Parition1 /mountpoint
    
réponse donnée stwissel 07.05.2012 - 08:02
la source
14

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

Etape 1: En supposant que vous ayez un os virtuel (disons Ubuntu 16.04) déjà installé dans la boîte virtuelle, ajoutez un nouveau stockage à partir des paramètres de cet os virtuel.

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

Étape 3: connexion au système d'exploitation virtuel.

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

Etape 5: Dans le système d’exploitation virtuel, utilisez Gparted et vérifiez les disques. et assurez-vous que le disque est de type accessible par le système d'exploitation virtuel. Si ce n'est pas le cas, vous devrez peut-être modifier le disque, mais vous perdrez alors le contenu existant.

    
réponse donnée josef 30.12.2010 - 16:13
la source
6

Je ne me suis pas testé, mais il semble y avoir un module de fusion pour les monter ( vfduse ), consultez la page suivante:

Veuillez noter que l’utilisation de cet accès en écriture est risquée.

Utilisation:

$ ./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 en utilisant 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 des instantanés):

$ ./vdautomount-<version> -p /path/to/vdfuse WinXP /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP
    
réponse donnée João Pinto 30.12.2010 - 16:08
la source
3

Ce n’est pas ce que vous avez demandé, mais si vous voulez simplement récupérer des fichiers du vdi et que vous voulez une 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. Dans la machine virtuelle, transférez-la à votre hôte. ( sftp [email protected] )
  4. Dans la session sftp, put autant de fichiers que vous avez besoin sur l'hôte.
réponse donnée JellicleCat 20.02.2015 - 18:23
la source
-1

Comme Vojtech Trefny mentionné ci-dessus,

1) convertissez d’abord votre VDI - & gt; IMG

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

2) Montez ensuite l’IMG

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

3) Cependant, comme j'ai reçu 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 a dit:

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

vous devez vérifier la structure de partition du fichier .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 voir, la partition principale commence aux octets 16775168. Cependant, notez que la taille du secteur est de 512 octets, vous devez donc multiplier les résultats 16775168 x 512 = 8588886016 afin de compenser le montage ceci:

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

5) En fait, cela ne fonctionnait pas pour moi si 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
    
réponse donnée PHZ.fi-Pharazon 18.06.2017 - 14:51
la source

Lire d'autres questions sur les étiquettes