# Restore disco virtualizzato su partizione

## devi

Nelle mie tante sperimentazione sull'utilizzo di gentoo mi era venuta un idea, magari un po' bizzarra, ma secondo me fattibile: verificare se, ripristinando un disco .vdi di Virtualbox su una partizione ntfs, Windows si avvia regolarmente.

Allora

1. con gparted preparo la partizione

2. ripristino vdi con dd: 

```
dd if=/home/devi/.Virtualbox/HardDisks/win7x86.vdi of=/dev/hda4
```

3. modifica di grub.conf

Il mio problema è questo: nonostante tutte le operazioni sia andate a buon fine, dopo il ripristino con dd, sia grub che gparted non mi riconoscono più la partizione mentre fisk la riconosce: 

```
localhost devi # fdisk -l

Disk /dev/hda: 80.0 GB, 80026361856 bytes

255 heads, 63 sectors/track, 9729 cylinders

Units = cylinders of 16065 * 512 = 8225280 bytes

Sector size (logical/physical): 512 bytes / 512 bytes

I/O size (minimum/optimal): 512 bytes / 512 bytes

Disk identifier: 0x00000001

   Device Boot      Start         End      Blocks   Id  System

/dev/hda1               1         132     1060258+  83  Linux

/dev/hda2             133         655     4200997+  82  Linux swap / Solaris

/dev/hda3             656        5877    41945715   83  Linux

/dev/hda4            5878        9729    30941190    7  HPFS/NTFS

```

Dato che secondo me sulla partizione i dati ci sono, come faccio a convertire in ntfs senza formattare, facendola riconoscere da grub?

----------

## devi

Mi sono accorto che nel kernel non avevo attivato il flag della scrittura ntfs, mò sto ricompilando e poi rifaccio i passaggi.

----------

## cloc3

 *devi wrote:*   

> 
> 
> 2. ripristino vdi con dd: 
> 
> ```
> ...

 

questo comando mi sembra improbabile.

un disco in formato vdi non può essere tasferito su una partizione a quel modo.

a parte il fatto che il formato vdi può essere riconosciuto solo da Virtualbox, non certo da grub, stai addirittura provando a fare una cosa del tipo:

dd if=/dev/sda of=/dev/sdb1, che non ha proprio senso.

ecco un modo efficace per accedere alle partizioni di un disco vdi senza avviare virtualbox.

io lo uso correntemente e lo trovo comodo.

bisogna solo fare attenzione a non accedere in scrittura contemporaneamente con il software vdfuse e Virtualbox, altrimenti è facile intuire i pasticci che si possono ottenere.

----------

## xdarma

 *devi wrote:*   

> 2. ripristino vdi con dd: 
> 
> ```
> dd if=/home/devi/.Virtualbox/HardDisks/win7x86.vdi of=/dev/hda4
> ```
> ...

 

Secondo me questo è il passaggio più importante e non credo possa funzionare come hai fatto tu.

Non conosco Virtualbox ma so che Qemu mette a disposizione dei tool di conversione da un formato ad un altro.

A istinto proverei prima a trasformare l'immagine .vdi in formato raw e poi a spalmarla su disco fisso.

----------

## cloc3

una terza cosa che puoi fare, è accedere in emulazione con una linuxBox, di cui il disco ntfs è una periferica e trasferire i dati via ssh.

```

rootDirRemota ~ # ssh linuxBox "dd if=/dev/sdb4" >/dev/hda4"

