QEMU+KQEMU = virtual (and wonderful) insanity
Stampa

Questo richiede una minima abilita' con l'amministrazione di Debian Linux. Ha funzionato su un sistema installato da zero con il primo DVD, senza ne' interfaccia grafica ne' il cosiddetto sistema base installato, per la creazione di un vero e proprio "contenitore di macchine virtuali".
This requires basic skills about Debian Linux administration. It worked on a system newly installed, via the first DVD, without GUI nor so-called "base system", as the creation of an actual "virtual machines repository".


in /etc/apt/sources.list
1. assicurarsi di utilizzare un mirror in rete per i pacchetti
ensure you're using a network mirror to download packages
2. configurare i repository contrib e non-free sulle fonti ufficiali
configure contrib and non-free sources

3. salvare questo script, dare permessi di esecuzione, lanciarlo
save this script, give execution rights, run it

#!/bin/bash
apt-get install qemu kqemu-source kqemu-common gcc build-essential linux-headers-`uname -r`
cd /usr/src
ln -s linux-headers-`uname -r` linux
tar jxvf kqemu.tar.bz2
cd modules/kqemu
./configure --cc=gcc-3.4
make
make install



in /etc/rc.local
4. inserire il comando /sbin/modprobe kqemu prima o in luogo di exit 0
add the command /sbin/modprobe kqemu before or instead exit 0

UPDATE: Bridged networking

La pagina indicata sotto raccoglie l'esperienza di chi ha potuto mettere insieme un setup per esporre una macchina virtuale QEMU su una rete reale. Ho trovato varie soluzioni in rete, ma questa e' quella che mi piace di piu', dato che richiede un solo /etc/qemu-ifup e nessun traccheggiamento con NAT o roba simile.
The page linked below collects the experience of someone who was capable to set up a configuration to expose a QEMU virtual machine on a physical network. I found many solutions online, but this is the one I like more, as it requires just one /etc/qemu-ifup and no tricks with NATs and stuff.
http://mychael.gotdns.com/blog/2006/12/14/qemu-setup/
Richiede solo alcuni accorgimenti particolari relativi a Debian in quanto tale. Questi i miei consigli:
It just requires some tricks typical of Debian itself. These are my advices:
  • apt-get install bridge-utils uml-utilities (con il trattino giusto per Debian - under Debian it's a dash, not an underscore)
  • tunctl e' in /usr/sbin, quindi la configurazione in /etc/sudoers sara' "utente ALL=(ALL) NOPASSWD: /usr/sbin/tunctl" - tunctl is in /usr/sbin, so the configuration of /etc/sudoers will be "user ALL=(ALL) NOPASSWD: /usr/sbin/tunctl"
  • dato che qui stiamo dedicando un computer a QEMU, quanto indicato in ~/bin/qemu_setup finira' dritto in /etc/rc.local, ovviamente con gli indirizzi giusti - as here we're setting up a dedicated machine for QEMU, stuff in ~/bin/qemu_setup will go straight in /etc/rc.local, obviously with the right addresses
  • se pensate di usare DHCP o usare piu' macchine virtuali lo potete fare, ma ricordate di impostare un MAC fittizio e che sia sempre differente - if you plan to use DHCP you can but, remember, you must set up manually a MAC address for each virtual machine.

UPDATE2

La pagina indicata sopra e' stata eliminata. Non importa, qui ci sono le opportune indicazioni.
The page above is offline. No matter, here are the proper instructions.
  • (da inserire in - to be insert into - /etc/rc.local )

# insert the tuntap module
modprobe tun

# insert the bridge module
modprobe bridge

# insert the kqemu module
modprobe kqemu major=0

# setup memory for QEMU (here 800MB)
umount /dev/shm
mount -t tmpfs -o size=800m none /dev/shm

# setup bridge
#dhclient -r eth0
#dhcpcd -k
ifconfig eth0 down
brctl addbr br0
ifconfig eth0 up
brctl addif br0 eth0
#dhclient br0
#dhcpcd br0
ifconfig br0 YOUR_PHYSICAL_IP up
ifconfig eth0 down
ifconfig eth0 0.0.0.0 up
route add default gw YOUR_GATEWAY


  • contenuti di - contents of - /etc/qemu-ifup

#!/bin/sh
echo "Executing /etc/qemu-ifup"
echo "Bringing up $1 for bridged mode..."
sudo /sbin/ifconfig $1 0.0.0.0 promisc up
echo "Adding $1 to br0..."
sudo /usr/sbin/brctl addif br0 $1
#sleep 2


  • esempio di script di lancio per una macchina virtuale - virtual machine startup sample script

#!/bin/bash
USERID=`whoami`
iface=`sudo tunctl -b -u $USERID`

qemu -m 256 -vnc 0 -net nic,model=pcnet,macaddress=52:54:00:XX:YY:ZZ -net tap,ifname=$iface vm1.raw
sudo tunctl -d $iface


  • esempio di aggiunte per - examples to add up to - /etc/rc.local per far partire una macchina virtuale all'avvio - to start up a virtual machine at boot time. L'emulazione PCnet ha dato la migliore affidabilita' sotto Debian Linux 5 (Lenny).
PCnet emulation gave the best reliability under Debian 5 (Lenny).

(cd /home/USER/vm; su USER -c ./vm1.sh >/dev/null 2>/dev/null &)



Created by rdo. Last Modification: Wednesday 12 Agosto, 2009 17:49:02 CET by rdo.

Menu