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 pense 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 le boot.ini Windows pour qu’il pointe vers le nouvel emplacement.

    Vous pouvez convertir en image standard et ensuite le monter.

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

    alors

     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

    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 de périphérique de bloc réseau :

     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étwigz le périphérique:

     sudo qemu-nbd -d /dev/nbd0 

    Il semble que vdfuse soit l’outil que vous recherchez. C’est dans les repositorys Ubuntu. Si vous voulez vous comstackr (source 2010), vous pouvez aussi le faire .

    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 dynamic é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 , format de nommage Partition2 . Ensuite, ces fichiers peuvent être montés en boucle. Par exemple,

     sudo mount -o loop /mnt/Parition1 /mountpoint 

    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 parameters de ce système virtuel. entrez la description de l'image ici

    É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

    Étape 5: Dans l’OS 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.

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

    • HOWTO: Monter une image disque compatible VBox sur l’hôte

    Veuillez noter que l’utiliser pour un access en écriture est risqué.


    Usage:

     $ ./vdfuse-v -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 -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- -p /path/to/vdfuse WinXP /mnt/vdi $ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP 

    Ce n’est pas ce que vous avez demandé, mais s’il s’agit simplement d’ obtenir des fichiers du vdi et que vous souhaitez une solution très rapide :

    1. Exécutez 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 que nécessaire sur l’hôte.

    Comme 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 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 constater, la partition principale commence par les octets 16775168. Toutefois, notez que la taille du secteur est de 512 octets. Vous devez donc multiplier les résultats par 16775168 x 512 = 8588886016. Vous devez donc décaler le assembly 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