## page was renamed from Emulatori/Kvm/GestioneDiretta
## page was renamed from FabioMarconi/Prove11
## page updated 13-06-2011
#format wiki
#language it
<<BR>>
<<Indice(depth=2)>>
<<Informazioni(forum="http://forum.ubuntu-it.org/viewtopic.php?t=371617"; rilasci="10.04")>>

= Introduzione =

La documentazione trattata fino ad ora è focalizzata all'uso di '''KVM''' attraverso '''libvirt''', in questa pagina verrà spiegata la gestione diretta di '''KVM''', un metodo non raccomandabile, ma in alcuni casi, utile.

= Gestione diretta di KVM =

'''KVM''' è molto simile a '''qemu''' e rende possibile l'esecuzione di macchine da riga di comando. 

La sintassi di base è:{{{
kvm -m 512 -hda disk.img -cdrom ubuntu.iso -boot d -smp 2
}}}

dove:

 * '''-m''': è la memoria (in MB)
 * '''-hda''': è il primo disco rigido. È possibile usare vari tipi di file immagine inclusi `.img`, `.cow`. Per avviare un disco rigido è necessario prestare attenzione nell'uso di questa opzione, se non si vuole avviare la partizione di root del host. La sintassi corretta è '''-hda /dev/sda'''. Questa richiama il menu di grub dal MBR quando viene lanciato '''KVM'''.
 * '''-cdrom''' può essere sia un'immagine ISO che un lettore CD/DVD.
 * '''-boot a, c, d''' o '''n''':
  * '''a''': avvio da floppy, 
  * '''c''': avvio da disco rigido, 
  * '''d''': avvio da CD-ROM, 
  * '''n''': avvio da da rete.
 * '''-smp''': è il numero delle CPU.
 * '''-alt-grab''' cambia la combinazione per il grab del puntatore da '''Ctrl-Alt''' a '''Ctrl-Alt-Shift''' (molto pratico se si usano spesso combinazioni di tasti come '''Ctrl-Alt-Del''' o '''Windows-E''').

Per ulteriori opzioni digitare:{{{
kvm --help
}}}

== Dispositivi di connessione bridged ==

Prima di avviare  '''KVM''' usando sistemi di connessione bridged come utente, sono necessarie alcune configurazioni.

 0. Creare il bridge sulla scheda, come descritto nella [[Virtualizzazione/Kvm/Networking#bridge-sull-host|relativa pagina]].

 0. [[AmministrazioneSistema/InstallareProgrammi|Installare]] il pacchetto: [[apt://uml-utilities | uml-utilities]]

 0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/udev/rules.d/40-permissions.rules` e aggiugere alla fine del file la seguente riga:{{{
 KERNEL=="tun", GROUP="kvm", MODE="0660"
 }}}
 per impostare i permessi al dispositivo '''tun'''.

 0. Salvare e chiudere il file appena modificato.

 0. Riavviare la macchina per rendere visibili i dispositivi '''bridged''' e '''tun'''.

 0. Aprire con un [[Ufficio/EditorDiTesto|editor di testo]] il file `/etc/kvm/kvm-ifup` e aggiungere «sudo» davanti ai comandi «ip» e «brctl»:{{{
 #!/bin/sh

 switch=$(ip route ls | awk '/^default / { for(i=0;i<NF;i++) { if ($(i) == "dev") print $(i+1) }}')
 '''sudo''' /sbin/ip link set dev "$1" up 
 '''sudo''' /usr/sbin/brctl addif ${switch} $1
 exit 0
 }}}
 0. Salvare e chiudere il file appena modificato.

 0. Per lanciare '''KVM''' è necessario uno script wrapper. È possibile inserirlo in `~/bin` e chiamarlo '''kvm-bridge''' e richiamarlo direttamene con il comando '''kvm-bridge'''.{{{
 #!/usr/bin/env bash.
 # script per gestire l'allocazione dell'interfaccia tap.
 # per kernels >= 2.6.18.

 # modificato da bodhi.zazen con l'ausilio di:
 # http://calamari.reverse-dns.net:980/cgi-bin/moin.cgi/FrequentlyAskedQuestions#head-2511814cb92c14dbe1480089c04f83c281117a86.
 # http://ubuntuforums.org/showthread.php?t=528046.
 # http://howtoforge.com/virtualization-with-kvm-on-ubuntu-9.10.

 # impostazione di una interfaccia tap per qemu.
 # USERID - uid sotto il quale è in esecuzione qemu.
 USERID=`whoami`

 # generare un indirizzo macchina casuale peril nic di qemu .
 # shell script preso in prestito dall'utente pheldens @ qemu forum.

 ranmac=$(echo -n DE:AD:BE:EF ; for i in `seq 1 2` ; \
 do echo -n `echo ":$RANDOM$RANDOM" | cut -n -c -3` ;done)

 # specificare quale NIC usare - vedere qemu.org per altri NIC.
 # model=r8169.
 # impostare il modello di scheda di rete.
 # http://howtoforge.com/virtualization-with-kvm-on-ubuntu-9.10.

 model=rtl8139
 iface=`sudo tunctl -b -u $USERID`

 # avviare kvm con questi parametri.
 # echo "rendere visibile l'interfaccia $iface con indirizzo macchina $ranmac".
 # nohup aggiunto per consentire a kvm di essere indipendente dal terminale.
 nohup kvm -net nic,vlan=0,macaddr=$ranmac -net tap,vlan=0,ifname=$iface $@

 # kvm è stato fermato - non usare più l'interfaccia tap.
 sudo tunctl -d $iface &> /dev/null
 }}}

 0. Rendere eseguibile lo script appena creato digitando in un terminale:{{{
 chmod 0755 ~/bin/kvm-bridge
}}}

 0. Modificare '''sudoers''' per consentire ai membri del gruppo '''KVM''' di eseguire lo script '''wrapper kvm-bridge''' e creare una intefaccia di rete bridged senza l'esecuzione di '''KVM''' come superutente:{{{
 visudo
}}}

 Aggiungere le seguenti righe alla fine del file:
 {{{
 # Autorizzare i membri del gruppo KVM a configurare una interfaccia di rete bridged virtuale.
 %kvm ALL=(ALL) NOPASSWD: /sbin/ip, /usr/sbin/brctl, /usr/sbin/tunctl
}}}

 0. Avviare '''KVM''' da riga di comando. Non è necessario dichiarare una interfaccia network.{{{
 kvm-bridge -m 512 -hda disk.img -cdrom ubuntu.iso -boot -d -smp 2
}}}


== iptables ==

Aggiungere le seguenti regole ad iptables:{{{
# autorizza i pacchetti in ingresso per l'ospite kvm.
IPTABLES -A FORWARD -d $IPADDR_FROM_GUEST_OS -j ACCEPT
# autorizza i pacchetti in uscita da kvm.
IPTABLES -A FORWARD -s $IPADDR_FROM_GUEST_OS -j ACCEPT
}}}

Sostituire «$IPADDR_FROM_GUEST_OS» con l'attuale indirizzo ip dell'ospite di '''kvm'''. (Si raccomanda di configurare gli ospiti all'uso di un indirizzo IP statico).

Se si usa '''ufw''', aggiungere queste regole al file `/etc/ufw/before.rules`. 
##vedere anche [[http://help.ubuntu-it.org/current/ubuntu/serverguide/it/firewall.html|Ubuntu Sicurezza Firewall]].

= Ulteriori risorse =

 * [[https://help.ubuntu.com/community/KVM/Directly|Documento originale]]
----
CategoryVirtualizzazione CategoryDaRevisionare