Wiki Ubuntu-it

Indice
Partecipa
FAQ
Wiki Blog
------------------
Ubuntu-it.org
Forum
Chiedi
Chat
Cerca
Planet
  • Pagina non alterabile
  • Informazioni
  • Allegati

Versione 15 del 04/04/2010 12.13.26

Nascondi questo messaggio

Indice(depth=2) Informazioni(forum="http://forum.ubuntu-it.org/index.php/topic,371617.0.html") BR KVM/GestioneDiretta

Gestione diretta di KVM

Siccome il resto di questa documentazione è focalizzato sull'uso di KVM attraverso libvirt, ricordiamo che è possibile anche la gestione diretta di KVM. Non è un metodo raccomandabile, ma in alcuni casi può tornare utile.

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
  • -m = memoria (in MB)
  • -hda = primo disco rigido
    • Si possono usare vari tipi di file immagine inclusi .img, .cow
    • È possibile avviare un disco rigido. Prestare attenzione nell'uso di questa opzione se non si vuole avviare la partizione di root del host.

      • Sintassi -hda /dev/sda
      • Questo 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|n] avvio da floppy (a), disco rigido (c), CD-ROM (d), oppure rete (n)
  • -smp = numbero 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 o aiuto digitare:

kvm --help

Dispositivi di connessione bridged

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

1. Creare il bridge sulla scheda, come descritto KVM/Networking#Creazione di un bridge di rete sul host QUI*****ancorare

2. Installare uml-utilities

  •  sudo apt-get install uml-utilities

3. Impostare i permessi al dispositivo tun, tramite qualsiasi editor di testo, modificare /etc/udev/rules.d/40-permissions.rules, aggiungendo queste linee alla fine del file:

  •  KERNEL=="tun", GROUP="kvm", MODE="0660"

4. Riavviare (per rendere visibili i dispositivi bridged e tun).

5. Editare /etc/kvm/kvm-ifup aggiungendo sudo davanti ai comandi ifconfig e brctl:

  •  #!/bin/sh
    
     switch=$(ip route ls | awk '/^default / { for(i=0;i<NF;i++) { if ($(i) == "dev") print $(i+1) }}')
     '''sudo''' /sbin/ifconfig $1 0.0.0.0 up
     '''sudo''' /usr/sbin/brctl addif ${switch} $1
     exit 0

6. 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

7. Rendere eseguibile lo script appena creato:

  •  chmod 0755 ~/bin/kvm-bridge

8. 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 queste linee alla fine del file:

  •  # Autorizzare i membri del gruppo KVM a configurare una interfaccia di rete bridged virtuale.
     %kvm ALL=(ALL) NOPASSWD: /sbin/ifconfig, /usr/sbin/brctl, /usr/sbin/tunctl

9. 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 a /etc/ufw/before.rules

Ulteriori risorse


CategoryHomepage CategoryInTraduzione