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.





