Montare un'immagine del drive VirtualBox (vdi)?

80

È possibile montare un'immagine del drive VirtualBox (.vdi) in modo che i contenuti possano essere visualizzati in Nautilus, ecc.?

Ho un .vdi di Windows 2000 che non si avvia ("dispositivo di avvio inaccessibile") dopo l'aggiornamento da VirtualBox 2.x a 3.1.6. Credo che i dettagli del drive IDE siano cambiati e che tutto quello che devo fare è accedere all'immagine del drive interno e modificare il boot.ini di Windows per puntare alla nuova posizione.

    
posta matt wilkie 30.12.2010 - 15:44

7 risposte

50

Puoi convertire in un'immagine standard e quindi montarla.

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

Poi

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

Dovrai conoscere il tipo di file system, ext3 in questo caso. Dopo che è montato, entra e modifica via con l'editor di tua scelta. Non confondere i file all'interno della posizione /mnt con l'host in esecuzione, o sarà male.

Per controllare i dettagli sul tuo file VDI, esegui: VBoxManage showhdinfo ubuntu.vdi .

Fonte: [SOLVED] Apri .vdi con gestione archivi? - ubuntuforums.org

    
risposta data Vojtech Trefny 30.12.2010 - 15:47
77

Usa qemu-nbd , il processo è spiegato su serverfault e in questo blog .

Fondamentalmente, dovrai installare qemu se necessario:

sudo apt-get install qemu

Quindi dovrai caricare il modulo dispositivo di blocco di rete :

sudo rmmod nbd
sudo modprobe nbd max_part=16

Collega l'immagine .vdi a uno degli nbd che hai appena creato:

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

Ora otterrai un dispositivo a blocchi / dev / nbd0, insieme a diversi nodi di dispositivo di partizione / dev / nbd0p *.

sudo mount /dev/nbd0p1 /mnt

Una volta terminato, smonta tutto e disconnetti il dispositivo:

sudo qemu-nbd -d /dev/nbd0
    
risposta data Maxime R. 24.06.2011 - 03:48
35

Sembra che vdfuse sia lo strumento che stai cercando. È nei repository di Ubuntu. Se vuoi compilare te stesso (fonte 2010) puoi farlo anche .

Tuttavia per la maggior parte di noi si riduce a un semplice:

sudo apt-get install virtualbox-fuse

Sembra che ora supporti anche il dinamico vdi.

E per montare il file .vdi in /mnt dir usa il comando:

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

L'intero disco verrà montato con le partizioni Partition1 , Partition2 il formato di denominazione. Quindi quei file possono essere montati su loop. Ad esempio,

sudo mount -o loop /mnt/Parition1 /mountpoint
    
risposta data stwissel 07.05.2012 - 08:02
14

Imposta il disco come master secondario per un altro sistema operativo virtuale, quindi avvia il sistema operativo (virtuale) e puoi montarlo.

Passaggio 1: Supponendo che tu abbia un sistema operativo virtuale (ad esempio Ubuntu 16.04) già installato in Virtual box, aggiungi un nuovo spazio di archiviazione dalle impostazioni di quel sistema operativo virtuale.

Passaggio 2: sfoglia il file Vdi a cui desideri accedere e selezionalo.

Passaggio 3: accesso al sistema operativo virtuale.

Passaggio 4: Il disco virtuale sarà probabilmente disponibile all'interno del sistema operativo. In caso contrario, seguire il passaggio 5

Passaggio 5: all'interno del sistema operativo virtuale, usa Gparted e controlla i dischi. e assicurarsi che il disco sia di tipo accessibile dal sistema operativo virtuale. In caso contrario, potresti dover modificare il disco, ma poi perderai i contenuti esistenti.

    
risposta data josef 30.12.2010 - 16:13
6

Non ho provato me stesso ma sembra che ci sia un modulo fusibile per montarli ( vfduse ), controlla la seguente pagina:

Si noti che usarlo per l'accesso in scrittura è rischioso.

Utilizzo:

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

Per montare un'immagine direttamente usando il suo nome file:

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

Per montare un disco macchina (comprese le istantanee):

$ ./vdautomount-<version> -p /path/to/vdfuse WinXP /mnt/vdi
$ mount -o loop /mnt/vdi/Partition1 /mnt/WindowsXP
    
risposta data João Pinto 30.12.2010 - 16:08
3

Non è quello che hai richiesto, ma se è solo questione di rimuovere i file dal vdi e vuoi una soluzione molto rapida :

  1. Esegui un server ssh sul tuo host ( apt-get install openssh-server && service ssh restart )
  2. Utilizzare VirtualBox per creare una macchina virtuale dal file vdi esistente, quindi avviare la macchina virtuale. (Ho appena mantenuto la scheda di rete predefinita (NAT) durante la creazione della VM.)
  3. All'interno della macchina virtuale, sftp al tuo host. (% Co_de%)
  4. Nella sessione sftp, sftp [email protected] di tutti i file sull'host di cui hai bisogno.
risposta data JellicleCat 20.02.2015 - 18:23
-1

Come Vojtech Trefny ha menzionato sopra,

1) converti prima il tuo VDI - & gt; IMG

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

2) Quindi montare l'IMG

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

3) Tuttavia, poiché ho ricevuto questo messaggio di errore:

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

e dmesg ha detto:

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

devi controllare la struttura delle partizioni di .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) Come potete vedere, la partizione principale inizia a byte 16775168. Tuttavia, si noti che la dimensione del settore è 512 byte, quindi è necessario moltiplicare i risultati 16775168 x 512 = 8588886016, quindi è necessario spostare l'offset come in questo modo:

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

5) In realtà questo non ha funzionato per me nel caso in cui il filesystem fosse sporco dopo il ridimensionamento. In questo caso ho fatto anche questo:

dd if=ubuntu.img of=ubuntu.disk bs=512 skip=16775168 count=12092416
e2fsck ubuntu.disk
mount ubuntu.disk /mnt
    
risposta data PHZ.fi-Pharazon 18.06.2017 - 14:51

Leggi altre domande sui tag