Piccolo how-to su come virtualizzare WinXP con kvm. Perchè farlo?Per perdere un po' di tempo!E anche perchè trovo comodo poter ripristinare windows in un attimo, semplicemente copiando un'immagine di backup scrupolosamente salvata!
Cos'è kvm?È un sistema di virtualizzazione basato sul Kernel Linux, richiede le estensioni della cpu per la virtualizzazione (AMD-V o Intel VT), del relativo modulo del Kernel (kvm-amd o kvm-intel) e di una versione modificata di QEMU. Perchè kvm? Perchè è software libero!
Primo passo: installare Debian!Per comodità ho usato la netinstall della stable (Lenny quando scrivo). Ho eseguito una installazione base, selezionando solo “sistema base” :) al tasksel e installando successivamente volta per volta quello che mi serviva. Non ho partizionato l'hd (sul pc in questione ho poco spazio, meglio non sprecarlo), ho solo creato un area di swap da 1Gb. Aggiunti i soliti utenti (root etc), insomma le solite cose!
Per esigenze di compilazione dei driver per la scheda wireless (rtl8185), ho dovuto installare linux 2.6.30 (sid). Per fare questo ho configurato i repo di Debian per fare il pinning.
In /etc/apt/sources.list ho aggiunto i repo per testing e sid:
... deb http://ftp.debian.org/debian/ testing main deb http://ftp.debian.org/debian/ sid main
In /etc/apt/apt.conf
APT::Default-Release "stable"; Apt::Get::Purge; APT::Clean-Installed; APT::Get::Fix-Broken; APT::Get::Fix-Missing; APT::Get::Show-Upgraded "true";
In /etc/apt/preferences
Package: * Pin: release a=stable Pin-Priority: 900 Package: * Pin: release a=testing Pin-Priority: 850 Package: * Pin: release a=unstable Pin-Priority: 800
Quindi, come root, ho installato da sid il kernel e già che c'ero kvm
aptitude update aptitude install -t sid linux-image-2.6.30-1-686 kvm
Compilati ed installati i driver della rtl8185 (ovviamente dopo aver riavviato la macchina per caricare il nuovo kernel), ho installato, sempre come root qualche pacchetto essenziale:
aptitude install openssh-server wireless-tools xserver-xorg
Per risolvere un problema di refresh del monitor, che non permetteva di avviare X, ho creato uno xorg.conf (nelle ultime versioni di X non è necessario uno xorg.conf perchè è stato introdotto l'autoconfigure):
Xorg -configure > /etx/X11/xorg.conf
e ho aggiunto (nel mio caso!) le voci HorizSync e VertRefresh nella sezione Monitor con i relativi valori:
Section "Monitor"
...
HorizSync 30.0 - 70.0
VertRefresh 50.0 - 180.0
EndSection
Per cominciare dovrebbe bastare!!!
Il prossimo passo è installare la macchina virtuale, prima dobbiamo però creare l'immagine; per comodità ho creato una cartella nella home dell'$utente che eseguirà la vm:
su $utente cd mkdir vm cd vm qemu-img create -f qcow2 windowsxp.qcow2 20GB
Prima di avviare l'installazione aggiungiamo $utente al gruppo kvm, in modo che abbia i permessi per aprire il device /dev/kvm:
adduser $utente kvm
Procediamo quindi con l'installazione vera e propria; per comodità ho utilizzato una iso di XP:
kvm -boot d -cdrom /path/to/xp.iso -hda windowsxp.qcow2 -m 1024
Questo comando è sufficiente per la prima installazione, più avanti aggiungeremo le altre opzioni che ci interessano!
Finita l'installazione la prima cosa da fare è un backup dell'immagine:
cp windowsxp.qcow2 windowsxp.qcow2.bk
Consiglio: fare più backup possibili!
Per esigenze personali il Pc in questione deve: 1) autenticarsi come $utente senza dover fare il login 2) avviare x e la macchina virtuale con XP. Ecco come ho risolto:
Per il login ho modificato il file /etc/inittab in modo che il sistema faccia il login sulla tty1; ho commentato la riga
1:2345:respawn:/sbin/getty 38400 tty1
e ho aggiunto la seguente riga:
1:2345:respawn:/bin/login -f $user tty1 </dev/tty1 >/dev/tty1 2>&1
il risultato è quindi
... #1:2345:respawn:/sbin/getty 38400 tty1 1:2345:respawn:/bin/login -f $user tty1 </dev/tty1 >/dev/tty1 2>&1 2:23:respawn:/sbin/getty 38400 tty2 3:23:respawn:/sbin/getty 38400 tty3 ...