KVM

Iz projekta Ubuntu-RS Wiki
Idi na: navigacija, pretraga
Ovaj članak treba ažurirati!!! Ovaj članak ili jedan njegov deo nije ažuriran.
Ovaj članak treba da bude ažuriran. Ažurirajte ovaj članak, kako bi sadržao najnovije dostupne informacije i uklonite ovaj šablon kada završite. Molimo pogledajte stranicu za razgovor za više informacija. Uredi ga i ažuriraj ga.



Po završetku ovog postupka moći ćete da istovremeno pokrenete više različitih operativnih sistema (uključujući Linux/Windows i druge) koristeći KVM kernel modul i QEMU. KVM poboljšava performanse tako što koristi podršku za hardversku virtuelizaciju na procesoru. Neophodno je da imate procesor sa Intel VT ili AMD-V tehnologijom.

Proverite da li procesor podržava hardversku virtuelizaciju komadnom:

grep -E '^flags.*(vmx|svm)' /proc/cpuinfo

Ako grep prikaže izlaz u terminalu, vaš procesor je naoružan i spreman. Ne očajavajte ako procesor nema podršku za hardversku virtuelizaciju, koliko mi je poznato kqemu (još jedna slobodna alternativa KVM-u) može da radi i bez posebnih instrukcija u procesoru (ispravite ako grešim), a naravno uvek možete koristiti softversku virtuelizaciju uz QEMU, bez kernel modula.


Sadržaj

Instaliranje

KVM je prisutan u Feisty Universe skladištu ali u starijoj verziji koja ne radi sa novim 2.6.20 kernelom, pa je potrebno modul preuzeti i prevesti iz izvornog koda. Međutim ni ovo nije teško.


Instaliranje (iz izvornog koda)

Najpre instalirajte sve što je potrebno za prevođenje KVM-a komandom:

sudo apt-get build-dep kvm

a zatim sa http://sourceforge.net/project/showfiles.php?group_id=180599 preuzmite najnoviju verziju kvm paketa (verzija 16, kvm-16.tar.gz je objavljena 7. marta 2007.). Ovaj paket već sadrži modifikovani QEMU tako da to nećemo posebno instalirati. Raspakujmo arhivu i pripremimo kod za prevođenje:

tar -xzf kvm-16.tar.gz
cd kvm-16
./configure

Izlaz koji configure skripta daje na mom računaru je:

Install prefix    /usr/local
BIOS directory    /usr/local/share/qemu
binary directory  /usr/local/bin
Manual directory  /usr/local/share/man
ELF interp prefix /usr/gnemul/qemu-%M
Source path       /home/goran/kvm-16/qemu
C compiler        /usr/bin/gcc-3.4
Host C compiler   gcc
make              make
install           install
host CPU          x86_64
host big endian   no
target list       x86_64-softmmu
gprof enabled     no
profiler          no
static build      no
SDL support       yes
SDL static link   yes
mingw32 support   no
Adlib support     no
CoreAudio support no
ALSA support      yes
DSound support    no
FMOD support      no 
kqemu support     no
kvm support       yes
Documentation     yes

Sada prevedimo i instalirajmo KVM:

make
sudo make install                    # ako imate checkinstall, možete napraviti deb paket i instalirati njega

Premestimo kvm module na pravo mesto (kod mene u /lib/modules/2.6.20-9-generic/kernel/drivers/kvm/ direktorijum):

sudo mkdir -p /lib/modules/`uname -r`/kernel/drivers/kvm
sudo mv /lib/modules/`uname -r`/extra/kvm*.ko /lib/modules/`uname -r`/kernel/drivers/kvm

Ne znam je li ovo neophodno, ali ne škodi:

sudo depmod -a

Da biste učitali KVM modul, potrebno je učitati opšti kvm modul i kvm-intel za Intel procesore, odnosno kvm-amd za AMD procesore.

Ako je kvm modul učitan (recimo ako ste ranije već instalirali kvm iz Ubuntu skladišta), izbacite ga:

sudo modprobe -r kvm-intel    # odnosno kvm-amd za AMD procesore
sudo modprobe -r kvm

Napravimo kvm grupu kojoj ćemo dozvoliti da pristupa /dev/kvm uređaju (koji će modul napraviti pri učitavanju) i dodajmo korisnike:

sudo groupadd kvm 
sudo usermod -aG kvm goran    # izvršite za svakog korisnika koji treba da koristi virtuelizaciju
                              # tj. pristupa /dev/kvm uređaju (umesto goran ide korisničko ime)

Podesimo vlasništvo nad /dev/kvm tako da kvm grupa ima pristup (koristimo UDEV, alternativno možemo uraditi "sudo chgrp kvm /dev/kvm"; "sudo chmod 0660 /dev/kvm" svaki put nakon što učitamo modul, a to ćemo raditi automatski pa je bolje da i ovo UDEV uradi umesto nas):

sudo sh -c "echo 'KERNEL==\"kvm\",                          NAME=\"%k\"' >> 20-names.rules"
sudo sh -c "echo 'KERNEL==\"kvm\",                          GROUP=\"kvm\", MODE=\"0660\"' >> 40-permissions.rules"

Obavezno >> inače uopšte neće valjati!!!

Omogućimo automatsko učitavanje modula:

sudo sh -c "echo 'kvm-intel' >> /etc/modules"          # odnosno kvm-amd za AMD procesore
sudo sh -c "echo 'kvm' >> /etc/modules"
 

Ove komande dopisuju (obavezno >> inače neće valjati!) kvm-intel (odnosno kvm-amd) i kvm na kraj /etc/modules datoteke. Učitajmo modul sa:

sudo /etc/init.d/module-init-tools

