Old:Installazione Qemu con supporto accelerazione Kqemu: differenze tra le versioni

Da Guide@Debianizzati.Org.
Vai alla navigazione Vai alla ricerca
(Aggiunte istruzioni per qvm86)
 
(21 versioni intermedie di 11 utenti non mostrate)
Riga 1: Riga 1:
==Introduzione==
{{Old}}
Con questa guida intendo spiegare all'utente debian come configurare un server mail basato su Postfix (http://www.postfix.org).
==Installazione QEMU con qvm86/kqemu per Debian/Ubuntu==
Postfix � un MTA abbastanza sicuro e di recente sviluppo, molto semplice da usare e per alcuni � considerato il successore di sendmail per altro troppo complicato da gestire e con noti problemi di sicurezza.


==Installazione di Postfix==
=== Qemu con supporto qvm86 (libero, ma sperimentale) ===
Prima di tutto abbiamo bisogno di due demoni uno per la gestione del protocollo pop3 e uno per l'imap. Io consiglio popa3d e imapd


====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 <code>uname -r</code>.
====2. Recupero file QEMU====
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 come '''utente diverso da root''' scompattateli in una directory e poi entrateci.
<pre>
$ tar zxvf qemu-0.8.0.tar.gz
$ cd qemu-0.8.0
</pre>
====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'''.
<pre>
$ export CVS_RSH=ssh
$ export CVSROOT=:pserver:anonymous@cvs.savannah.nongnu.org:/sources/qvm86
$ cvs -z3 co qvm86
</pre>
====4. Applicazione patch====
Applicate dalla directory dei sorgenti di qemu la patch provvista da qvm86:
<pre>
$ patch -p0 < qvm86/patch.qvm86
</pre>
====5. Configurazione====
Configurate l'ambiente di compilazione avviando lo script <code>./configure</code>.
Verificate che sia tutto ok, poi compilate il tutto ed installate:
<pre>
<pre>
# apt-get update
$ ./configure --cc=gcc-3.3
# apt-get install popa3d uw-imapd
$ make
</pre>
</pre>
Se avviando <code>./configure</code> 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.


fatto questo in /etc/inetd.conf verranno aggiunti i servizi per il pop3 e l'imapd.
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>.  
Procediamo all'installazione dell'MTA vero e proprio
 
<pre>
<pre>
# apt-get install postfix
$ make clean
$ ./configure --cc=gcc-3.3 --target-list=i386-softmmu
$ make
</pre>
</pre>
 
Se non ci sono errori, ora potete diventare root ed installare qemu.
==Configurazione base==
Quasi tutte le opzioni di configurazione di Postfix si trovano nel file /etc/postfix/main.cf
 
Ecco i principali tag a cui conviene prestare attenzione:
 
<pre>
<pre>
myhostname = valore indica il nome che assumer� il vostro server mail (es: mail.nomedominio.it).
$ su
myorigin = valore indica il dominio usato per la posta inviata dal server.
Password:
mydestination = localhost, altri_valori indicano i domini che il server dovr� riconoscere come locali e che smister� internamente.
# make install
mydomain = valore indica il dominio a cui appartiene il server.
relayhost = valore indica a quale server inoltrare le mail che non si riconoscono come locali.
mailbox_size_limit = 0 indica la dimensione massima delle caselle mail, 0 per nessun limite.
mynetworks = valore altri_valori indica le reti nelle quali il server deve operare (es. 127.0.0.1/8 192.168.0.1/24).
mynetworks_syle = host/subnet/class
</pre>
</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>.


Su questi ultimi due punti � il caso di soffermarsi. Stiamo considerando ora quali ip considerare validi per l'invio della posta.
====6. Caricamento modulo====
 
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.  
Postfix non autorizza l'invio della posta da parte di client non autorizzati a farlo e/o di domini sconosciuti, ovvero non � un open-relay. Questo � un gran vantaggio perch� impedisce che il vostro server possa essere usato per spam o peggio.
 
Tranute mynetworks abilito gli ip presenti nella lista a spedire mail, con mynetworks_style posso specificare uno tra i seguenti tre valori:


;host: l'invio sar� consentito solo per la macchina locale.
Esempio di procedura manuale (per chi '''non ha''' installato il pacchetto udev), queste due operazioni sono da fare come root una volta sola:
;class: l'invio sar� consentito a tutti i client appartenenti al network di classe A, C o C a cui il server appartiene.
<pre>
;subnet: indica che Postfix autorizza alla trasmissione tutti i client che appartengono alla stessa sottorete locale del mailserver e costituisce il valore di default.
# mknod /dev/qvm86 c 222 0
 
# chmod 666 /dev/qvm86
==Gestione degli Alias==
</pre>
In teoria ad ogni utente locale del vostro server corrisponde una sola casella mail.
Si possono per� creare degli alias che corrispondano ad un particolare utente, un secondo indirizzo a cui inviare mail per quel dato user.
Di default esiste il file /etc/aliases che contiene una lista di alias a sinistra e i rispettivi utenti ai quali appartengono a destra.
In /etc/postfix/main.cf basta solo aggiungere


Questa operazione va eseguita come root ad ogni avvio del sistema per usare qemu:
<pre>
<pre>
alias_maps = hash:/etc/aliases
# modprobe qvm86
</pre>
</pre>


e per rendere questo file una mappa utilizzabile da Postfix lanciamo il comando
Esempio di procedura manuale (per chi '''ha''' installato il pacchetto udev), queste due operazioni vanno eseguite come root ad ogni avvio del sistema:
 
<pre>
<pre>
# postalias /etc/aliases
# modprobe qvm86
# chmod 666 /dev/qvm86
</pre>
</pre>


==Multidominio, Virtual Domain e Sender Canonical==
Per far eseguire '''automaticamente''' queste operazioni ad ogni avvio del sistema (consigliato):
Nel caso il vostro Server debba ricevre la posta per pi� domini non dobbiamo fare altro che modificare la tag mydestination come segue
* 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>
<pre>
mydestination = localhost, /etc/postfix/local-domain
install qvm86 /sbin/modprobe --ignore-install qvm86 && chmod 666 /dev/qvm86
</pre>
</pre>
Una volta caricato il modulo e dati i permessi di lettura a <code>/dev/qvm86</code> 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>.


creare il file /etc/postfix/local-domain e inserire li i domini da considerare locali uno per riga senza virgole.
=== Qemu col supporto kqemu (proprietario) ===


Fatto questo conviene preparare un file per la gestione dei domini virtuali in modo tale da associare il giusto dominio al dato utente
====1. Fase Preliminare====
creiamo allora il file /etc/postfix/virtual
Assicuratevi di aver installato i pacchetti necessari a compilare il tutto:
La sintassi da usare � la seguente:
* '''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 <code>uname -r</code>.


