|
|
Riga 1: |
Riga 1: |
| == INSTALLAZIONE QEMU + QVM86 o KQEMU PER DEBIAN / UBUNTU == | | =Introduzione= |
| | A causa delle numerose migrazioni gli utenti di testing possono trovarsi davanti a qualche problema relativo alla mancanza di pacchetti nel repository ufficiale Debian... |
|
| |
|
| === Qemu col supporto qvm86 (libero) ===
| | Questo � dovuto alla politica di gestione di testing, la quale richiede che un pacchetto debba avere le seguenti caratteristiche, prima di entrare in testing: |
| | * Sia stato in unstable per almeno 10 giorni (nel caso di priorit� bassa (''low'')); |
| | * Non abbia Bug gravi; |
| | * Le dipendenze richieste siano completamente soddisfatte in testing. |
|
| |
|
| 1. Assicuratevi di aver installato i pacchetti necessari a scaricare e compilare il tutto:
| | =Lo stato di un pacchetto= |
| * '''ssh''' e '''cvs''' (per scaricare qvm86 occorre andare via cvs remoto)
| | � possibile conoscere lo stato di un pacchetto (per l'esattezza di un pacchetto di sorgenti) tramite il sito della [http://qa.debian.org Quality Assurance], nel seguente modo: |
| * '''patch''' (per usare qvm86 con qemu occorre effettuare una piccola patch ai sorgenti di qemu)
| | * ricavare il pacchetto sorgente da cui viene creato il pacchetto binario in questione: |
| * '''gcc-3.3''' oppure '''gcc-3.4''' (qemu non � ancora compilabile col gcc 4.0)
| | <pre> $ apt-cache show nomepacchetto | grep Source</pre> |
| * '''libsdl1.2-dev''' | | * recarsi su http://packages.qa.debian.org ed inserire il nome del pacchetto sorgente |
| * '''zlib1g-dev'''
| | * leggere lo stato del pacchetto! |
| * '''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.
| | {{Box|Nota:|� possibile automatizzare la procedura inserendo, nella pagina http://packages.qa.debian.org, il nome del pacchetto binario... il sistema mostrer� il nome del pacchetto di sorgenti relativo ed in 10 secondi reindirizzer� alla pagina relativa al suo stato.}} |
|
| |
|
| Esempio:
| | =Creare i pacchetti binari per la propria distribuzione= |
| <pre>
| | Premetto che la seguente procedura � utilizzabile prevalentemente per il backport da ''unstable'' a ''testing'', mentre potrebbe dare problemi per il backport da ''testing'' a ''stable''. |
| 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.
| | ==Pacchetti necessari== |
| | Per eseguire le operazioni illustrare in questa pagina sono necessari i seguenti pacchetti, normalmente utilizzati per lo sviluppo dei pacchetti Debian: |
| | * dpkg-dev |
| | * devscripts |
| | * fakeroot |
|
| |
|
| Prima di iniziare, dovete verificare che il vostro kernel supporti i seguenti moduli:
| | ==Scaricare i sorgenti== |
| tun: "Network device support" -> "Universal TUN/TAP device driver support"
| | Dalla pagina relativa allo stato del pacchetto � possibile scaricare i sorgenti necessari per questo backport (nel riquadro '''Source files'''). I file sono, per l'esattezza, 3: |
| IP masquerade: "Networking options" -> "IP: Netfilter Configuration"
| | * l'archivio contenente i sorgenti originali, '''.orig.tar.gz''' |
| bridging: "Networking options" -> "802.1d Ethernet Bridging"
| | * l'archivio contenente le patch per creare il pacchetto, '''.patch.gz''' |
| | * il file contenente la descrizione del pacchetto, '''.dsc''' |
|
| |
|
| e dovete installare il pacchetto bridge-utils:
| | Una volta scaricati in una unica directory � necessario estrarli: |
| <pre> | | <pre> |
| apt-get install bridge-utils
| | $ dpkg-source -x nomepacchetto.....dsc |
| </pre> | | </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.
| | ==Scaricare le dipendenze== |
| | | Prima di procedere alla compilazione � necessario installare i pacchetti ''-dev'' necessari per la compilazione... |
| 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:
| | Anche in questo caso, come sempre del resto, il sistema di gestione dei pacchetti Debian ci viene in aiuto: � infatti necessario un semplice |
| <pre> | | <pre> |
| wget http://puzzle.dl.sourceforge.net/sourceforge/vde/vde-1.5.9.tar.gz
| | # apt-get build-deps nomepacchetto |
| tar -xvzf vde-1.5.9.tar.gz
| |
| cd vde-1.5.9
| |
| ./configure
| |
| make
| |
| make install
| |
| </pre> | | </pre> |
| | per installare le dipendenze necessarie alla compilazione. |
|
| |
|
| Una volta fatto questo, siete pronti per configurare tun e il bridge:
| | {{Box|Nota:|il comando potrebbe non risolvere tutte le dipendenze (nel peggiore dei casi potrebbe non trovare informazioni riguardo a queste). In questo caso, quindi, bisogner� installarle a mano. Le dipendenze mancanti verranno mostrate nell'output di ''dpkg-buildpackage'' e dovranno essere installate come viene installato normalmente un pacchetto. Non sar� possibile continuare nel processo di compilazione se non si soddisfano tutte le dipendenze di compilazione.}} |
| | |
| <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):
| | ==Compilare il pacchetto== |
| | Una volta installate le dipendenze si pu� procedere con la compilazione del pacchetto: |
| | * bisogna entrare nella directory dei sorgenti creata durante l'estrazione dei sorgenti; |
| | * per far partire la compilazione si pu� usare il seguente comando: <pre>$ fakeroot dpkg-buildpackage</pre> |
|
| |
|
| *[http://ubuntuforums.org/showthread.php?t=39513 http://ubuntuforums.org/showthread.php?t=39513]
| | Se tutto procede senza problemi verranno creati, nella directory precedente, i pacchetti binari frutto della compilazione... per installarli � sufficiente il classico |
| *[http://fabrice.bellard.free.fr/qemu/index.html http://fabrice.bellard.free.fr/qemu/index.html]
| | <pre> # dpkg -i nomepacchetto.....deb</pre> |
| *[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)
| | =Conclusioni= |
| The_monk_ey ( skype: the_monk_ey )
| | Questo rappresenta il metodo pi� semplice per ottenere un pacchetto per testing partendo da un pacchetto sorgente di unstable, anche se non sempre pu� essere applicato (a causa di dipendenze non risolte perch� non presenti in testing (in questo caso � necessario partire dal backporting delle librerie mancanti) o perch� le versioni dei pacchetti in testing non sono abbastanza aggiornate per concludere con successo la compilazione (evento molto raro)). |
|
| |
|
| [[Utente:ianezz|ianezz]] 17:40, Nov 25, 2005 (CET) (per la parte di compilazione ed installazione)
| | Nel Backport Howto vedremo, pi� in dettaglio, come eseguire un Backport da ''testing''/''unstable'' verso ''stable''... |