Mail Server Sicuro con Postfix: differenze tra le versioni

m
Riga 1: Riga 1:
== INSTALLAZIONE QEMU + KQEMU PER DEBIAN / UBUNTU ==
==Pacchettizzare ed installare Xorg su Debian Sid==
===Introduzione===


1. Assicuratevi di aver installato i pacchetti necessari a compilare il tutto:
Xorg ormai ufficialmente entrato in Sid ed in Etch. La guida � dunque diventata obsoleta, ma viene lasciata per motivi storici e didattici.
* '''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.
Buona Lettura ;-).


Esempio:
===Descrizione===
<pre>
Questa guida tenter� di illustrare i passi base necessari a chi volesse cimentarsi nella compilazione ed installazione di xorg su sid.<br>
rob@klingon:/home/rob$ tar zxvf qemu-0.7.2.tar.gz
Il nostro obiettivo � creare una serie di pacchetti .deb adattando quelli presenti nei repository dei sorgenti ubuntu e personalizzandoli per sid.<br>
rob@klingon:/home/rob$ tar zxvf kqemu-0.7.2.tar.gz -C qemu-0.7.2
Tutto questo lavoro di compilazione serve ad evitare di dover installare ulteriori pacchetti dal repository ubuntu, le cui versioni sono spesso presenti soltanto in quel particolare repository (molti pacchetti vengono personalizzati e modificati dal team di sviluppo) e che renderebbero il nostro sistema un misto tra ubuntu e debian.<br>
rob@klingon:/home/rob$ cd qemu-0.7.2</pre>
Tenuta presente comunque la buona compatibilit� dei sorgenti dei pacchetti ubuntu rispetto ai .deb prelevati da debian.org (specialmente in relazione alle dipendenze di ciascun pacchetto), � possibile ricostruire l'intero xorg sfruttando le librerie necessarie prelevandole  per�, direttamente da sid.<br>
Faccio notare come la durata di tutta l'operazione sia un fattore importante da valutare: sulla mia macchina (Athlon xp 2000+, 256Mb), ad esempio, sono necessari oltre '''100 minuti''' per portare a termine tutto il processo di compilazione.<br>  


3. Configurate l'ambiente di compilazione avviando lo script <code>./configure</code>.
===Configurazione sistema===
Verificate che sia tutto ok e che il supporto kqemu sia attivato, in modo che venga compilato
Innanzitutto dobbiamo aggiungere ad i repository dei pacchetti che usiamo abitualmente, anche quello di ubuntu (NB: abbiamo bisogno solo dei sorgenti, quindi basta la sola riga con deb-src), commentando temporaneamente le altre righe deb-src presenti nel nostro '''sources.list'''.<br>
il modulo corretto per il vostro kernel. Poi compilate il tutto ed installate.


Esempio:
<pre>deb-src http://us.archive.ubuntu.com/ubuntu hoary universe main restricted</pre>
<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>.
Dopo aver aggiunto tale riga, provvediamo ad aggiornare le liste di apt con il solito '''apt-get update'''.<br>
<pre>
Durante l'operazione, possiamo controllare se viene scaricata anche la lista appena inserita per i pacchetti di ubuntu.
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.
Prepariamo adesso una directory di nome '''xorg''', con il comando <pre>mkdir xorg</pre> questa accoglier� i sorgenti prelevati dalla rete, i file oggetto prodotti dalla compilazione ed infine i pacchetti .deb.<br>
Per esperienza personale, consiglio di creare la cartella all'interno di una partizione con '''almeno 4.5 gb di spazio libero'''.


<pre>
===Modifica degli script di compilazione===
rob@klingon:/home/rob/qemu-0.7.2# su
Posizionamoci nella directory appena creata, e con <pre>apt-get source xorg</pre> procediamo al download dei sorgenti e alla scompattazione dei sorgenti di xorg.<br>
Password:
Attualmente, (versione '''6.8.2-10'''), il download consiste di circa '''51 MB''' di archivi.<br>
rob@klingon:/home/rob/qemu-0.7.2# make install</pre>
Alla fine del download, notiamo che sono stati creati all'interno della directory xorg, alcuni file ed una directory.


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>.
* situazione del nostro filesystem
<pre>[xorg]
|
|_ [xorg-6.8.2]
|  |
|  |_ [debian]
|  |_ ALTRI_FILES
|
|_ xorg_6.8.2-10.diff.gz
|_ xorg_6.8.2-10.dsc
|_ xorg_6.8.2.orig.tar.gz</pre>


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.  
La directory '''xorg-6.8.2''' raccoglie i sorgenti scompattati dell'archivio orginale di xorg (oltre ai file necessari alla compilazione di un sorgente debian), a cui non sono ancora state applicate le varie patch apportate dali sviluppatori ubuntu.<br>
I file, invece, rappresentano l'archivio con il sorgente originale, il file con le patch approntate dal team di ubuntu e quello con la descrizione del pacchetto debian.<br>
Posizionamoci pertanto nella sottodirectory '''debian''' di xorg-6.8.2.


Esempio di procedura manuale (per chi '''non ha''' installato il pacchetto udev):'''
Affinch� si possano adattare i sorgenti a sid, dobbiamo modificare 2 file: nel primo caso la modifica � pi� che altro cosmetica, nel secondo caso invece � una scelta obbligata.
<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
Con il nostro editor preferito, apriamo pertanto il file '''changelog'''.<br>
rob@klingon:/home/rob/qemu-0.7.2# modprobe kqemu</pre>
Questo file mantiene lo storico delle modifiche fatte dagli sviluppatori ubuntu a partire dalla versione stable rilasciata dal team di xorg: tale file viene regolato da una sintassi ben precisa, in cui anche gli spazi hanno una loro funzione e pertanto vanno tenuti in considerazione per la buona riuscita della compilazione.<br>
E' necessario pertanto, prestare molta attenzione alla disposizione dei vari campi e al numero degli spazi che li delimitano.<br>
La entry pi� recente presente nella versione attuale del file changelog ci appare cos�:
<pre>xorg (6.8.2-10) hoary; urgency=low


