martedì, aprile 10, 2007

KVM => Come compilarlo e farlo funzionare in Debian

KVM (Kernel-based Virtual Machine) è la soluzione per la virtualizzazione hardware che utilizza le nuovissime estensioni per la virtualizzazione (Intel VT e AMD AMD-V). Esso consiste in dei moduli caricabili per il kernel Linux (kvm.ko e kvm-intel.ko o kvm-amd.ko) che si affiancano ad una versione modificata di QEMU.



KVM è interamente open source, ed è stato scelto (a discapito di Xen) da Linus Torvalds per essere integrato direttamente nel kernel Linux a partire dal ramo 2.6.20 , mentre può essere installato nei kernel del ramo 2.6.16 e successivi.

Per verificare se la propia (o propie) cpu possiede le estenzioni per la virtualizzazione il comando seguente
egrep '^flags.*(vmx|svm)' /proc/cpuinfo
deve avere come output qualcosa di simile a:

flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr lahf_lm

In questo caso vengono restituite due righe perchè si tratta di un processore dualcore, un Intel Core 2 Duo 7200.

Installazione del software necessario:
sudo apt-get install gcc-3.4 g++-3.4 uuid-dev \
zlib1g-dev libsdl1.2-dev libasound2-dev \
build-essential quilt debhelper autotools-dev \
nasm linux-headers-2.6

(per la compilazione di qemu è necessario gcc in versione 3.x)

Scaricare l'ultima verisione di kvm (al momento kvm-18) ad esempio sul Desktop, e scompattarlo, configurarlo, compilarlo ed installarlo.
http://sourceforge.net/project/showfiles.php?group_id=180599

cd
tar zxvf Desktop/kvm-3.tar.gz
cd kvm-3
./configure --prefix=/usr/local/kvm --qemu-cc="/usr/bin/gcc-3.4"
make
sudo make install


Per chi sta usando un kernel del ramo 2.6.20 bisogna mettere i moduli appena creati nel posto giusto:
sudo cp kernel/*.ko /lib/modules/$(uname -r)/kernel/drivers/kvm

Caricare i moduli appena installati:

sudo depmod -a
sudo modprobe kvm-intel
# oppure ovviamente
sudo modprobe kvm-amd


Ora se tutto è andato bene siamo pronti per l'uso di kvm!

Creiamo un disco immagine (io l'ho fatto di 800 Mb perchè ci installero DSL)
cd
/usr/local/kvm/bin/qemu-img create -f qcow vdisk.img 800MB


Installazione del sistema operativo.
sudo /usr/local/kvm/bin/qemu -hda vdisk.img -cdrom dsl-3.2.iso -boot d -m 384
Nel mio caso ho un'immagine iso "dsl-3.2.iso", altimenti se si ha un cd-rom basta mettere "/dev/cdrom".



Una volta finita l'installazione può essere eseguito con:
sudo /usr/local/kvm/bin/qemu -hda vdisk.img -boot c -m 384



Le mie impressioni d'uso sono veramente molto positive!
Rispetto la versione normale di "qemu" è decisamente molto più veloce.
Le applicazioni si avviano in un batter d'occhio!

6 commenti:

Anonimo ha detto...

Ciao,

complimenti per il post. Lo provo subito.
Ma una domanda: se il mio pc non supporta le estensioni per la virtualizzazione si puó comunque installare tutto anche se andrá piú piano o non si puó fare nulla?

Ciao,

Hjon

daniele ha detto...

Grazie!
Credo, ma non l'ho testato, che puoi compilare tutto senza problemi.
Sicuramente però non puoi caricare i moduli per il kernel.
Comunque il qemu compilato funziona anche senza i moduli caricati, ma va piano come il qemu originale!

Anonimo ha detto...

x anonimo....

io l'ho provato su un amd64 x2 con socket 939 che nn supporta la virtualizzazione....il kvm non lo puoi mettere puoi pero' installare qemu e kqmeu ke pero' non è come kvm.....io alla fine ho cambiato processore...sempre amd64 x2 ma con sokcket am2 che lo supporta....
cmq con qemu vai mooooooooooolto lento! almeno le kqemu.....

valent ha detto...

Eccellente guida, ti ringrazio anche per la risposta che mi hai dato su HWupg.

daniele ha detto...

@valent
Grazie!

Sandro ha detto...

quali sono i processori intel e amd che supportano tale kvm ?