18
contributi
Nessun oggetto della modifica |
(Nota su scompattazione e compilazione da NON farsi come root.) |
||
Riga 1: | Riga 1: | ||
= | == INSTALLAZIONE QEMU + QVM86 o KQEMU PER DEBIAN / UBUNTU == | ||
= | |||
== | === Qemu col supporto qvm86 (libero) === | ||
1. 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 od usate una Debian unstable con un kernel recente). La versione pu� essere individuata eseguendo il comando <code>uname -r</code>. | |||
2. Scaricate da [http://fabrice.bellard.free.fr/qemu/download.html http://fabrice.bellard.free.fr/qemu/download.html] gli archivi dei codici sorgenti di QEMU, scompattateli in una directory e poi entrateci. | |||
Esempio: | |||
<pre> | |||
rob@klingon:/home/rob$ tar zxvf qemu-0.7.2.tar.gz | |||
rob@klingon:/home/rob$ cd qemu-0.7.2</pre> | |||
3. Scaricate via cvs i sorgenti di qvm86, in modo che siano all'interno della directory dei sorgenti di qemu. | |||
---- | Esempio: | ||
; | <pre> | ||
rob@klingon:/home/rob/qemu-0.7.2$ export CVS_RSH=ssh | |||
rob@klingon:/home/rob/qemu-0.7.2$ export CVSROOT=:ext:anoncvs@savannah.nongnu.org:/cvsroot/qvm86 | |||
rob@klingon:/home/rob/qemu-0.7.2$ cvs -z3 co qvm86</pre> | |||
4. Applicate dalla directory dei sorgenti di qemu la patch provvista da qvm86. | |||
Esempio: | |||
<pre> | |||
rob@klingon:/home/rob/qemu-0.7.2$ patch -p0 < qvm86/patch.qvm86</pre> | |||
5. Configurate l'ambiente di compilazione avviando lo script <code>./configure</code>. | |||
Verificate che sia tutto ok, poi compilate il tutto ed installate. | |||
Esempio: | |||
<pre> | |||
rob@klingon:/home/rob/qemu-0.7.2$ ./configure --cc=gcc-3.3 | |||
rob@klingon:/home/rob/qemu-0.7.2$ make</pre> | |||
Se dopo aver avviato <code>make</code> ci sono errori di compilazione, ci si pu� limitare a compilare il solo modulo di emulazione x86, aggiungendo l'opzione <code>--target-list=i386-softmmu</code> al comando <code>./configure</code>. | |||
<pre> | |||
rob@klingon:/home/rob/qemu-0.7.2$ make clean | |||
rob@klingon:/home/rob/qemu-0.7.2$ ./configure --cc=gcc-3.3 --target-list=i386-softmmu | |||
rob@klingon:/home/rob/qemu-0.7.2$ make</pre> | |||
Se non ci sono errori, ora potete diventare root ed installare qemu. | |||
<pre> | |||
rob@klingon:/home/rob/qemu-0.7.2$ su | |||
Password: | |||
rob@klingon:/home/rob/qemu-0.7.2# make install</pre> | |||
A questo punto qemu � installato in <code>/usr/local/bin/qemu</code>, ed il modulo qvm86 si trova in <code>/lib/modules/''versione_del_kernel''/misc/qvm86.ko</code>. | |||
4. Prima di eseguire qemu va caricato il modulo del kernel <code>qvm86</code>, va eventualmente creato <code>/dev/qvm86</code> (usato per interagire col kernel) e gli vanno dati permessi adeguati. | |||
Esempio di procedura manuale (per chi '''non ha''' installato il pacchetto udev):''' | |||
<pre> | |||
# Queste due operazioni sono da fare come root una volta sola: | |||
rob@klingon:/home/rob/qemu-0.7.2# mknod /dev/qvm86 c 222 0 | |||
rob@klingon:/home/rob/qemu-0.7.2# chmod 666 /dev/qvm86 | |||
# Questa operazione va eseguita come root ad ogni avvio del sistema per usare qemu | |||
rob@klingon:/home/rob/qemu-0.7.2# modprobe qvm86</pre> | |||
Esempio di procedura manuale (per chi '''ha''' installato il pacchetto udev): | |||
<pre> | |||
# Queste due operazioni vanno eseguite come root ad ogni avvio del sistema | |||
rob@klingon:/home/rob/qemu-0.7.2# modprobe qvm86 | |||
rob@klingon:/home/rob/qemu-0.7.2# chmod 666 /dev/qvm86</pre> | |||
Per far eseguire '''automaticamente''' queste operazioni ad ogni avvio del sistema (consigliato): | |||
* diventate root (<code>su -</code>) | |||
* modificate il file <code>/etc/modules</code> aggiungendo la riga <code>qvm86</code>, in modo che il modulo venga automaticamente caricato al boot. | |||
* create il file <code>/etc/modprobe.d/qvm86</code> contenente le seguenti righe: | |||
** per chi '''non ha''' installato il pacchetto udev: | |||
<pre> | |||
install qvm86 /sbin/modprobe --ignore-install qvm86 \ | |||
&& (test -c /dev/qvm86 || mknod /dev/qvm86 c 222 0) \ | |||
&& chmod 666 /dev/qvm86</pre> | |||
:* per chi '''ha''' installato il pacchetto udev: | |||
<pre> | |||
install qvm86 /sbin/modprobe --ignore-install qvm86 && chmod 666 /dev/qvm86</pre> | |||
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 <code>/usr/local/bin/qemu</code>''': potete farlo eseguendo <code>type qemu</code>. | |||
=== Qemu col supporto kqemu (proprietario) === | |||
1. 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''' | |||
* '''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 <code>uname -r</code>. | |||
2. Scaricate da [http://fabrice.bellard.free.fr/qemu/download.html http://fabrice.bellard.free.fr/qemu/download.html] gli archivi dei codici sorgenti di QEMU e di KQEMU, e scompattateli in modo che la directory di kqemu venga estratta all'interno della directory di qemu. Quindi entrate nella directory dei sorgenti. | |||
Esempio: | |||
<pre> | |||
rob@klingon:/home/rob$ tar zxvf qemu-0.7.2.tar.gz | |||
rob@klingon:/home/rob$ tar zxvf kqemu-0.7.2.tar.gz -C qemu-0.7.2 | |||
rob@klingon:/home/rob$ cd qemu-0.7.2</pre> | |||
3. Configurate l'ambiente di compilazione avviando lo script <code>./configure</code>. | |||
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. | |||
Esempio: | |||
<pre> | |||
rob@klingon:/home/rob/qemu-0.7.2$ ./configure --cc=gcc-3.3 | |||
rob@klingon:/home/rob/qemu-0.7.2$ make</pre> | |||
Se dopo aver avviato <code>make</code> ci sono errori di compilazione, ci si pu� limitare a compilare il solo modulo di emulazione x86, aggiungendo l'opzione <code>--target-list=i386-softmmu</code> al comando <code>./configure</code>. | |||
<pre> | |||
rob@klingon:/home/rob/qemu-0.7.2$ make clean | |||
rob@klingon:/home/rob/qemu-0.7.2$ ./configure --cc=gcc-3.3 --target-list=i386-softmmu | |||
rob@klingon:/home/rob/qemu-0.7.2$ make</pre> | |||
Se non ci sono errori, ora potete diventare root ed installare qemu. | |||
<pre> | |||
rob@klingon:/home/rob/qemu-0.7.2$ su | |||
Password: | |||
rob@klingon:/home/rob/qemu-0.7.2# make install</pre> | |||
A questo punto qemu � installato in <code>/usr/local/bin/qemu</code>, ed il modulo kqemu si trova in <code>/lib/modules/''versione_del_kernel''/misc/kqemu.ko</code>. | |||
4. Prima di eseguire qemu va caricato il modulo del kernel <code>kqemu</code>, va eventualmente creato <code>/dev/kqemu</code> (usato per interagire col kernel) e gli vanno dati permessi adeguati. | |||
Esempio di procedura manuale (per chi '''non ha''' installato il pacchetto udev):''' | |||
<pre> | |||
# Queste due operazioni sono da fare come root una volta sola: | |||
rob@klingon:/home/rob/qemu-0.7.2# mknod /dev/kqemu c 250 0 | |||
rob@klingon:/home/rob/qemu-0.7.2# chmod 666 /dev/kqemu | |||
# Questa operazione va eseguita come root ad ogni avvio del sistema | |||
rob@klingon:/home/rob/qemu-0.7.2# modprobe kqemu</pre> | |||
Esempio di procedura manuale (per chi '''ha''' installato il pacchetto udev): | |||
<pre> | |||
# Queste due operazioni vanno eseguite come root ad ogni avvio del sistema | |||
rob@klingon:/home/rob/qemu-0.7.2# modprobe kqemu major=0 | |||
rob@klingon:/home/rob/qemu-0.7.2# chmod 666 /dev/kqemu</pre> | |||
Per far eseguire '''automaticamente''' queste operazioni ad ogni avvio del sistema (consigliato): | |||
* diventate root (<code>su -</code>) | |||
* modificate il file <code>/etc/modules</code> aggiungendo la riga <code>kqemu</code>, in modo che il modulo venga automaticamente caricato al boot. | |||
* create il file <code>/etc/modprobe.d/kqemu</code> contenente le seguenti righe: | |||
** per chi '''non ha''' installato il pacchetto udev: | |||
<pre> | |||
install kqemu /sbin/modprobe --ignore-install kqemu \ | |||
&& (test -c /dev/kqemu || mknod /dev/keqmu c 250 0) \ | |||
&& chmod 666 /dev/kqemu</pre> | |||
:* per chi '''ha''' installato il pacchetto udev: | |||
<pre> | |||
options kqemu major=0 | |||
install kqemu /sbin/modprobe --ignore-install kqemu && chmod 666 /dev/kqemu</pre> | |||
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 <code>/usr/local/bin/qemu</code>''': potete farlo eseguendo <code>type qemu</code>. | |||
== AVVIARE QEMU == | |||
1. (facoltativo) Creazione di un file immagine per il disco (facoltativo) | |||
<pre> | |||
rob@klingon:/home/rob$ qemu-img create hd.img 3500M | |||
</pre> | |||
2. Eseguiamo qemu: | |||
(cambiare il boot per fare l'installazione da cd etc..) | |||
Per semplicita` qui avviamo qemu da root (gli utenti comuni in Debian solitamente non possono leggere direttamente /dev/cdrom), tuttavia qemu puo` tranquillamente essere eseguito come utente comune (consigliato). | |||
<pre> | |||
rob@klingon# qemu -boot c -cdrom /dev/cdrom -hda /home/rob/hd.img \ | |||
-user-net -pci -m 256 -k it -localtime | |||
</pre> | |||
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 === | |||
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: | |||
<pre> | |||
apt-get install bridge-utils | |||
</pre> | |||
[http://vde.sourceforge.net 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: | |||
<pre> | |||
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 | |||
</pre> | |||
Una volta fatto questo, siete pronti per configurare tun e il bridge: | |||
<pre> | |||
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 | |||
</pre> | |||
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: [http://www.itaca.coopsoc.it/download/sources/vde_qemu vde_qemu], che va salvato in /etc/init.d. Dopodich�: <pre>chmod u+x /etc/init.d/vde_qemu | |||
update-rc.d -n vde_qemu defaults 90</pre> | |||
Ora tutto � pronto per lanciare qemu, con l'ultima avvertenza che dovete usare l'apposito wrapper vdeqemu: | |||
<pre> | |||
vdeqemu -hda disk.img -localtime | |||
</pre> | |||
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 puo' essere scaricata qui, va installata sul Win9x GUEST. | |||
[http://klingon.homelinux.net/files/amnhltm.zip http://klingon.homelinux.net/files/amnhltm.zip] | |||
Link utili (in inglese): | |||
*[http://ubuntuforums.org/showthread.php?t=39513 http://ubuntuforums.org/showthread.php?t=39513] | |||
*[http://fabrice.bellard.free.fr/qemu/index.html http://fabrice.bellard.free.fr/qemu/index.html] | |||
*[http://fabrice.bellard.free.fr/qemu/qemu-doc.html http://fabrice.bellard.free.fr/qemu/qemu-doc.html] | |||
*[http://www.debian-administration.org/?article=40 http://www.debian-administration.org/?article=40] | |||
*[http://oui.com.br/n/content.php?article.21 http://oui.com.br/n/content.php?article.21] | |||
*[http://www.carlsonhome.net/computer_help_log.php http://www.carlsonhome.net/computer_help_log.php] | |||
*[http://savannah.nongnu.org/projects/qvm86/ http://savannah.nongnu.org/projects/qvm86/] | |||
-- | |||
[[Utente:Themonkey|Themonkey]] 20:31, Ago 19, 2005 (EDT) | |||
The_monk_ey ( skype: the_monk_ey ) | |||
[[Utente:ianezz|ianezz]] 17:40, Nov 25, 2005 (CET) (per la parte di compilazione ed installazione) |
contributi