Virtualizzare con VMware una partizione Windows esistente

Dom, 11/11/2007 - 21:57

Virtualizzare con VMware una partizione Windows esistente

Inviato da pernix 3 commenti

Ecco una guida per virtualizzare una partizione Windows (Xp o Vista) pre-esistente sul vostro pc utilizzando VMware. Tutti i passaggi saranno spiegati sulla configurazione del mio portatile e sui pacchetti disponibili al momento della scrittura di questa guida, di conseguenza andranno modificate le informazioni adattandole al proprio pc.

E' richiesta una minima conoscenza delle basi di linux e della sua shell, inoltre, essendoci sempre il rischio di una perdita di dati, non solo è raccomandato un back-up della partizione windows, ma si deve anche considerare che questa non è una guida adatta a chi si avvicina per la prima volta a linux.
Cosa ci serve?
VMware Player (versione rpm o tar.gz, 32 o 64 bit) scaricabile gratuitamente da www.vmware.com previa registrazione.
VMTools scaricabile da qui

Si inizia!

1. Installare VMware Player

In una shell, come superuser, digitiamo: rpm -Uvh Vmware-player-2.0.2-59824.x86_64.rpm
Dopo di che, configuriamo VMWare Player digitando /usr/bin/vmware-config.pl e seguendo le istruzioni a schermo.

Adesso inizia la parte complessa, e potenzialmente dannosa, della procedura: attenzione a seguire tutti i passaggi.
2. Creare il disco virtuale per VMware Player

2.1. Preparazione del file vmdk per VMware
Per prima cosa creiamo una cartella in cui saranno salvati tutti i file relativi alla macchina virtuale (p.e. ~/vmware). Copiamo il codice sottostante in un file di testo che chiameremo windows.vmdk:

# Disk DescriptorFile
version=1
CID=e00faa6b
parentCID=ffffffff
createType="fullDevice"

# Extent description
RW 63 FLAT "windows.mbr" 0
RW 234441585 FLAT "/dev/sda" 63

# The Disk Data Base
#DDB

ddb.toolsVersion = "7240"
ddb.adapterType = "scsi"
ddb.virtualHWVersion = "4"
ddb.geometry.sectors = "63"
ddb.geometry.heads = "255"
ddb.geometry.cylinders = "14593"

Tutte le informazioni scritte in grassetto vanno modificate in base al proprio sistema, ma per fortuna ci viene in aiuto parted.

2.2. Utilizzare il tool parted
Come detto precedentemente, ci baseremo sulla configurazione del mio portatile. I seguenti comandi vanno dati tutti da shell come superuser:

# parted /dev/sda
GNU Parted 1.8.7
Uso /dev/sda
Benvenuto su GNU Parted! Digitare "help" per avere la lista dei comandi.
(parted) unit s
(parted) print
Model: ATA ST9120821AS (scsi)
Disco /dev/sda: 234441648s
Dimensione del settore (logica/fisica): 512B/512B
Tabella delle partizioni: msdos

Numero Inizio Fine Dimensione Tipo File System Flag
1 63s 30716279s 30716217s primary fat32 , , , , , , lba, , , type=0c, ,
2 30716280s 32820794s 2104515s primary , , , , , , , , , type=82, ,
3 32820795s 64292129s 31471335s primary reiserfs avvio, , , , , , , , , type=83, ,
4 64292130s 234436544s 170144415s primary reiserfs , , , , , , , , , type=83, ,

(parted) unit cyl
(parted) print
Model: ATA ST9120821AS (scsi)
Disco /dev/sda: 14593cyl
Dimensione del settore (logica/fisica): 512B/512B
Geometria del BIOS cilindri, testine, settori: 14593,255,63. Ogni cilindro è 8225kB.
Tabella delle partizioni: msdos

Numero Inizio Fine Dimensione Tipo File System Flag
1 0cyl 1911cyl 1911cyl primary fat32 , , , , , , lba, , , type=0c, ,
2 1912cyl 2042cyl 131cyl primary , , , , , , , , , type=82, ,
3 2043cyl 4001cyl 1959cyl primary reiserfs avvio, , , , , , , , , type=83, ,
4 4002cyl 14592cyl 10591cyl primary reiserfs , , , , , , , , , type=83, ,

(parted) set 1 boot on
(parted) print
Model: ATA ST9120821AS (scsi)
Disco /dev/sda: 14593cyl
Dimensione del settore (logica/fisica): 512B/512B
Geometria del BIOS cilindri, testine, settori: 14593,255,63. Ogni cilindro è 8225kB.
Tabella delle partizioni: msdos

