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.
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
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
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
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.
É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.
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
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:
apt-get install openssh-server && service ssh restart
)sftp hostuser@hostip
)put
autant de fichiers dans l'hôte que vous avez besoin.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