Esempio di procedura manuale (per chi '''ha''' installato il pacchetto udev):
  * Include patch from Ben Herrenschmidt to fix assertion of DDC GPIO lines
<pre>
    after a DDC probe had finished, which would render Apple Studio Displays
# Queste due operazioni vanno eseguite come root ad ogni avvio del sistema
    useless.
rob@klingon:/home/rob/qemu-0.7.2# modprobe kqemu major=0
  * Don't reset all templates when migrating from xserver-xfree86; this will
rob@klingon:/home/rob/qemu-0.7.2# chmod 666 /dev/kqemu</pre>
    render the template migration useless.  Don't mess with $RECONFIGURE when
    migrating from xfree86.  Set use_sync_ranges true when upgrading from
    xfree86 (closes: Ubuntu#8562, Ubuntu#8626).
  * Use debug_echo liberally in xserver-xorg.postinst.in to tell us why we're
    writing out sync ranges.


Per far eseguire '''automaticamente''' queste operazioni ad ogni avvio del sistema (consigliato):
-- Daniel Stone <daniel.stone@ubuntu.com> Tue,  5 Apr 2005 08:38:20 +1000</pre>
* 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.
Affinch� possiamo ottenere una nostra versione personalizzata dei pacchetti, dobbiamo aggiungere precendetemente al gruppo di linee appena descritto (quindi all'inizio del file), qualcosa del genere:
* create il file <code>/etc/modprobe.d/kqemu</code> contenente le seguenti righe:
** per chi '''non ha''' installato il pacchetto udev:  
<pre>xorg (6.8.2-10-ld10) sid; urgency=low
<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.
  * [Ld-xorg] packages for Debian Sid, based on Ubuntu sources.


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>.
-- Mario "Ldonesty" Di Nitto <ldonesty@debianizzati.org> Sun, 15 May 2005 10:25:32 +0100</pre>


5. (facoltativo) Creazione di un file immagine per il disco (facoltativo)
mantenendo uno spazio di separazione con il gruppo successivo.


<pre>
Queste righe possono essere personalizzate secondo i propri gusti tenendo presente che '''6.8.2-10-ld10''' sar� la versione che comparir� nel nome di ogni pacchetto, dove -ld indica la nostra estensione personale, la quale *dovr�* essere seguita da un numero a scelta: es -myExt1.<br>
rob@klingon:/home/rob$ qemu-img create hd.img 3500M
Infatti la mancanza di tale valore pregiudica irreparabilmente la compilazione e creazione dei pacchetti (lo script preposto all'operazione, si rifiuter� di assemblare i .deb)
</pre>


6. Eseguiamo qemu:
A questo punto salviamo il file changelog e dedichiamoci invece a '''control'''.<br>
(cambiare il boot per fare l'installazione da cd etc..)
La struttura del file control si puo riassumere in una sequenza di "blocchi" all'interno dei quali sono contenute tutte le informazioni proprie di un pacchetto debian raccolte per riga (ad esempio: la descrizione, le dipendenze, i conflitti, etc etc). <br>
Dato che la versione di xorg su cui stiamo lavorando proviene dal repository ubuntu, � possibile che siano presenti alcune dipendenze relative a pacchetti contenuti solamente in tale repository.<br>
Pertanto questi pacchetti risulterebbero non disponibili all'atto dell'installazione sulla nostra sid, pregiudicando cos� tutta l'operazione.<br>
Possiamo evitare questa situazione ricercando nelle sole righe Depends del file control, i riferimenti ai pacchetti di ubuntu (presentano la segnatura "ubuntu" all'interno del numero di versione).<br>
Nel nostro caso, scorrendo il file (possiamo usare la funzione di ricerca del nostro editor) notiamo che alla riga 1895 � presente una referenza al pacchetto '''lsb-base''' nella versione ('''1.3-9ubuntu2''').


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).
Dopo aver controllato che in sid esista tale pacchetto in una versione per lo meno uguale (meglio se superiore) a quella citata dal file control (possiamo usare '''apt-cache show lsb-base | grep Version''' per questo scopo), cancelliamo la parola "ubuntu" ed ogni eventuale numero postposto, lasciando quindi solo il numero della versione del pacchetto, infine salviamo.<br>
Quindi la versione di lsb-base nella riga Depends ci apparir� come ('''1.3-9''').<br>
Relativamente a questa versione di xorg, non ci sono altre referenze da modificare; nel caso in cui, invece, fossimo in presenza di parecchie dipendenze da sistemare dobbiamo valutare ciascun caso separatamente, ripetendo tutta la procedura di controllo e modifica.


<pre>
===Controllo dipendenze e avvio compilazione===
rob@klingon# qemu -boot c -cdrom /dev/cdrom -hda /home/rob/hd.img \
A questo punto siamo in grado di avviare la compilazione/creazione dei pacchetti di xorg usando il comando '''dpkg-buildpackage''' dopo esserci posizionati nella cartella xorg-6.8.2 ed aver ottenuto i privilegi di root.
              -user-net -pci -m 256 -k it -localtime
</pre>


Le principali opzioni di qemu sono:
Molto probabilmente ci verr� notificato che alcune dipendenze non sono soddisfatte per portare a termine la compilazione:


* '''-m ''megabyte'' ''' --> memoria per l'emulatore = 256MB
es.
* '''-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 ===
<pre>dpkg-checkbuilddeps: Unmet build dependencies: flex bison groff zlib1g-dev |
libz-dev libpam0g-dev | libpam-dev libfreetype6-dev rman lynx
libglide2-dev (>> 2001.01.26) libglide3-dev (>= 2002.04.10-7) libpng12-dev |
libpng-dev libexpat1-dev libfontconfig1-dev libxft-dev (>= 2.1.2) libxcursor-dev
dbs m4 libxrender-dev (>= 0.9.0) sharutils</pre>


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.
Per ovviare a questo problema possiamo installare i pacchetti suggeriti usando il comando:


Prima di iniziare, dovete verificare che il vostro kernel supporti i seguenti moduli:
<pre>apt-get install flex bison groff zlib1g-dev libpam0g-dev libfreetype6-dev \
  tun: "Network device support" -> "Universal TUN/TAP device driver support"
rman lynx libglide2-dev libglide3-dev libpng12-dev libexpat1-dev libfontconfig1-dev \
  IP masquerade: "Networking options" -> "IP: Netfilter Configuration"
libxft-dev libxcursor-dev dbs m4 libxrender-dev sharutils</pre>
  bridging: "Networking options" -> "802.1d Ethernet Bridging"


e dovete installare il pacchetto bridge-utils:
A questo punto possiamo rilanciare il comando '''dpkg-buildpackage''' (a cui potremo preporre il comando '''time''', per visualizzare la durata effettiva di tutta l'operazione) ed attendere che i pacchetti vengano creati.
<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.
===Installazione===
Posizionamoci innanzitutto nella cartella dove sono contenuti i file .deb di xorg.


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:
Possiamo avere 3 situazioni:
<pre>
*  Macchina pulita: nessun xfree/xorg precedentemente installato
wget http://puzzle.dl.sourceforge.net/sourceforge/vde/vde-1.5.9.tar.gz
*  Xorg in una versione precedente
tar -xvzf vde-1.5.9.tar.gz
*  Xfree preso da sid
cd vde-1.5.9
./configure
make
make install
</pre>


Una volta fatto questo, siete pronti per configurare tun e il bridge:
<br>La prima situazione pu� essere risolta (NB, si potrebbe fare anche con un repository locale) con <pre>dpkg -i x-window-system-core*.deb </pre> aggiungendo volta per volta i pacchetti che vengono richiesti come mancanti in coda a dpkg -i, ovvero
<pre>dpkg -i PKT1 PKT2 PKT3 PKT4</pre> dove i vari PKT corrispondono al nome del pacchetto '''completo di estensione'''.


<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
[[Utente:Ldonesty|Ldonesty]]
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]
 
--
 
[[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)
78

contributi