Windows XP su QEMU

Procedimento

Si supponga di avere Windows XP installato nella prima partizione

sudo fdisk -l /dev/sda

Ad esempio potreste vedere qualcosa del genere:

Disco /dev/sda: 250.1 GB, 250059350016 byte
255 testine, 63 settori/tracce, 30401 cilindri
Unità = cilindri di 16065 * 512 = 8225280 byte
Sector size (logical/physical): 512 bytes / 512 bytes
I/O size (minimum/optimal): 512 bytes / 512 bytes
Identificativo disco: 0x0000000

Dispositivo Boot      Start         End      Blocks   Id  System
/dev/sda1   *           1        1950    15663343+   7  HPFS/NTFS
/dev/sda2           12749       13271     4200997+  82  Linux swap / Solaris
/dev/sda4           13272       30401   137596725    5  Esteso
/dev/sda5           13272       15217    15631213+  83  Linux
/dev/sda6           15218       30401   121965448+  83  Linux

Si voglia creare un disco virtuale per QEMU che contenga solo Windows XP

dd if=/dev/zero bs=512 count=63 >winxp.qemu
dd if=/dev/sda1 bs=1M >>winxp.qemu

Questa immagine così creata non avrà la dimensione dell'intero disco reale ma solo quella della prima partizione più 32kb circa
Inoltre tale immagine è inutilizzabile finché non riceve un partizionamento coerente con l'originale, ad esempio, in questo modo:

fdisk -H  255 -S 63 -C 1950 winxp.qemu <<EOF
n
p
1
1
1950
t
7
a
1
w
q
EOF

Per creare correttamente la partizione occorre segnalare al comando fdisk:

  • il numero di testine (-H);
  • il numero di settori (-S);
  • il numero di cilindri (-C).

Ovviamente i valori qui esemplificati sono coerenti con il caso preso in considerazione mentre voi dovrete desumere tali valori dalla geometria del disco orginale.

Infine per lanciare il vostro nuovo disco virtuale potrete, ad esempio, eseguire il seguente:

qemu -m 640  -hda winxp.qemu -enable-kvm

Alternative

Se la partizione di Windows XP risulta molto grande potete prima di iniziare questa procedura ridurla mediante gparted in maniera da avere un disco virtuale più contenuto come spazio. Ovviamente il ridimensionamento della partizione è un processo che può causare la perdita di dati specialmente in caso di interruzione di corrente perciò sarebbe conveniente farne prima una copia 1:1 su un supporto removibile sufficientemente grande.

Copia e ridimensionamento virtuale (sperimentale)

Se invece non abbastanza avete spazio nemmeno su supporti removibili potete utilizzare qemu e un'immagine live di una distribuzione che contenga qparted (ad esempio la ISO9660 di installazione di Ubuntu oppure slax+gparted oppure tinycore+gparted+ntfprogs) e procedere come segue:

dd if=/dev/zero bs=1M count=8192 of=newXp.qemu
sudo qemu -m 640 -boot d -cdrom /home/roberto/linux-live.iso -drive file=/dev/sda,snapshot=on,cache=sda-cache.qemu -hdb winxp.qemu -enable-kvm

Quando lanciate gparted potrete restringere la partizione di Windows XP senza applicare realmente la modifica perché essa sarà scritta nel file sda-cache.qemu. Quindi potrete usare gparted per copiare questa nuova partizione ridimensionata sul disco di destinazione, cioè il file winxp.qemu.

NON SI GARANTISCE IL RISULTATO

Questo perché esiste la possibilità di applicare le scritture dalla cache al disco originale qualora si prema la combinazione di tasti CTRL+ALT+s oltre a possibili errori e/o refusi nel testo e/o modifiche nelle opzioni/funzionalità di QEMU.

Ulteriore

Quest'ultimo sistema può essere utilizzato anche senza ridimensionare la partizione per fare una copia del vostro Windows XP su un disco virtuale. Addirittura se usate un distribuzione live dotata di QEMU (ovvero su cui QEMU sia installabile da rete anche in live) potete partire direttamente da CDROM e fare tutta l'operazione utilizzando come disco scrivibile un disco USB esterno.

Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-Share Alike 2.5 License.