I to je to :) Loša strana je što ovo moramo raditi kada god se instaliramo novo izdanje kernela, makar dok paket u Ubuntu Feisty Universe skladištu ne bude ažuriran (a sigurno hoće do izlaska stabilne verzije).


Instaliranje virtuelne mašine

Ako se niste ponovo prijavili od instalacije, prijavite se u novoj ljusci (da bi bila ostvarena pripadnost grupi, neka neko ispravi ako ovo može drugačije i bez prijave?):

su goran

Najpre moramo napraviti datoteku koja predstavlja sliku diska. Koristićemo raw nekompresovani format, jer onda možemo lepo da montiramo disk virtuelne mašine kao loopback uređaj (sudo mount -o loop,offset=32256 <img datoteka> <direktorijum> - mašina ne sme biti učitana dok je disk montiran!), a linux sistemi datoteka (ext3/reiserfs/...) podržavaju datoteke sa rupama, pa će img zauzeti samo onoliko prostora koliko je popunjeno podacima.

qemu-img create ubuntu-6.06-dapper.img 3GB

Pokrenimo kvm+qemu sa napravljeom praznom slikom kao diskom, sa 394MB RAM memorije i zatim pokrenimo virtuelni sistem sa CD-a.

qemu-system-x86_64 -hda ubuntu-6.06-dapper.img -cdrom /dev/cdrom -boot d -m 394

Nakon sto instaliramo sistem, mozemo koristiti:

qemu-system-x86_64 -hda ubuntu-6.06-dapper.img -m 394          # samo qemu ako je glavni OS 32bitni

Dobar vodic kako instalirati Microsoft Windows XP kao virtuelni sistem i omoguciti pokretanje individualnih programa postoji na engleskom Ubuntu vikiju.

Umrežavanje (nije neophodno)

Iako KVM automatski podiže mrežni interfejs za virtuelizovani OS sa IP adresom 10.0.2.15 koji može glavnom sistemu da pristupi preko 10.0.2.2, ja sam želeo da virtuelni sistemi mogu međusobno da se vide, kao i da mogu da im pristupim sa glavnog sistema. Ako vam to ne treba, slobodno preskočite ovaj deo. Takođe, na engleskom Ubuntu vikiju postoje veze ka uputstvima kako povezati virtuelne sisteme u pun bridge tako da budu vidljivi i sa spoljne mreže, a možda pomogne i ova tema na Ubuntu Forumima (sekcija 10) mada su neke druge stvari tamo drugačije realizovane pa ne znam da li je kompatibilno.

Znači želimo da virtuelnim sistemima dodelimo IP adrese iz iste klase tako da oni mogu da se vide preko glavnog sistema na kome ćemo pokrenuti virtuelni mrežni uređaj, za šta koristimo tun kernel modul. Da bi virtuelne mašine mogle da se povežu sa ovim interfejsom koristimo VDE. Treba nam i DHCP serverčić koji će slušati na ovom mrežnom uređaju i dodeljivati IP adrese.

sudo apt-get install vde dnsmasq

Omogućimo učitavanje tun modula:

sudo sh -c "echo 'tun' >> /etc/modules"

Dodajmo jednog po jednog korisnika kvm grupe u vde-net grupu (koja bi trebalo već da postoji):

sudo usermod -aG vde-net goran

i učitajmo tun modul:

sudo /etc/init.d/module-init-tools

Podesimo VDE tako što u /etc/network/interfaces dodamo:

auto tap0
iface tap0 inet static
       address 192.168.2.1
       netmask 255.255.255.0
       network 192.168.2.0
       broadcast 192.168.2.255
       vde-switch vde-net

Ovim smo dodelili 192.168.2.1 kao adresu virtuelnom mrežnom uređaju, pa će i DHCP konfiguracija, koju sada trebamo da izmenimo biti odgovarajuća. U datoteci /etc/dsnmasq.conf bitno je postaviti interface na tap0 (izbrisati # na početku linije i ukucati tap0 iza znaka jednakosti), drugi dhcp-range (sa netmask podešavanjem) sam ja postavio na 192.168.2.100,192.168.2.200,255.255.255.0,12h, a vi odaberite opseg adresa (prvo je početna, drugo završna, treće netmask, a četvrto period na koji se IP adresa dodeljuje) kako vam odgovara. Takođe poželjno je postaviti domain (ja sam odabrao qemu kao vrednost).

Postoji neki problem sa privilegijama koji nisam uspeo da otkrijem (vde_switch: TUNSETIFF failed Operation not permitted) tako da za sada izmenite /etc/network/if-pre-up.d/vde i uklonite liniju 35: --chuid $USER. vde_switch ce sada biti pokrenut sa root privilegijama umesto sa privilegijama korisnika vde-net. Ako neko zna kako ovo elegantno srediti neka javi :)

Prijavimo se ponovo kako bismo pridružili nove grupe (neka neko ispravi ako ovo može drugačije i bez prijave):

su goran

Podignimo tap0 uređaj:

sudo ifup tap0

Ponovo pokrenimo dnsmasq komandom:

sudo /etc/init.d/dnsmasq restart

Omogućimo NAT kako bi virtuelni sistemi mogli da izađu na spoljnu mrežu (ako spoljna mreža postoji):

sudo sh -c "echo '1' > /proc/sys/net/ipv4/ip_forward"
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE     # Ukoliko je eth0 interfejs spoljne mreže


Korisnička dokumentacija
Aplikacije | Multimedija | Internet i mreže | Virtuelizacija | Saveti i trikovi | Eyecandy | Serveri | Instalacija | Hardver | Laptop | Sigurnost | Igre | Info
Lični alati
Imenski prostori
Varijante
Akcije
Navigacija
alati
Linkovi