Old:Installazione Qemu con supporto accelerazione Kqemu
Attenzione. Questa guida è obsoleta. Viene mantenuta sul Wiki solo per motivi di natura storica e didattica. |
Installazione QEMU con qvm86/kqemu per Debian/Ubuntu
Qemu con supporto qvm86 (libero, ma sperimentale)
1. Fase Preliminare
Assicuratevi di aver installato i pacchetti necessari a scaricare e compilare il tutto:
- ssh e cvs (per scaricare qvm86 occorre andare via cvs remoto);
- patch (per usare qvm86 con qemu occorre effettuare una piccola patch ai sorgenti di qemu);
- gcc-3.3 oppure gcc-3.4 (qemu non è ancora compilabile col gcc 4.0);
- libsdl1.2-dev;
- zlib1g-dev;
- make;
- kernel-headers-versione_del_kernel_in_uso (oppure linux-headers-versione_del_kernel_in_uso se avete una Ubuntu o usate una Debian unstable con un kernel recente). La versione può essere individuata eseguendo il comando
uname -r
.
2. Recupero file QEMU
Scaricate da http://fabrice.bellard.free.fr/qemu/download.html gli archivi dei codici sorgenti di QEMU, e come utente diverso da root scompattateli in una directory e poi entrateci.
$ tar zxvf qemu-0.8.0.tar.gz $ cd qemu-0.8.0
3. Recupero file qvm86
Scaricate via cvs i sorgenti di qvm86, in modo che siano all'interno della directory dei sorgenti di qemu, sempre con un utente diverso da root.
$ export CVS_RSH=ssh $ export CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/sources/qvm86 $ cvs -z3 co qvm86
4. Applicazione patch
Applicate dalla directory dei sorgenti di qemu la patch provvista da qvm86:
$ patch -p0 < qvm86/patch.qvm86
5. Configurazione
Configurate l'ambiente di compilazione avviando lo script ./configure
.
Verificate che sia tutto ok, poi compilate il tutto ed installate:
$ ./configure --cc=gcc-3.3 $ make
Se avviando ./configure
avete errori del tipo che non si riesce a trovare la parte di sviluppo di libsdl, avete scompattato gli archivi come root. Leggete meglio sopra e ricominciate da capo.
Se dopo aver avviato make
ci sono errori di compilazione, ci si può limitare a compilare il solo modulo di emulazione x86, aggiungendo l'opzione --target-list=i386-softmmu
al comando ./configure
.
$ make clean $ ./configure --cc=gcc-3.3 --target-list=i386-softmmu $ make
Se non ci sono errori, ora potete diventare root ed installare qemu.
$ su Password: # make install
A questo punto qemu è installato in /usr/local/bin/qemu
, ed il modulo qvm86 si trova in /lib/modules/versione_del_kernel/misc/qvm86.ko
.
6. Caricamento modulo
Prima di eseguire qemu va caricato il modulo del kernel qvm86
, va eventualmente creato /dev/qvm86
(usato per interagire col kernel) e gli vanno dati permessi adeguati.
Esempio di procedura manuale (per chi non ha installato il pacchetto udev), queste due operazioni sono da fare come root una volta sola:
# mknod /dev/qvm86 c 222 0 # chmod 666 /dev/qvm86
Questa operazione va eseguita come root ad ogni avvio del sistema per usare qemu:
# modprobe qvm86
Esempio di procedura manuale (per chi ha installato il pacchetto udev), queste due operazioni vanno eseguite come root ad ogni avvio del sistema:
# modprobe qvm86 # chmod 666 /dev/qvm86
Per far eseguire automaticamente queste operazioni ad ogni avvio del sistema (consigliato):
- diventate root (
su -
); - modificate il file
/etc/modules
aggiungendo la rigaqvm86
, in modo che il modulo venga automaticamente caricato al boot; - create il file
/etc/modprobe.d/qvm86
contenente le seguenti righe:- per chi non ha installato il pacchetto udev:
install qvm86 /sbin/modprobe --ignore-install qvm86 \ && (test -c /dev/qvm86 || mknod /dev/qvm86 c 222 0) \ && chmod 666 /dev/qvm86
- per chi ha installato il pacchetto udev:
install qvm86 /sbin/modprobe --ignore-install qvm86 && chmod 666 /dev/qvm86
Una volta caricato il modulo e dati i permessi di lettura a /dev/qvm86
siamo pronti per eseguire il nuovo qemu.
Accertatevi che il qemu che andrete ad eseguire sia quello compilato in /usr/local/bin/qemu
: potete farlo eseguendo type qemu
.
Qemu col supporto kqemu (proprietario)
1. Fase Preliminare
Assicuratevi di aver installato i pacchetti necessari a compilare il tutto:
- gcc-3.3 oppure gcc-3.4 (qemu non è ancora compilabile col gcc 4.0);
- libsdl1.2-dev;
- zlib1g-dev;
- make;
- gcc;
- kernel-headers-versione_del_kernel_in_uso (oppure linux-headers-versione_del_kernel_in_uso se avete una Ubuntu od usate una Debian unstable con un kernel recente). La versione può essere individuata eseguendo il comando
uname -r
.
2. Recupero file QEMU/KQEMU
Scaricate archivi dei codici sorgenti di QEMU e KQEMU, e come utente diverso da root scompattateli in modo che la directory di kqemu venga estratta all'interno della directory di qemu. Quindi entrate nella directory dei sorgenti.
$ tar zxvf qemu-0.8.0.tar.gz $ tar zxvf kqemu-0.7.2.tar.gz -C qemu-0.8.0 $ cd qemu-0.8.0
3. Configurazione
Configurate l'ambiente di compilazione avviando lo script ./configure
.
Verificate che sia tutto ok e che il supporto kqemu sia attivato, in modo che venga compilato
il modulo corretto per il vostro kernel. Poi compilate il tutto ed installate.
$ ./configure --cc=gcc-3.4 $ make
Se avviando ./configure
avete errori del tipo che non si riesce a trovare la parte di sviluppo di libsdl, avete scompattato gli archivi come root invece che come utente comune. Leggete meglio sopra e ricominciate da capo.
Chi utilizza Ubuntu Breezy (5.10) definisca anche la variabile di ambiente CC che punti a gcc-3.4 (export CC='/usr/bin/gcc-3.4'
), altrimenti il linking di kqemu verrà fatto con gcc-4.0 (compilatore di default su Ubuntu Breezy 5.10) e in fase di caricamento del modulo si avrà l'errore Invalid module format, poiché il kernel standard di questa distribuzione è compilato con gcc-3.4. La variabile va definita prima di eseguire il make
; se ciò non è stato fatto per tempo allora è necessario entrare nella directory kqemu/
ed eliminare quanto già compilato con make clean
, poi ritornare nella directory principale e rilanciare make
.
Se dopo aver avviato make
ci sono errori di compilazione, ci si può limitare a compilare il solo modulo di emulazione x86, aggiungendo l'opzione --target-list=i386-softmmu
al comando ./configure
.
$ make clean $ ./configure --cc=gcc-3.4 --target-list=i386-softmmu $ make
Se non ci sono errori, ora potete diventare root ed installare qemu.
$ su
Password:
# make install
A questo punto qemu è installato in /usr/local/bin/qemu
, ed il modulo kqemu si trova in /lib/modules/versione_del_kernel/misc/kqemu.ko
.
4. Caricamento modulo
Prima di eseguire qemu va caricato il modulo del kernel kqemu
, va eventualmente creato /dev/kqemu
(usato per interagire col kernel) e gli vanno dati permessi adeguati.
Esempio di procedura manuale (per chi non ha installato il pacchetto udev), queste due operazioni sono da fare come root una volta sola:
# mknod /dev/kqemu c 250 0 # chmod 666 /dev/kqemu
Questa operazione va eseguita come root ad ogni avvio del sistema:
# modprobe kqemu
Esempio di procedura manuale (per chi ha installato il pacchetto udev), queste due operazioni vanno eseguite come root ad ogni avvio del sistema:
# modprobe kqemu major=0 # chmod 666 /dev/kqemu
Per far eseguire automaticamente queste operazioni ad ogni avvio del sistema (consigliato):
- diventate root (
su -
); - modificate il file
/etc/modules
aggiungendo la rigakqemu
, in modo che il modulo venga automaticamente caricato al boot; - create il file
/etc/modprobe.d/kqemu
contenente le seguenti righe:- per chi non ha installato il pacchetto udev:
install kqemu /sbin/modprobe --ignore-install kqemu \ && (test -c /dev/kqemu || mknod /dev/keqmu c 250 0) \ && chmod 666 /dev/kqemu
- per chi ha installato il pacchetto udev:
options kqemu major=0 install kqemu /sbin/modprobe --ignore-install kqemu && chmod 666 /dev/kqemu
Una volta caricato il modulo e dati i permessi di lettura a /dev/kqemu
siamo pronti per eseguire il nuovo qemu.
Accertatevi che il qemu che andrete ad eseguire sia quello compilato in /usr/local/bin/qemu
: potete farlo eseguendo type qemu
.
Utilizzo QEMU
Creazione immagine
Creazione di un file immagine per il disco (facoltativo):
$ qemu-img create hd.img 5G
Esecuzione QEMU
(cambiare il boot per fare l'installazione da cd etc..)
Per semplicità qui avviamo qemu da root (gli utenti comuni in Debian solitamente non possono leggere direttamente /dev/cdrom
), tuttavia qemu può tranquillamente essere eseguito come utente comune (consigliato).
# qemu -boot c -cdrom /dev/cdrom -hda /home/rob/hd.img \ -user-net -pci -m 256 -k it -localtime
Le principali opzioni di qemu sono:
-m megabyte
: memoria per l'emulatore = 256MB-k it
: tastiera italiana-localtime
: usa ora locale (default UTC)-pci
: emula scheda di rete rtl8029 PCI-boot c
: avvia dal dico rigido emulato (usare-boot d
per il boot dal cdrom emulato)-user-net
: il sistema GUEST deve essere configurato in DHCP. Qemu assegna un indirizzo dinamico "10.0.2.15" al SO guest, il quale sarà in grado di pingare solo il suo GW che è "10.0.2.2". Per testare la rete quindi avviare le applicazioni di rete, visto che il ping host non funziona.
QEMU Networking
Sezione da revisionare per i cambiamenti nella versione 0.8.0
Con la soluzione indicata qui sopra, il sistema Guest riesce a navigare in Internet, ma non riesce ad accedere alle risorse del proprio host. La maniera più facile per configurare qemu in modo che possa fare entrambe le cose, è quella di installare vde e usare tun/tap con un bridge.
Prima di iniziare, dovete verificare che il vostro kernel supporti i seguenti moduli:
tun: "Network device support" -> "Universal TUN/TAP device driver support" IP masquerade: "Networking options" -> "IP: Netfilter Configuration" bridging: "Networking options" -> "802.1d Ethernet Bridging"
e dovete installare il pacchetto bridge-utils:
apt-get install bridge-utils
Vde sta per Virtual Distributed Ethernet ed è un programma open source che vi permette di creare un network virtuale. Noi lo utilizzeremo per far fare in modo che il sistema Guest veda se stesso come un'unità distinta dal sistema host e possa colloquiare con questi.
Per quel che ne so io, non esiste (ancora) un pacchetto deb già pronto per l'uso, ma per installare vde sono sufficenti poche righe:
wget http://puzzle.dl.sourceforge.net/sourceforge/vde/vde-1.5.9.tar.gz tar -xvzf vde-1.5.9.tar.gz cd vde-1.5.9 ./configure make make install
Una volta fatto questo, siete pronti per configurare tun e il bridge:
vde_switch -tap tun0 -daemon chmod 777 /tmp/vde.ctl ifconfig eth0 down brctl addbr br0 ifconfig eth0 0.0.0.0 promisc up ifconfig tun0 0.0.0.0 promisc up # l'IP qui sotto è quello del computer host; modificatelo per adeguarlo alle vs esigenze ifconfig br0 192.168.0.200 netmask 255.255.255.0 broadcast 192.168.0.255 up brctl stp br0 off brctl setfd br0 1 brctl sethello br0 1 brctl addif br0 eth0 brctl addif br0 tun0 # questo invece è l'indirizzo IP del gateway route add default gw 192.168.0.1
NB: Una volta verificato che tutto funziona, queste istruzioni vanno inserite in uno script in modo da essere eseguite automaticamente all'accensione del computer qui ne trovate uno piuttosto grezzo: vde_qemu, che va salvato in /etc/init.d.
Dopodiché:
# chmod u+x /etc/init.d/vde_qemu # update-rc.d -n vde_qemu defaults 90
Ora tutto è pronto per lanciare qemu, con l'ultima avvertenza che dovete usare l'apposito wrapper vdeqemu:
vdeqemu -hda disk.img -localtime -net nic -net vde
Potete utilizzare tutte le opzioni di qemu, fuorché -user-net
, che disattiverebbe tun
.
Ora il sistema guest dovrebbe accedere a tutte le porte del sistema host, in maniera totalmente trasparente: da risorse di rete dovreste vedere il vostro server samba con le sue partizioni; dal browser dovreste accedere alle pagine del vostro server web, etc. etc.
Patch per Windows
Per quanto riguarda l'utilizzo della CPU, a quanto pare Windows 9x non fa un uso corretto della istruzione CPU HLT e quindi spara la cpu a 100% quando è in idle (non fa nulla) e invece la usa regolarmente quando è sotto "sforzo", paradossalmente infatti, se viene utilizzata la cpu di qemu l'utilizzo di cpu si abbassa su Linux in proporzione.
La patch può essere scaricata qui, va installata sul Win9x GUEST.
Collegamenti esterni
- http://ubuntuforums.org/showthread.php?t=39513
- http://fabrice.bellard.free.fr/qemu/index.html
- http://fabrice.bellard.free.fr/qemu/qemu-doc.html
- http://www.debian-administration.org/?article=40
- http://oui.com.br/n/content.php?article.21
- http://www.carlsonhome.net/computer_help_log.php
- http://savannah.nongnu.org/projects/qvm86/
Conributi
Themonkey 20:31, Ago 19, 2005 (EDT) The_monk_ey ( skype: the_monk_ey )
ianezz 17:40, Nov 25, 2005 (CET) (per la parte di compilazione ed installazione)
Paulox 11:13, Dic 21, 2005 (EST) (aggiornamento alla versione 0.8.0 e riformattazione della pagina)
Sancious 23:13, Dic 13, 2006 (CET) "(aggiornamento linea di comando wrapper vdeqemu in sezione QEMU Networking)"