```

nell'esempio /dev/sdb4 è la partizione contenuta nel disco vdi, mentre /dev/hda4 è la nuova partizione.

fai attenzione, però alle dimensioni delle due partizioni. se non sono uguali, e soprattutto se quella di arrivo è più piccola di quella di partenza, potresti avere delle noie.

----------

## devi

 *xdarma wrote:*   

>  *devi wrote:*   2. ripristino vdi con dd: 
> 
> ```
> dd if=/home/devi/.Virtualbox/HardDisks/win7x86.vdi of=/dev/hda4
> ```
> ...

 

Ho convertito in raw tramite questo comando: 

```
VBoxManage internalcommands  converttoraw win7x86.vdi win7x86.raw
```

Come faccio ora a spalmarla sulla partizione?

----------

## xdarma

 *devi wrote:*   

> Ho convertito in raw tramite questo comando: 
> 
> ```
> VBoxManage internalcommands  converttoraw win7x86.vdi win7x86.raw
> ```
> ...

 

dd?

----------

## devi

@xdarma: ora provo e ti faccio sapere

@cloc3: anch'io avevo letto qualcosa di simile girando su google, in cui qualcuno era riuscito eseguendo comandi simile al tuo da ssh, ma sinceramente non ho capito come fare. Quel comando dev'essere eeseguito da un livecd?

----------

## cloc3

 *devi wrote:*   

> Quel comando dev'essere eeseguito da un livecd?

 

devi avere due sistemi operativi che dialogano attraverso ssh.

nella mia ipotesi uno (quello remoto) è un sistema in emulazione, che vede la partizione ntfs come periferica locale (la chiamo /devsdb4).

l'altro è il sistema fisico nel quale vuoi eseguire la copia.

fai delle prove con dei file qualunque.

ti logghi sul sistema fisico e fai una prova con dei semplici file di testo:

```

sistemaFisico ~ #ssh boxIn Emulazione "dd if=pippo.txt"

```

in questo modo leggi il file pippo.txt del sistema emulato e lo leggi sulla console.

e aggiungi la pipe > di redirezione, invece, puoi traferirrlo verso un file arbitrario (per esempio verso la /dev/hda4, che è il posto dove lo vuoi copiare).

man bash per i dettagli.

----------

## cloc3

oltre ad essere un software da utilizzare con buonsenso, vdfuse è anche un po' difficilotto da compilare, perché le istruzioni contenute sul sito richiedono un po' di interpretazione.

addirittura, il link alle librerie in sviluppo è inefficace.

allora ho pensato di scrivere un ebuild di fortuna e di metterlo qui.

utilizza i sorgenti di virtualbox-3.2.10.

----------

## devi

@cloc3: farò delle prove e ti farò sapere. Ma tu vdfuse l'hai compilato con il tuo ebuild?

Sul forum di Virtualbox ho trovato anche questa discussione: http://forums.virtualbox.org/viewtopic.php?p=59275 me la leggo (anche se è un po' lunghetta) e cerco di adattarla a gentoo e poi vi faccio sapere.

Ho trovato anche l'howto vero e proprio: http://forums.virtualbox.org/viewtopic.php?f=26&t=33355

Farò delle prove e vi informerò degli esiti.

----------

## cloc3

 *devi wrote:*   

> @cloc3: farò delle prove e ti farò sapere. Ma tu vdfuse l'hai compilato con il tuo ebuild?
> 
> 

 

sì. lo ho sperimentato in un'architettura a 64Bit con la versione di Virtualbox che ho scritto.

non sono sicuro di cosa accada in caso di differenze tra la versione di Virtualbox in locale  e il programma vdfuse utilizzato.

in quel caso, forse, bisognerebbe intervenire a mano sull'ebuild.

d'altra parte, trattandosi di un software initrinsecamente instabile (è dannoso se usato per accessi simultanei con un'istanza di virtualbox), è bene che chi usa l'ebuild se lo legga prima e pensi a cosa sta facendo.

 *devi wrote:*   

> 
> 
> Ho trovato anche l'howto vero e proprio: http://forums.virtualbox.org/viewtopic.php?f=26&t=33355
> 
> 

 

esatto: è lo stesso che ti avevo passato sopra e che è indicato esplicitamente nel topic in risorse italiane.

fai sapere  :Smile: 

----------