Numero Inizio Fine Dimensione Tipo File System Flag
1 0cyl 1911cyl 1911cyl primary fat32 avvio, , , , , , lba, , , type=0c, ,
2 1912cyl 2042cyl 131cyl primary , , , , , , , , , type=82, ,
3 2043cyl 4001cyl 1959cyl primary reiserfs , , , , , , , , , type=83, ,
4 4002cyl 14592cyl 10591cyl primary reiserfs , , , , , , , , , type=83, ,

(parted) quit

Cosa abbiamo fatto? E' presto detto: abbiamo ottenuto dal sistema tutte le informazioni di cui avevamo bisogno riguardo alla struttura fisica del nostro HDD. Copiamo quindi i dati indicati in grassetto nell'output di parted all'interno del file windows.vmdk con una accortezza: come vedete nel file compare il numero 234441585, mentre da parted otteniamo 234441648, perché? Ciò che vogliamo fare è avviare windows da VMWare in automatico, saltando GRUB, ma la partizione /dev/sda1 inizia dopo 63 settori, come si legge facilmente dal primo output di parted. Quindi il numero da scrivere nel file windows.vmdk sarà: 234441648 - 63 = 234441585.
Perfetto. Per avviare windows, però, la partizione deve essere avviabile, e questo è stato fatto con l'ultimo comando in parted. Infatti il flag avvio è passato da /dev/sda3 a /dev/sda1.
Per avviare la virtual machine abbiamo bisogno di un MBR, quindi digitiamo:

dd if=/dev/sda of=windows.mbr bs=512 count=63
63+0 records in
63+0 records out
32256 bytes (32 kB) copied, 0,081178 s, 397 kB/s

Il file windows.mbr conterrà l'MBR per l'avvio di windows.
Adesso, però, dobbiamo rimettere a posto l'avvio del pc, altrimenti non partirà più GRUB! Rientriamo in parted:

# parted /dev/sda
GNU Parted 1.8.7
Uso /dev/sda
Benvenuto su GNU Parted! Digitare "help" per avere la lista dei comandi.
(parted) set 3 boot on
(parted) quit

2.3. Preparazione del file di configurazione della VM
Copiamo il seguente codice in un file di configurazione che chiameremo windows.vmx:

config.version = "8"
virtualHW.version = "4"

uuid.location = "56 4d c6 4d 9a 97 ff 78-7c 2e 0b fa f9 6f 76 95"
uuid.bios = "56 4d c6 4d 9a 97 ff 78-7c 2e 0b fa f9 6f 76 95"

uuid.action = "create"
checkpoint.vmState = ""

displayName = "Windows XP Professional"
annotation = ""
guestinfo.vmware.product.long = ""
guestinfo.vmware.product.url = ""

guestOS = "winxppro"
numvcpus = "1"
memsize = "1024"
paevm = "TRUE"
sched.mem.pshare.enable = "TRUE"
MemAllowAutoScaleDown = "FALSE"

MemTrimRate = "-1"

nvram = "windows.nvram"

mks.enable3d = "FALSE"
vmmouse.present = "FALSE"
vmmouse.fileName = "auto detect"

tools.syncTime = "TRUE"
tools.remindinstall = "FALSE"

isolation.tools.hgfs.disable = "FALSE"
isolation.tools.dnd.disable = "FALSE"
isolation.tools.copy.enable = "TRUE"
isolation.tools.paste.enabled = "TRUE"
gui.restricted = "FALSE"

ethernet0.present = "FALSE"
ethernet0.connectionType = "nat"
ethernet0.addressType = "generated"
ethernet0.generatedAddress = "00:0c:29:6f:76:95"
ethernet0.generatedAddressOffset = "0"

usb.present = "TRUE"
usb.generic.autoconnect = "TRUE"

sound.present = "TRUE"
sound.virtualdev = "sb16"

ide0:0.present = "TRUE"
ide0:0.fileName = "windows.vmdk"
ide0:0.mode = "independent-persistent"
ide0:0.deviceType = "rawDisk"
ide0:0.redo = ""
ide0:0.writeThrough = "FALSE"
ide0:0.startConnected = "TRUE"

ide1:0.present = "TRUE"
ide1:0.fileName = "/dev/cdrom"
ide1:0.deviceType = "atapi-cdrom"
ide1:0.writeThrough = "FALSE"
ide1:0.startConnected = "TRUE"

floppy0.present = "FALSE"
floppy0.fileName = "/dev/fd0"
floppy0.startConnected = "TRUE"

serial0.present = "FALSE"
serial1.present = "FALSE"
parallel0.present = "FALSE"

Ovviamente, modificheremo le impostazioni indicate in grassetto (ma anche le altre) in funzione delle nostre necessità (p.e. io non ho attivato né la rete, né il floppy).