====2. Recupero file QEMU/KQEMU====
Scaricate archivi dei codici sorgenti di [http://fabrice.bellard.free.fr/qemu/download.html 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.
<pre>
<pre>
info@dominio1.it marco -> le mail in arrivo per tale indirizzo sono redirezionate a marco
$ tar zxvf qemu-0.8.0.tar.gz
webmaster@dominio2.it andrea@dominio4.it -> le mail verranno inviate a andrea@dominio4.it
$ tar zxvf kqemu-0.7.2.tar.gz -C qemu-0.8.0
@dominio3.com alessandro -> tutte le mail inviate a qualsiasi indirizzo @dominio3.com sono inviate all'utente alessandro
$ cd qemu-0.8.0
</pre>
</pre>
 
====3. Configurazione====
aggiungiamo in /etc/postfix/main.cf
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.
<pre>
<pre>
virtual_maps = hash:/etc/postfix/virtual
$ ./configure --cc=gcc-3.4
$ make
</pre>
</pre>
Se avviando <code>./configure</code> 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 (<code>export CC='/usr/bin/gcc-3.4'</code>), 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 <code>make</code>; se ciò non è stato fatto per tempo allora è necessario entrare nella directory <code>kqemu/</code> ed eliminare quanto già compilato con <code>make clean</code>, poi ritornare nella directory principale e rilanciare <code>make</code>.


e prepariamo la map con il comando
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>
<pre>
# postmap /etc/postfix/virtual
$ make clean
$ ./configure --cc=gcc-3.4 --target-list=i386-softmmu
$ make
</pre>
</pre>
 
Se non ci sono errori, ora potete diventare root ed installare qemu.
Pu� essere utile sempre per la gestione di pi� domini usare un file che associ ad un nome utente un indirizzo mittente particolare.
Creiamo perci� un file /etc/postfix/sender_canonical dove con la precedente sintassi associamo al nome utente l'indirizzo mittente da mostrare nelle mail inviate.
Aggiungiamo in /etc/main.cf la seguente riga:
 
<pre>
<pre>
sender_canonical_maps = hash:/etc/postfix/sender_canonical
$ su
</pre>
</pre>
 
Password:
ed infine prepariamo la map con
 
<pre>
<pre>
# postmap /etc/postfix/sender_canonical
# make install
</pre>
</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>.


==Antivirus - Amavis e ClamaV==
====4. Caricamento modulo====
Passiamo ora alla configurazione dell'antivirus da installare sul vostro MTA.
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.  
Procediamo all'installazione:


Esempio di procedura manuale (per chi '''non ha''' installato il pacchetto udev), queste due operazioni sono da fare come root una volta sola:
<pre>
<pre>
# apt-get install amavisd-new clamav clamav-daemon
# mknod /dev/kqemu c 250 0
# chmod 666 /dev/kqemu
</pre>
</pre>


Dopo l'installazione dobbiamo dire a Postfix di far processare le mail dal vostro antivirus. Aggiungiamo a /etc/postfix/main.cf quanto segue:
Questa operazione va eseguita come root ad ogni avvio del sistema:
 
<pre>
<pre>
content_filter = amavis:[127.0.0.1]:10024
# modprobe kqemu
</pre>
</pre>
mentre nel file /etc/postfix/master.cf:
Esempio di procedura manuale (per chi '''ha''' installato il pacchetto udev), queste due operazioni vanno eseguite come root ad ogni avvio del sistema:
<pre>
<pre>
amavis unix - - n - 2 smtp
# modprobe kqemu major=0
-o smtp_data_done_timeout=1200
# chmod 666 /dev/kqemu
-o disable_dns_lookups=yes
 
127.0.0.1:10025 inet n - n - - smtpd
-o content_filter=
-o local_recipient_maps=
-o relay_recipient_maps=
-o smtpd_restriction_classes=
-o smtpd_client_restrictions=
-o smtpd_helo_restrictions=
-o smtpd_sender_restrictions=
-o smtpd_recipient_restrictions=permit_mynetworks,reject
-o mynetworks=127.0.0.0/8
-o strict_rfc821_envelopes=yes
</pre>
</pre>
 
Per far eseguire '''automaticamente''' queste operazioni ad ogni avvio del sistema (consigliato):
Di per se non si richiedono altre modifiche per il corretto funzionamento, comunque pu� essere utile dare un occhiata al file /etc/amavis/amavisd.conf per eventuali modifiche.
* diventate root (<code>su -</code>);
Il Demone clamav-daemon (freshclam) tiene aggiornato il vostro antivirus aggiornandosi 12 volte al giorno, per eventuali modifiche /etc/clamav/fresclam.conf e /etc/clamv/clamavd.conf
* 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:
==Antispam - Spamassassin==
** per chi '''non ha''' installato il pacchetto udev:  
Pu� essere utile installare un antispam che filtri le mail nel vostro server. Spamassassin � ci� che fa per voi. Installiamolo insieme a procmail:
 
<pre>
<pre>
# apt-get install spamassassin procmail
install kqemu /sbin/modprobe --ignore-install kqemu \
&& (test -c /dev/kqemu || mknod /dev/keqmu c 250 0) \
&& chmod 666 /dev/kqemu
</pre>
</pre>
 
:* per chi '''ha''' installato il pacchetto udev:
a questo punto aggiungiamo in /etc/postfix/main.cf quanto segue
 
<pre>
<pre>
mailbox_command = /usr/bin/spamc | procmail -a "$EXTENSION"
options kqemu major=0
install kqemu /sbin/modprobe --ignore-install kqemu && chmod 666 /dev/kqemu
</pre>
</pre>
Una volta caricato il modulo e dati i permessi di lettura a <code>/dev/kqemu</code> 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>.


abilitiamo spamassassin modificando in /etc/default/spamassassin
== Utilizzo QEMU ==


===Creazione immagine===
Creazione di un file immagine per il disco (facoltativo):
<pre>
<pre>
ENABLE=1
$ qemu-img create hd.img 5G
</pre>
</pre>
===Esecuzione QEMU===
''(cambiare il boot per fare l'installazione da cd etc..)''


aggiungiamo al file /etc/procmailrc quanto segue:
Per semplicità qui avviamo qemu da root (gli utenti comuni in Debian solitamente non possono leggere direttamente <code>/dev/cdrom</code>), tuttavia qemu può tranquillamente essere eseguito come utente comune (consigliato).
 
<pre>
<pre>
DROPPRIVS=yes
# qemu -boot c -cdrom /dev/cdrom -hda /home/rob/hd.img \
:0fw
-user-net -pci -m 256 -k it -localtime
| /usr/bin/spamassassin
</pre>
</pre>


Per settaggi particolari di spamassassin vi consiglio di dare un'occhiata al file /etc/spamassassin/local.cf oppure consultare il sito web http://www.yrex.com/spam/spamconfig.php che vi consente di creare un file di configurazione personalizzato rispondendo alle varie domande.
Le principali opzioni di qemu sono:


==WebMail - Openwebmail==
* <code>'''-m ''megabyte'' '''</code>: memoria per l'emulatore = 256MB
Per poter usufruire del servizio di webmail � necessario usare un server web.
* <code>'''-k it'''</code>: tastiera italiana
Io vi consiglio apache con supporto php e cgi. In questa guida presumo che nel vostro server sia gi� presente apache configurato a dovere.
* <code>'''-localtime'''</code>: usa ora locale (default UTC)
Esistono diversi servizi di WebMail, io ho scelto openwebmail, installiamolo dopo aver aggiunto la repository in /etc/apt/source.list
* <code>'''-pci'''</code>: emula scheda di rete rtl8029 PCI
* <code>'''-boot c'''</code>: avvia dal dico rigido emulato (usare <code>'''-boot d'''</code> per il boot dal cdrom emulato)
* <code>'''-user-net'''</code>: 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.


deb http://people.debian.org/~srua/openwebmail/stable/ ./
=== QEMU Networking ===


<pre>
'''Sezione da revisionare per i cambiamenti nella versione 0.8.0'''
# apt-get install openwebmail
</pre>


Dopo l'installazione recatevi in /etc/openwebmail e date un occhiata al file apache.conf che contiene le specifiche per configurare apache.
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.
Apriamo ora /etc/openwebmail/openwebmail.conf e apportiamo le nostre personalizzazioni.
Attenzione alla voce domainnames, spesso auto pu� portare a dei problemi, vi consiglio di specificare il dominio di appartenenza.
Per altre modifiche consultate il file /usr/share/openwebmail/configs/openwebmail.conf


==Gestione Mailing-List Mailman + Hypermail==
Prima di iniziare, dovete verificare che il vostro kernel supporti i seguenti moduli:
Ogni mailserver che si rispetti ha anche un gestore di mailing-list. Io vi consiglio di installare mailman che possiede un ottimo supporto web per le varie configurazioni:
  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>
<pre>
# apt-get install mailman hypermail
apt-get install bridge-utils
</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.


Fatto questo modificate /etc/postfix/main.cf aggiungendo quanto segue:
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>
<pre>
alias_maps = hash:/etc/aliases
wget http://puzzle.dl.sourceforge.net/sourceforge/vde/vde-1.5.9.tar.gz
hash:/var/lib/mailman/data/aliases
tar -xvzf vde-1.5.9.tar.gz
transport_maps = hash:/etc/postfix/transport
cd vde-1.5.9
relay_domains = lists.vostrodominio.com
./configure
mailman_destination_recipient_limit = 1
make
make install
</pre>
</pre>
 
Una volta fatto questo, siete pronti per configurare tun e il bridge:
creiamo /etc/postfix/transport e trasformiamolo in una mappa
 
<pre>
<pre>
# echo lists.vostrodominio.com mailman: > /etc/postfix/transport
vde_switch -tap tun0 -daemon
# postmap /etc/postfix/transport
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>
</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 <code>/etc/init.d.</code> Dopodiché:
Modificate ora il file /etc/postfix/master.cf:
 
<pre>
<pre>
mailman unix - n n - - pipe flags=FR user=list argv=/var/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
# chmod u+x /etc/init.d/vde_qemu
# update-rc.d -n vde_qemu defaults 90
</pre>
</pre>
 
Ora tutto è pronto per lanciare qemu, con l'ultima avvertenza che dovete usare l'apposito wrapper vdeqemu:
Modificate nel file /etc/mailman/mm_cfg.py i seguenti tag:
 
<pre>
<pre>
DEFAULT_EMAIL_HOST = 'vostrodominio.com'
vdeqemu -hda disk.img -localtime -net nic -net vde
DEFAULT_URL_HOST = 'www.vostrosito.com'
MTA='Postfix'
PUBLIC_EXTERNAL_ARCHIVER = 'hypermail -L it -m /var/lib/mailman/archives/private/%(listname)s.mbox/%(listname)s.mbox -l %(listname)s -d /var/lib/mailman/archives/public/%(listname)s'
PRIVATE_EXTERNAL_ARCHIVER = 'hypermail -c -L it -m /var/lib/mailman/archives/private/%(listname)s.mbox/%(listname)s.mbox -l %(listname)s -d /var/lib/mailman/archives/private/%(listname)s'
PUBLIC_ARCHIVE_URL = '/archives/%(listname)s'
PRIVATE_ARCHIVE_URL = '/archives/%(listname)s'
ARCHIVE_TO_MBOX = 2
</pre>
</pre>
{{Box|NB:| con le release più recenti di qemu non viene più supportato l'argomento <code>-tun-fd</code> che vdeqemu utilizza nella sintassi standard. È perciò necessario lanciare il wrapper vdeqemu con le opzioni <code>-net nic</code> (per attivare l'emulazione di un interfaccia di rete virtuale) e <code>-net vde</code> (per suggerire a vdeqemu di utilizzare la nuova sintassi di qemu)}}


Fate attenzione alle voci PUBLIC_ARCHIVE_URL e PRIVATE_ARCHIVE_URL.
Potete utilizzare tutte le opzioni di qemu, fuorché <code>-user-net</code>, che disattiverebbe <code>tun</code>.
Sono i link che in mailman verranno associati all'archivio delle vostre mailinglist (www.vostrodominio.it/archives/nomelista). di conseguenza un mio consiglio � creare un link simbolico nella DocumentRoot del server apache in questione:
 
<pre>
# ln -s /var/lib/mailman/archives/public/ archives
</pre>


Create poi una lista mailman di default per il server (altrimenti il suo demone si rifiuta di partire)
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.


<pre>
=== Patch per Windows ===
# newlist mailman
</pre>


ed il gioco � fatto.
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.
Per creare nuove mailing-list basta usare il comando newlist e per rimuoverle rmlist.
Per le altre configurazione mailman crea nella vostra directory cgi-bin un programma che vi consente tramite web di accedere alle varie mailing-list per poter modificarne alcuni parametri, anche in questo caso si richiede una corretta configurazione di apache.


----
La patch può essere scaricata [http://klingon.homelinux.net/files/amnhltm.zip qui], va installata sul Win9x GUEST.
Per qualsiasi informazione


www.giorgioravera.it
==Collegamenti esterni==
*[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/]


giorgio@giorgioravera.it
{{Autori
|Autore = [[Utente:Themonkey|Themonkey]] 20:31, Ago 19, 2005 (EDT)
|Estesa_da =
:[[Utente:ianezz|ianezz]] 17:40, Nov 25, 2005 (CET) (per la parte di compilazione ed installazione)''
:[[Utente:Paulox|Paulox]] 11:13, Dic 21, 2005 (EST) (aggiornamento alla versione 0.8.0 e riformattazione della pagina)
:[[Utente:Sancious|Sancious]] 23:13, Dic 13, 2006 (CET) (aggiornamento linea di comando wrapper vdeqemu in sezione QEMU Networking)
}}

Versione attuale delle 10:56, 12 giu 2016

Emblem-important.png 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 riga qvm86, 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 riga kqemu, 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 
Info.png NB:
con le release più recenti di qemu non viene più supportato l'argomento -tun-fd che vdeqemu utilizza nella sintassi standard. È perciò necessario lanciare il wrapper vdeqemu con le opzioni -net nic (per attivare l'emulazione di un interfaccia di rete virtuale) e -net vde (per suggerire a vdeqemu di utilizzare la nuova sintassi di qemu)


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




Guida scritta da: Themonkey 20:31, Ago 19, 2005 (EDT) Swirl-auth20.png Debianized 20%
Estesa da:
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)
Verificata da:

Verificare ed estendere la guida | Cos'è una guida Debianized