Ottimo! Il lato linux della macchina virtuale è a posto, ma non possiamo ancora avviarla. Non ci resta che sistemare il lato windows.

3. Preparazione di windows

3.1. Adattamento di Windows Vista (da saltare nel caso si utilizzi Xp)
1. Avviare il pc e selezionare Windows
2. Inserire un cd di Windows XP
3. Estrarre con WinRar (o simili) i file Atapi.sys, Intelide.sys, Pciide.sys, e Pciidex.sys dal file D:\I386\Driver.cab e copiarli in C:\Windows\System32\Drivers (ipotizzando che le unità HDD e CD siano C:\ e D:\)
4. Scaricare Mergeide.reg avviarlo con un doppio click e cliccare su Sì

3.2. Configurazione di Windows
C'è un problema: l'hardware utilizzato da VMware è diverso da quello fisico del nostro pc, quindi bisogna fare in modo che windows "lo sappia".
Riavviamo il pc ed entriamo in windows. Apriamo le proprietà del sistema (Click destro su Risorse del Computer -> Proprietà).
Clicchiamo su Profili Hardware e copiamo il profilo di default cliccando su Copia e chiamiamo il nuovo profilo VMware

4. Avvio della macchina virtuale

Riavviamo il pc ed entriamo in openSUSE.
1. Scompattiamo il file rar in cui sono compressi i VMTools in una cartella della partizione windows (nel mio caso /mnt/windows/vmtools in quanto /mnt/windows è il C:\ di windows).
2. Avviamo la macchina virtuale da root, poiché bisogna trattare i dati in una partizione in cui l'utente non ha diritti di scrittura in modalità raw.
3. Clicchiamo su Open an Existing Virtual Machine.
4. Selezioniamo il file windows.vmx precedentemente creato
5. Selezioniamo la Virtual Machine e avviamola. Se tutto è andato a buon fine dovremmo avere il nostro windows virtualizzato.
6. Selezioniamo il profilo VMware (che dovremo sempre avviare quando parte la VM, in caso si avvii windows in modo classico, si avvierà il profilo di default).
7. Entriamo nella cartella in cui sono presenti i file di installazione di VMTools e avviamo l'installazione
8. Usciamo e riavviamo la macchina virtuale per applicare le modifiche.

E' tutto. Non ci resta che usare la nostra VM.





Commenti

Ritratto di Alfio
#1

Inviato da Alfio il Dom, 11/11/2007 - 22:32.

Vantaggi e svantaggi con questo sistema.

Tenete a mente che le modifiche apportate nella macchina virtuale saranno riversate in quella fisica di windows.
Il vantaggio che potete usare lo stesso spazio nell'hard disk senza sfruttarne uno appositamente per la macchina virtuale.
Se non avete problemi di spazio suggerisco non intaccare windows e creare uno spazio virtuale tramite vmware in Linux.
Ben vengano sempre le guide.
Ciao
Big Grin Big Grin



Ritratto di AL9000
#2

Inviato da AL9000 il Lun, 12/11/2007 - 09:06.

bella guida, ma....

un bell'8 per la guida!

solo che mi chiedo:

non sarebbe più semplice far creare la macchina virtuale a vmware workstation e poi, una volta finito il periodo di valutazione, continuare ad usarla con vmplayer?

Ho sempre fatto così per virtualizzare la partizione esistente.

Tra l'altro credo, ma posso sbagliare, che la cosa sia possibile anche con vmware server che è free(non ho mai provato, come ho detto ho sempre fatto con vmware workstation)

Riguardo a quello che dice Alfio è assolutamente vero: bisogna stare molto attenti a ciò che si fà.

Una cosa da NON FARE ASSOLUTAMENTE è copiare o cancellare files nella cartella /windows da linux(cioè per mezzo di ntfs-3g, che permette la scrittura su windows in ntfs) mentre il sistema virtuale è acceso...spesso ciò porta ad una inconsistenza del sistema operativo, penso per difficoltà di sincro.

Insomma: bisogna limitarsi ad un utilizzo "normale" di windows, senza operare troppi cambiamenti.

Comunque la guida è utile, visto che prima per suse non c'era. Io avevo seguito una guida pensata per ubuntu, adattandola al mio sistema.

Chi è investito di un'autorità si trasformerà inevitabilmente, secondo una legge sociale immutabile, in un oppressore ed in uno sfruttatore della società. (M.A. Bakunin)



Ritratto di lemmas
#3

Inviato da lemmas il Mar, 18/03/2008 - 10:36.

Re: bella guida, ma....

Oppure usare il tool per creare on-line le immagini per vmware player: http://www.easyvmx.com/
Fantastica guida!