* [gentoo-docs-it] Aggiornamenti
@ 2005-07-16 10:40 frgrieco
2005-07-19 23:56 ` Stefano Rossi
0 siblings, 1 reply; 39+ messages in thread
From: frgrieco @ 2005-07-16 10:40 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 381 bytes --]
Doc: power-management-guide.xml
Ver: 1.24
Rev: 1.14
Doc: openafs.xml
Ver: 0.8
Rev: 1.19
Buone vacanze a tutti!
:)
Per Marco Mascherpa...
ho letto su planet.gentoo.org della scrittura di due nuove guide di prossima
pubblicazione (mysql e gdb debug).
Non appena saranno incluse nella documentazione ufficiale, ritienile pure
affidate a me :=) (sempre se non ci sono problemi)
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: power-management-guide.xml --]
[-- Type: text/xml; charset="us-ascii"; name="power-management-guide.xml", Size: 45197 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/power-management-guide.xml,v v 1.10 2005/03/19 16:48:25 yoswink Exp $ -->
<guide link="power-management-guide.xml">
<title>Guida alla Gestione Energetica</title>
<author title="Autore">
<mail link="fragfred@gmx.de">Dennis Nienhüser </mail>
</author>
<author title="Traduzione">
<mail link="frgrieco@aliceposta.it">Francesco Grieco</mail>
</author>
<abstract>
La gestione energetica è l'unica soluzione per estendere la durata della batteria
sui sistemi mobile come i notebook. Questa guida ne illustra la sua configurazione.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<license/>
<version>1.24</version>
<date>10 Giugno 2005</date>
<chapter>
<title>Introduzione</title>
<section>
<title>A cosa serve la Gestione Energetica?</title>
<body>
<p>
Capacità e durata delle batterie dei notebook sono migliorate molto nel corso
degli ultimi anni. Tuttavia i moderni processori consumano molta più energia dei
vecchi e ad ogni nuova generazione di notebook si aggiungono nuove periferiche
"affamate" di energia. Ecco il perchè dell'importanza della gestione energetica.
Applicando buone politiche di risparmio energetico non sarà sempre necessario
acquistare un'altra batteria.
</p>
</body>
</section>
<section>
<title>Breve panoramica</title>
<body>
<p>
Questa guida tratta della gestione energetica per i <e>notebook</e>.
Alcune sezioni potrebbero essere valide anche per i <e>server</e>, altre
non lo sono sicuramente e potrebbero causare problemi. Si consiglia
fortemente di non applicare niente di quello contenuto in questa guida
a macchine server a meno che non si sappia veramente quello che si
sta facendo.
</p>
<p>
Poichè questa guida diventa sempre più lunga, segue una breve panoramica di
ciò che sarà trattato.
</p>
<p>
La sezione <e>Prerequisiti</e> tratta di alcuni requisiti di base necessari
per tutte le sezioni a seguire della guida. Include settaggi del BIOS e
particolari configurazioni nel kernel. I seguenti tre capitoli pongono
l'attenzione sui componenti che tipicamente consumano maggiore energia -
il processore, il display e l'hard disk. Ognuno di essi pùo essere configurato
separatamente. <e>Power Management della CPU</e> mostra come modificare la frequenza del
processore al fine di risparmiare energia senza un eccessivo calo delle performance.
Alcuni stratagemmi in <e>Power Management dell'Hard Disk</e> permettono di
allegerire il carico di lavoro del disco (avendo come effetto anche una
riduzione del livello di rumore). Indicazioni anche per le card Wireless LAN e
per le periferiche USB in <e>Power Management delle altre periferiche</e> mentre
un altro intero capitolo è dedicato agli (ancora sperimentali) <e>Stati di Sleep</e>.
Infine un ultimo capitolo dedicato ai <e>Problemi</e> più comuni in cui
è possibile incorrere.
</p>
</body>
</section>
<section>
<title>Bilancio energetico per ogni componente</title>
<body>
<figure link="/images/energy-budget.png" short="Quale componente consuma quanta
energia?" caption="Peso energetico per ogni componente"/>
<p>
Quasi tutti i componenti possono funzionare in differenti stati - off, sleep, idle, active -
consumando a seconda dei casi diverse quantità di energia. La maggior parte dell'energia
viene consumata dal display LCD, dalla CPU e dagli hard disk. Spesso alcuni di essi
sono in grado di attivare politiche di gestione energetica attraverso il BIOS, ma
una configurazione intelligente del proprio sistema operativo adattabile
a diverse situazioni può ottenere molto di più.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Prerequisiti</title>
<section>
<title>Prima di tutto</title>
<body>
<p>Prima di entrare nei dettagli della gestione energetica per le singole periferiche,
vi sono alcuni requisiti. Dopo aver controllato i settaggi del BIOS, è necessario
attivare alcune opzioni del kernel - in breve ACPI, sleep states e CPU frequency scaling.
Poichè il risparmio energetico comporta una perdita delle prestazioni o un aumento
della latenza, deve essere attivato, naturalmente, solamente in assenza di una
connessione a rete elettrica. Da qui la necessità di un nuovo runlevel <e>battery</e>.
</p>
</body>
</section>
<section>
<title>Il BIOS</title>
<body>
<p>
Per prima cosa è necessario controllare i settaggi relativi al Power Management
nel BIOS. Di solito la soluzione migliore è combinare i settaggi del BIOS alle
politiche del sistema operativo, ma per il momento è meglio disabilitare le
funzioni del BIOS. In questo modo niente interferisce con le nuove politiche
imposte dal sistema operativo. Dopo aver configurato tutto per bene, sarà
necessario riabilitare tutte le funzioni del BIOS.
</p>
</body>
</section>
<section>
<title>Configurazione del Kernel</title>
<body>
<p>
Il supporto dell'ACPI (Advanced Configuration and Power Interface) nel kernel
è ancora in fase di sviluppo. Pertanto è consigliabile usare sempre il kernel
più recente.
</p>
<p>
Nella configurazione del kernel si devono attivare le seguenti opzioni:
</p>
<pre caption="Settaggi minimi del kernel per il Power Management (Kernel 2.6)">
Power Management Options --->
[*] Power Management Support
[ ] Software Suspend
[ ] Suspend-to-Disk Support
ACPI( Advanced Configuration and Power Interface ) Support --->
[*] ACPI Support
[ ] Sleep States
[*] AC Adapter
[*] Battery
<M> Button
<M> Fan
<M> Processor
<M> Thermal Zone
< > ASUS/Medion Laptop Extras
< > Toshiba Laptop Extras
[ ] Debug Statements
CPU Frequency Scaling --->
[*] CPU Frequency scaling
Default CPUFreq governor (userspace)
<*> 'performance' governor
<*> 'powersave' governor
<*> 'ondemand' cpufreq policy governor
<*> CPU frequency table helpers
<M> ACPI Processor P-States driver
<*> <i>driver CPUFreq a seconda del processore</i>
</pre>
<p>
E' possibile anche attivare, a propria discrezione, Software Suspend, Suspend-to-Disk e Sleep States.
I possessori di notebook ASUS, Medion o Toshiba devono attivare i relativi
moduli specifici.
</p>
<p>
Il kernel deve essere in grado di attivare il CPU frequency scaling (cambio di frequenza della CPU) sul processore. Poichè ogni CPU presenta una interfaccia differente dalle altre, è necessario scegliere il driver giusto per il proprio processore. Si presti attenzione - ad esempio attivando
<e>Intel Pentium 4 clock modulation</e> su un Pentium M, si otterà molto probabilmente un sistema poco stabile. La documentazione del kernel può chiarire qualsiasi dubbio in proposito.
</p>
<p>
Dopo la compilazione del kernel bisogna assicurarsi del corretto caricamento dei moduli
all'avvio e riavviare il notebook con il nuovo kernel con ACPI abilitato. Per installare il demone acpi,
da riga di comando <c>emerge sys-power/acpid</c>. Il suddetto demone gestisce
eventi quali il passaggio da corrente a batteria o la chiusura del lid. E' necessario
assicurarsi che i moduli siano caricatici se non compilati direttamente
all'interno del proprio kernel. Ora si avvii il demone acpid con <c>/etc/init.d/acpid
start</c> e si esegua <c>rc-update add acpid default</c> per caricarlo all'avvio. Il suo
utilizzo verrà spiegato in seguito.
</p>
<pre caption="Installazione di acpid">
# <i>emerge sys-power/acpid</i>
# <i>/etc/init.d/acpid start</i>
# <i>rc-update add acpid default</i>
</pre>
</body>
</section>
<section>
<title>Creazione del runlevel "battery"</title>
<body>
<p>
La configurazione di default attiverà il risparmio energetico solo quando
necessario - in pratica quando il notebook funziona con la propria
batteria. Per effettuare il passaggio fra stato di corrente e di batteria,
sarà necessario creare un runlevel <e>battery</e> in grado di gestire
l'avvio e il blocco degli script di risparmio energetico.
</p>
<note>
Se l'idea di avere un ulteriore runlevel non convince, è possibile saltare
questa sezione. Naturalmente ciò renderà tutto un pò più complicato. La
sezione seguente considera l'esistenza di un runlevel <e>battery</e>.
</note>
<pre caption="Creazione di un runlevel battery">
# <i>cd /etc/runlevels</i>
# <i>cp -a default battery</i>
</pre>
<p>
Finito. Il nuovo runlevel <e>battery</e> contiene tutto come <e>default</e>, ma
non c'è ancora nessun cambio automatico tra i due livelli.
</p>
</body>
</section>
<section>
<title>Risposta agli eventi ACPI</title>
<body>
<p>
Di solito gli eventi ACPI sono la chiusura del lid, il cambio della sorgente
energetica e il bottone di sleep. Il cambio di sorgente energetica è un evento
importante e deve necessariamente generare un cambio di runlevel. La creazione dei file
seguenti permetterà un cambio fra i runlevel <e>default</e> e <e>battery</e>
a seconda del tipo di sorgente energetica utilizzata.
</p>
<pre caption="/etc/acpi/actions/pmg_switch_runlevel.sh">
#!/bin/bash
<comment># INIZIO configurazione</comment>
RUNLEVEL_AC="default"
RUNLEVEL_BATTERY="battery"
<comment># FINE configurazione</comment>
if [ ! -d "/etc/runlevels/${RUNLEVEL_AC}" ]
then
logger "${0}: Runlevel ${RUNLEVEL_AC} does not exist. Aborting."
exit 1
fi
if [ ! -d "/etc/runlevels/${RUNLEVEL_BATTERY}" ]
then
logger "${0}: Runlevel ${RUNLEVEL_BATTERY} does not exist. Aborting."
exit 1
fi
if on_ac_power
then
if [[ "$(cat /var/lib/init.d/softlevel)" != "${RUNLEVEL_AC}" ]]
then
logger "Switching to ${RUNLEVEL_AC} runlevel"
/sbin/rc ${RUNLEVEL_AC}
fi
elif [[ "$(cat /var/lib/init.d/softlevel)" != "${RUNLEVEL_BATTERY}" ]]
then
logger "Switching to ${RUNLEVEL_BATTERY} runlevel"
/sbin/rc ${RUNLEVEL_BATTERY}
fi
</pre>
<pre caption="/etc/acpi/events/pmg_ac_adapter">
<comment># Si sostituisca "ac_adapter" indicato di seguito con l'evento generato dal proprio notebook</comment>
<comment># Per conoscere il nome dell'evento si legga /var/log/acpid</comment>
event=ac_adapter.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e
</pre>
<pre caption="/etc/acpi/events/pmg_battery">
<comment># Si sostituisca "battery" indicato di seguito con l'evento generato dal proprio notebook</comment>
<comment># Per conoscere il nome dell'evento si legga /var/log/acpid</comment>
event=battery.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e
</pre>
<p>
Ora è necessario il pacchetto sys-power/powermgmt-base che contiene l'utility
<c>on_ac_power</c>. Il file <path>pmg_switch_runlevel.sh</path>
deve essere eseguibile.
</p>
<pre caption="Cambio dei runlevel con acpid">
<i># emerge powermgmt-base</i>
<i># chmod +x /etc/acpi/actions/pmg_switch_runlevel.sh</i>
<i># /etc/init.d/acpid restart</i>
</pre>
<p>
Provando ora ad attaccare e staccare l'alimentazione a corrente, nei log di
sistema dovrebbero apparire a seconda dei casi i messaggi "Switching to AC
mode" o "Switching to battery mode".
Se lo script non è in grado di rilevare correttamente la sorgente di energia
utilizzata, è possibile consultare la sezione Problemi.
</p>
<p>
A causa della natura del meccanismo degli eventi, il notebook, al boot,
passa al runlevel default che sia o meno collegato alla rete elettrica.
E' necessario aggiungere, per questo, una nuova entry al boot
loader con l'opzione <c>softlevel=battery</c>; soluzione scomoda. Una soluzione
migliore è quella di creare un evento ACPI finto alla fine del processo di boot
e lasciare che lo script <path>/etc/acpi/default.sh</path> decida quale
runlevel utilizzare. Si apra con il proprio editor il file <path>/etc/conf.d/local.start</path>
e si aggiungano le linee:
</p>
<pre caption="Cambio del runlevel al boot del notebook con la modifica di local.start">
<comment># Finto evento acpi per cambiare runlevel se scollegati da rete elettrica</comment>
/etc/acpi/actions/pmg_switch_runlevel.sh "battery/battery"
</pre>
<p>
Conclusa questa parte preparativa, è ora possibile attivare le politiche di
gestione energetica per ogni singolo componente.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Power Management della CPU</title>
<section>
<title>Terminologia tecnica</title>
<body>
<p>
Il CPU frequency scaling introduce alcuni termini tecnici che potrebbero
essere non conosciuti. Segue, per questo motivo, una breve introduzione.
</p>
<p>
Prima di tutto, il kernel deve essere in grado di cambiare la frequenza
di funzionamento della CPU. Il <e>CPUfreq processor driver</e> contiene
i comandi per effettuare questa operazione su ogni tipo di CPU. Per questo motivo è importante
indicare il driver giusto da utilizzare nel proprio kernel (operazione già
effettuata precedentemente). Inoltre, il kernel deve anche scegliere la
frequenza corretta di funzionamento da utilizzare nelle diverse situazioni. Questa viene
fissata in base ad una <e>policy</e> (politica di gestione) che consiste in
una <e>CPUfreq policy</e> e in un <e>governor</e> (regolatore).
Una CPUfreq policy non è altro che un insieme di due numeri che definiscono
un campo all'interno del quale la frequenza può oscillare - un valore minimo e
uno massimo. Il governor, invece, decide quale delle frequenze disponibili fra la
minima e la massima utilizzare. Ad esempio, il <e>powersave governor</e> utilizza
sempre la frequenza più bassa disponibile, il <e>performance governor</e>, invece,
la più alta. L'<e>userspace governor</e> non sceglie nessuna frequenza in particolare
ma utilizza quella indicata dall'utente (o da un programma in
userspace); il valore della frequenza viene letto da
<path>/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed</path>.
</p>
<p>
Questo può non sembrare un cambiamento dinamico della frequenza e in effetti non lo
è. La dinamicità può essere realizzata con diversi approcci.
Ad esempio, <e>ondemand governor</e> prende le sue decisioni in
base al carico di lavoro della CPU. La stessa cosa viene fatta
da utility come <c>cpudyn</c>, <c>cpufreqd</c>, <c>powernowd</c> e
molte altre. Gli eventi ACPI possono essere utilizzati per attivare o
disattivare i cambi dinamici della frequenza a seconda della sorgente energetica utilizzata.
</p>
</body>
</section>
<section>
<title>Settaggio manuale della frequenza</title>
<body>
<p>
Diminuendo la velocità e il voltaggio della CPU si hanno due vantaggi: viene
consumata meno energia e il notebook non si riscalda eccessivamente. Il grande
svantaggio, naturalmente, è una perdita di performance. La diminuzione della
velocità del processore resta in ogni caso un buon compromesso fra calo di
performance e risparmio energetico.
</p>
<note>
Non tutti i notebook supportano il frequency scaling. In caso di dubbi, una lista
dei processori supportati si trova nella sezione <e>Problemi</e>.
</note>
<p>
E' ora di provare il corretto funzionamento del cambio di frequenza della CPU.
<c>sys-power/cpufrequtils</c> è un programmino molto utile per effettuare un semplice debug.
</p>
<pre caption="Controllo della frequenza della CPU">
# <i>emerge cpufrequtils</i>
# <i>cpufreq-info</i>
</pre>
<p>
Ecco un esempio di quello che si ottiene:
</p>
<pre caption="Output di esempio di cpufreq-info">
cpufrequtils 0.2: cpufreq-info (C) Dominik Brodowski 2004
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
driver: centrino
CPUs which need to switch frequency at the same time: 0
hardware limits: 600 MHz - 1.40 GHz
available frequency steps: 600 MHz, 800 MHz, 1000 MHz, 1.20 GHz, 1.40 GHz
available cpufreq governors: ondemand, powersave, userspace, performance
current policy: frequency should be within 924 MHz and 1.40 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.40 GHz (asserted by call to hardware).
</pre>
<p>
Si utilizzi <c>cpufreq-set</c> per assicurarsi che il cambio di frequenza funzioni.
Il comando <c>cpufreq-set -g ondemand</c>, ad esempio, attiva l'ondemand governor;
lo si esegua e si verifichi il cambiamento con <c>cpufreq-info</c>. Se non funziona
come dovrebbe, la sezione Problemi alla fine di questa guida potrebbe essere d'aiuto.
</p>
</body>
</section>
<section>
<title>Adattamento automatico della frequenza</title>
<body>
<p>
Tutto questo è molto semplice, ma scomodo da effettuare tutti i giorni. Meglio lasciare che sia
il proprio sistema a settare automaticamente la frequenza appropriata.
La tabella seguente presenta una panoramica delle utility necessarie a questo compito. E' suddivisa
in tre categorie: <e>kernel</e> per soluzioni che hanno bisogno solo
del supporto del kernel, <e>demone</e> per programmi che lavorano in
background e <e>GUI</e> per programmi che forniscono una interfaccia
grafica per una configurazione più semplice.
</p>
<table>
<tr>
<th>Nome</th>
<th>Categoria</th>
<th>Causa cambio</th>
<th>Governor del kernel</th>
<th>Governor supportati</th>
<th>Note</th>
</tr>
<tr>
<ti>'ondemand' governor</ti>
<ti>Kernel</ti>
<ti>Carico della CPU</ti>
<ti>N.A.</ti>
<ti>N.A.</ti>
<ti>
Configurazione attraverso i file presenti in
<path>/sys/devices/system/cpu/cpu0/cpufreq/ondemand/</path>.
Richiede ancora tool in userspace (programmi, script) in caso
di utilizzo del cambio di governor.
</ti>
</tr>
<tr>
<ti><uri link="http://mnm.uib.es/~gallir/cpudyn/">cpudyn</uri></ti>
<ti>Demone</ti>
<ti>Carico della CPU</ti>
<ti>Performance, powersave</ti>
<ti>Dynamic</ti>
<ti>
Supporta anche lo standby dei dischi - si noti, però, che il <e>laptop mode</e>
in molti casi funziona decisamente meglio.
</ti>
</tr>
<tr>
<ti><uri link="http://sourceforge.net/projects/cpufreqd/">cpufreqd</uri></ti>
<ti>Demone</ti>
<ti>Stato della batteria, Carico della CPU, Programmi in esecuzione</ti>
<ti>Tutti disponibili</ti>
<ti>Nessuno</ti>
<ti>
Configurazioni sofisticata (ma anche complesse).
</ti>
</tr>
<tr>
<ti>
<uri link="http://www.deater.net/john/powernowd.html">powernowd</uri>
</ti>
<ti>Demone</ti>
<ti>Carico della CPU</ti>
<ti>Nessuno</ti>
<ti>Passive, sine, aggressive</ti>
<ti>
Supporta SMP.
</ti>
</tr>
<tr>
<ti><uri link="http://www.goop.org/~jeremy/speedfreq/">speedfreq</uri></ti>
<ti>Demone</ti>
<ti>Carico della CPU</ti>
<ti>Nessuno</ti>
<ti>Dynamic, powersave, performance, fixed speed</ti>
<ti>
Piccola ma efficace con una utile interfaccia client/server. Richiede un
kernel della serie 2.6. Il suo sviluppo sembra non continuare e a breve
dovrebbe essere rimossa dal Portage.
</ti>
</tr>
<tr>
<ti><uri link="http://cpuspeedy.sourceforge.net/">gtk-cpuspeedy</uri></ti>
<ti>GUI</ti>
<ti>Nessuno</ti>
<ti>Nessuno</ti>
<ti>Nessuno</ti>
<ti>
Applicazione per Gnome, utility grafica per configurare manualmente la
frequenza della CPU. Non offre nessun tipo di automazione.
</ti>
</tr>
<tr>
<ti>klaptopdaemon</ti>
<ti>GUI</ti>
<ti>Stato della batteria</ti>
<ti>Tutti disponibili</ti>
<ti>Nessuno</ti>
<ti>
Solamente per KDE, 'ondemand' governor necessario per il cambio dinamico della
frequenza.
</ti>
</tr>
</table>
<p>
L'adattamento della frequenza della CPU al carico di lavoro corrente del notebook
può sembrare semplice da attuare ad una prima occhiata, ma in realtà non lo è.
Un algoritmo errato può causare cambi continui fra due frequenze o
spreco di energia quando la frequenza viene portata inutilmente a valori troppo alti.
</p>
<p>
Quale scegliere? Se si è indecisi, un'ottima scelta è <c>cpufreqd</c>:
</p>
<pre caption="Installazione di cpufreqd">
# <i>emerge cpufreqd</i>
</pre>
<p>
La configurazione di <c>cpufreqd</c> avviene attraverso il file <path>/etc/cpufreqd.conf</path>.
Quella di default fornita con cpufreqd sembra leggermente confusionaria. Si raccomanda
di sostituirla con quella fornita dallo sviluppatore Gentoo, Henrik Brix Andersen (si guardi di seguito).
</p>
<pre caption="/etc/cpufreqd.conf">
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
pm_type=acpi
verbosity=5
[Profile]
name=ondemand
minfreq=0%
maxfreq=100%
policy=ondemand
[Profile]
name=powersave
minfreq=0%
maxfreq=100%
policy=powersave
[Profile]
name=performance
minfreq=0%
maxfreq=100%
policy=performance
[Rule]
name=battery
ac=off
profile=ondemand
[Rule]
name=battery_low
ac=off
battery_interval=0-10
profile=powersave
[Rule]
name=ac
ac=on
profile=performance
</pre>
<p>
Se si sta utilizzando un kernel 2.6 con interfaccia sysfs (e per la maggior parte dei casi è così),
non è possibile utilizzare valori in percentuale come riportato appena sopra. Le percentuali devono
essere sostituite con i valori minimi e massimi di frequenza come riportato da <c>cpufreq-info
--hwlimits</c>. Ad esempio, per un Pentium M 1.4 GHz si ottengono i valori:
</p>
<pre caption="Esempi di valori di minfreq e maxfreq">
minfreq=600000
maxfreq=1400000
</pre>
<p>
Infine bisogna avviare il demone.
</p>
<pre caption="Avvio di cpufreqd">
# <i>rc-update add cpufreqd default battery</i>
# <i>rc</i>
</pre>
<warn>
Non si esegua più di uno dei programmi sopra citati contemporaneamente. Potrebbero, infatti, esserci problemi come un cambio continuo fra due frequenze.
</warn>
</body>
</section>
<section>
<title>Verifica di funzionamento a seguito delle modifiche apportate</title>
<body>
<p>
L'ultima cosa da controllare è che le nuove politiche di risparmio energetico
facciano bene il loro lavoro. Un modo semplice per verificare ciò è il
monitoraggio della velocità della CPU mentre è al lavoro sul notebook:
</p>
<pre caption="Monitoraggio della velocità della CPU">
# <i>watch grep \"cpu MHz\" /proc/cpuinfo</i>
</pre>
<p>
Se <path>/proc/cpuinfo</path> non dovesse venire aggiornato (sezione Problemi), si provi a monitorare
la frequenza della CPU con:
</p>
<pre caption="Monitoraggio alternativo della velocità della CPU">
# <i>watch x86info -mhz</i>
</pre>
<p>
A seconda dei settaggi, la velocità della CPU dovrebbe aumentare in caso di richieste
d'uso, diminuire in mancanza di attività o, semplicemente, rimanere costante. Quando
si utilizza cpufreqd e la voce verbosity è impostata ad un valore di 5 o più in <path>cpufreqd.conf</path>,
nei syslog si otterrano maggiori informarzioni su quello che accade.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Power Management del display LCD</title>
<section>
<title>Il maggior consumatore di energia</title>
<body>
<p>
Come si può vedere dalla <uri link="#doc_chap1_fig1">figura 1.1</uri>, il display
LCD consuma la maggior parte dell'energia (questo potrebbe non valere nel caso
di CPU non mobile). Per questo non solo è importante spegnere il display quando
non utilizzato, ma anche ridurre il backlight (retroilluminazione) se possibile.
Molti notebook offrono la possibilità di regolare il backlight.
</p>
<p>
La prima cosa da controllare sono i settaggi di standby/suspend/off del display.
Questi sono tutti valori che dipendono dal windowmanager. L'oscuramento del
terminale può essere effettuato con <c>setterm -blank <numero-di-minutiM></c>,
<c>setterm -powersave on</c> e <c>setterm -powerdown <numero-di-minutiM></c>.
Per Xorg, si può editare <path>/etc/X11/xorg.conf</path> come di seguito riportato:
</p>
<pre caption="Settaggi dell'LCD suspend in Xorg e in XFree86">
Section "ServerLayout"
Identifier [...]
[...]
Option "BlankTime" "5" <comment># Oscura lo schermo dopo cinque minuti (Fake)</comment>
Option "StandbyTime" "10" <comment># Spegne lo schermo dopo 10 minuti (DPMS)</comment>
Option "SuspendTime" "20" <comment># Suspend dopo 20 minuti</comment>
Option "OffTime" "30" <comment># Spegne dopo mezz'ora</comment>
[...]
EndSection
[...]
Section "Monitor"
Identifier [...]
Option "DPMS" "true"
[...]
EndSection
</pre>
<p>
Vale lo stesso per XFree86 e <path>/etc/X11/XF86Config</path>.
</p>
<p>
Probabilmente la gestione del backlight (retroilluminazione) è il punto più importante.
Se si è in grado di accedere al controllo tramite un tool, bisogna scrivere un piccolo
script in grado di settare il backlight nella modalità batteria e inserirlo nel
runlevel <e>battery</e>. Lo script seguente dovrebbe funzionare sulla maggior parte
dei notebook IBM Thinkpad. Necessita del pacchetto <c>app-laptop/ibm-acpi</c>
oppure dell'opzione appropriata selezionata nel kernel.
</p>
<warn>
Il supporto per la regolazione della luminosità è sperimentale nel pacchetto
ibm-acpi. L'accesso diretto all'hardware di questa utility potrebbe provocare blocchi inaspettati del sistema.
Si legga a tale proposito il <uri link="http://ibm-acpi.sourceforge.net/">sito ufficiale</uri> del pacchetto ibm-acpi.
</warn>
<p>
Per essere in grado di regolare il livello di lumonisità, il modulo ibm_acpi deve essere
caricato con il paramentro sperimentale.
</p>
<pre caption="Caricamento automatico del modulo ibm_acpi">
<comment>(Prima di proseguire si legga l'avviso sopra riportato circa l'instabilità di questa opzione)</comment>
<i># emerge ibm-acpi</i>
<i># echo "options ibm_acpi experimental=1" >> /etc/modules.d/ibm_acpi</i>
<i># /sbin/modules-update</i>
<i># echo ibm_acpi >> /etc/modules.autoload.d/kernel-2.6</i>
<i># modprobe ibm_acpi</i>
</pre>
<p>
Queste operazioni non dovrebbero produrre messaggi di errore e,
dopo il caricamento del modulo, dovrebbe essere creato il file <path>/proc/acpi/ibm/brightness</path>.
Uno script di avvio avrà il compito di scegliere il miglior livello di luminosità
in base alla sorgente energetica disponibile.
</p>
<pre caption="/etc/conf.d/lcd-brightness">
<comment># Si legga /proc/acpi/ibm/brightness per i valori disponibili</comment>
<comment># Per altre informazioni /usr/share/doc/ibm-acpi-*/README.gz</comment>
<comment># Livello di lumonisità in modalità corrente. Di default 7.</comment>
BRIGHTNESS_AC=7
<comment># Livello di luminosità in modalità batteria. Di default 4..</comment>
BRIGHTNESS_BATTERY=4
</pre>
<pre caption="/etc/init.d/lcd-brightness">
#!/sbin/runscript
set_brightness() {
if on_ac_power
then
LEVEL=${BRIGHTNESS_AC:-7}
else
LEVEL=${BRIGHTNESS_BATTERY:-4}
fi
if [ -f /proc/acpi/ibm/brightness ]
then
ebegin "Setting LCD brightness"
echo "level ${LEVEL}" > /proc/acpi/ibm/brightness
eend $?
else
ewarn "Setting LCD brightness is not supported."
ewarn "Check that ibm_acpi is loaded into the kernel"
fi
}
start() {
set_brightness
}
stop () {
set_brightness
}
</pre>
<p>
Una volta finito, bisogna assicurarsi che la luminosità sia regolata automaticamente
aggiungendo lo script al runlevel battery.
</p>
<pre caption="Regolazione automatica della luminosità">
<i># chmod +x /etc/init.d/lcd-brightness</i>
<i># rc-update add lcd-brightness battery</i>
<i># rc</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Power Management dell'Hard Disk</title>
<section>
<title>Sleep quando in idle</title>
<body>
<p>
L'obiettivo è portare l'hard disk nello stato di sleep il prima possibile
quando non viene utilizzato. Verranno analizzate due possibilità. La prima
è <c>cpudyn</c>. Bisogna decommentare le linee nella sezione "Disk Options" in
<path>/etc/conf.d/cpudyn</path>. Per portare l'hard disk in sleep dopo 60 secondi
di inattività si deve agire nel modo seguente:
</p>
<pre caption="Uso di cpudyn per lo standby dell'hard disk">
<comment>################################################
# DISK OPTIONS
# (opzioni disabilitate di default)
################################################
#
# Tempo dopo il quale porre il disco in modalità standby
# in mancanza di operazioni IO (in secondi)
#
</comment>
TIMEOUT=60
<comment>
#
# Dischi sui quali effettuare lo spindown (separati da virgole)
#
</comment>
DISKS=/dev/hda
</pre>
<p>
La seconda possibilità è quella di usare un piccolo script e hdparm.
Si crei <path>/etc/init.d/pm.hda</path> come riportato di seguito:
</p>
<pre caption="Uso di hdparm per lo standby dell'hard disk">
#!/sbin/runscript
depend() {
after hdparm
}
start() {
ebegin "Activating Power Management for Hard Drives"
hdparm -q -S12 /dev/hda
eend $?
}
stop () {
ebegin "Deactivating Power Management for Hard Drives"
hdparm -q -S253 /dev/hda
eend $?
}
</pre>
<p>
Con <c>man hdparm</c> è possibile avere informazioni sulle varie opzioni.
Una volta pronto, è necessario aggiungere lo script al runlevel battery.
</p>
<pre caption="Configurazione per lo standby automatico del disco">
# <i>chmod +x /etc/init.d/pm.hda</i>
# <i>/sbin/depscan.sh</i>
# <i>rc-update add pm.hda battery</i>
</pre>
<impo>
Si presti molta attenzione ai settaggi di sleep e di spin down del proprio hard disk.
Settaggi troppo spinti (valori molto piccoli) possono danneggiare l'hardware e invalidare
la garanzia.
</impo>
</body>
</section>
<section>
<title>Aumento del tempo di idle - laptop-mode</title>
<body>
<p>
Gli ultimi kernel (2.6.6 e maggiori, gli ultimi della serie 2.4 e altri con alcune patch)
includono il così detto <e>laptop-mode</e>. Quando attivato, le operazioni
di scrittura avvengono ogni 10 minuti (invece di 30 secondi). Questo fà si che l'hard disk
non lavori in maniera continuativa.
</p>
<pre caption="Avvio automatico del laptop-mode">
# <i>emerge laptop-mode-tools</i>
</pre>
<p>
I <c>laptop-mode-tools</c> hanno la propria configurazione in
<path>/etc/laptop-mode/laptop-mode.conf</path>. E' possibile
adattarla alle proprie esigenze; la documentazione è presente nel file di configurazione stesso.
Per rendere automatico l'avvio <c>rc-update add laptop_mode battery</c>.
</p>
</body>
</section>
<section>
<title>Altri consigli</title>
<body>
<p>
Oltre a portare il proprio hard disk nello stato di sleep il prima possibile,
una buona idea è minimizzare gli accessi al disco. Si osservino i processi che
scrivono sul disco frequentemente - syslogd è un buon candidato. Non sarà necessario
fermarlo completamente, ma è possibile modificare il suo file di configurazione in
modo tale che non tutto venga loggato, riducendo in questo modo gli accessi al disco.
Cups scrive sul disco periodicamente, quindi fermarlo e attivarlo manualmente
solo quando necessario è una buona idea.
</p>
<pre caption="Disattivare cups nella modalità batteria">
# <i>rc-update del cupsd battery</i>
</pre>
<p>
Un'altra possibilità è la disattivazione dello swap nella modalità batteria.
Prima di scrivere qualcosa che attivi e disattivi lo swap, bisogna assicurarsi
che ci sia abbastanza RAM e che lo swap non sia usato pesantemente, altrimenti
si potrebbero avere problemi.
</p>
<p>
Se non si vuole utilizzare il laptop-mode, è sempre possibile minimizzare gli
accessi al disco montando alcune directory come <e>tmpfs</e> - gli accessi in
scrittura non avvengono sul disco, ma nella memoria principale e vengono
persi con l'operazione di unmount. Spesso è utile montare <path>/tmp</path>
allo stesso modo - il suo contenuto viene in ogni caso perso ad ogni reboot
che sia montato o meno sul disco o in RAM. Bisogna solo essere certi
di avere RAM a sufficienza e nessun programma (come un client per i download o
un programma di compressione) che abbia bisogno di molto spazio in <path>/tmp</path>.
Per usare questa soluzione è necessario avere il supporto tmpfs abilitato
nel kernel e aggiungere una linea come la seguente in <path>/etc/fstab</path>:
</p>
<pre caption="Modifica di /etc/fstab per rendere /tmp volatile">
none /tmp tmpfs size=32m 0 0
</pre>
<warn>
Si presti attenzione al parametro size e lo si modifichi per il proprio sistema.
Se non si è sicuri, non lo si modifichi, in quanto si creerebbero facilmente
grossi cali di performance (effetto collo di bottiglia). Se si volesse montare
<path>/var/log</path> nello stesso modo, non bisogna dimenticare di unire i file
di log al disco prima di effettuare l'unmounting. Sono essenziali. Montare anche
/var/tmp allo stesso modo è inutile. Portage usa questa directory per la compilazione...
</warn>
</body>
</section>
</chapter>
<chapter>
<title>Power Management delle altre periferiche</title>
<section>
<title>Power Management del Wireless</title>
<body>
<p>
Le card Wireless LAN consumano poca energia. E' possibile inserirle nella modalità
risparmio energetico in analogia allo script pm.hda.
</p>
<pre caption="Power Management automatico per le WLAN">
#!/sbin/runscript
start() {
ebegin "Activating Power Management for Wireless LAN"
iwconfig wlan0 power on power max period 3
eend $?
}
stop () {
ebegin "Deactivating Power Management for Wireless LAN"
iwconfig wlan0 power off
eend $?
}
</pre>
<p>
L'esecuzione di questo script porta la wlan0 in modalità risparmio energetico
ponendola in stato di sleep dopo tre secondi di assenza di traffico.
Lo si salvi come <path>/etc/init.d/pm.wlan0</path> e lo si aggiunga al runlevel
battery come gli altri. Per dettagli e maggiori opzioni <c>man iwconfig</c>.
Se i propri driver oppure l'access point supportano il cambio del beacon time,
questo può essere un altro modo per risparmiare ancora più energia.
</p>
<pre caption="Power Management for WLAN">
# <i>chmod +x /etc/init.d/pm.wlan0</i>
# <i>/sbin/depscan.sh</i>
# <i>rc-update add pm.wlan0 battery</i>
</pre>
</body>
</section>
<section>
<title>USB Power Management</title>
<body>
<p>
Ci sono due problemi riguardo il consumo di energia delle periferiche USB:
primo, periferiche come i mouse USB, le fotocamere digitali o le USB stick consumano
energia appena inserite. Non si può ovviare in nessun modo a questo problema
(a meno che non vengano rimosse se non necessarie). Secondo, quando ci sono
periferiche USB collegate, l'USB host controller accede periodicamente al bus
non permettendo alla CPU di passare nelle modalità sleep C3/4. Il Sistema
Operativo risolve questo problema attraverso l' "USB selective
suspend", non ancora implementato nel kernel. L'USB selective suspend permette
l'accesso al bus solo quando la periferica è in uso. L'unico modo, al momento,
per aggirare questo problema (fino alla sua implementazione nel kernel) è
compilare il supporto USB e le sue periferiche come moduli e rimuoverli attraverso
uno script quando non utilizzati (ad esempio alla chiusura del lid).
</p>
</body>
</section>
</chapter>
<chapter>
<title>Stati di Sleep: sleep, standby, suspend to disk</title>
<section>
<title>Cosa sono</title>
<body>
<p>
L'ACPI definisce differenti stati di sleep. I più importanti sono
</p>
<ul>
<li>S1 ossia Standby</li>
<li>S3 ossia Suspend to RAM ossia Sleep</li>
<li>S4 ossia Suspend to Disk ossia Hibernate</li>
</ul>
<p>
Possono essere chiamati quando il sistema non è in uso, ma non si vuole
effettuare lo shutdown a causa del lungo tempo di boot.
</p>
</body>
</section>
<section>
<title>Sleep, Standby & Hibernate</title>
<body>
<p>
Il supporto ACPI per questi stati di sleep è instabile per alcune buone ragioni.
Gli stati di sleep APM sembrano più stabili, ma non è possibile utilizzare
contemporaneamente l'APM e l'ACPI.
</p>
<warn>
Nonostante il supporto agli stati di sleep vada continuamente migliorando, resta
tuttora in una fase sperimentale. Swsusp2 e Suspend to Ram sembrano funzionare bene ma
è necessario prestare attenzione: si potrebbe facilmente andare incontro a perdita dati.
</warn>
<p>
Attualmente ci sono tre implementazioni per S4. Quella originale è swsusp,
a seguire swsusp2 che ha l'interfaccia più carina (include il supporto del
bootsplash), ma richiede l'applicazione manuale di una patch al kernel. Ed
infine Suspend-to-Disk, un fork di swsusp.
</p>
<p>
Per un'analisi comparativa delle caratteristiche si veda <uri
link="http://softwaresuspend.berlios.de/features.html#compare"> qui</uri>.
Se non si dovesse ancora sapere quale scegliere, swsusp2
sembra al momento la soluzione più promettente.
</p>
<p>
La sezione del kernel a riguardo è la seguente:
</p>
<pre caption="Configurazione del kernel per i vari stati di sospensione">
Power Management Options --->
<comment>(sleep e standby)</comment>
ACPI( Advanced Configuration and Power Interface ) Support --->
[*] ACPI Support
[*] Sleep States
<comment>(hibernate con swsusp)</comment>
[*] Software Suspend (EXPERIMENTAL)
<comment>(hibernate con swsusp2)</comment>
Software Suspend 2
--- Image Storage (you need at least one writer)
[*] Swap Writer
--- Page Transformers
[*] LZF image compression
(/dev/"your-swap-here") Default resume device name
<comment>(hibernate con Suspend-to-Disk)</comment>
[*] Suspend-to-Disk Suport
(/dev/"your-swap-here") Default resume partition
</pre>
<p>
Si compili il kernel con le appropriate opzioni abilitate e si controlli, tramite
<c>cat /proc/acpi/sleep</c> per il 2.4 e <c>cat /sys/power/state</c> per il 2.6,
ciò che si ha di supportato. Per swsusp è necessario passare al kernel il parametro
<c>resume=/dev/"propria-partizione-di-swap"</c>. Se questo non fosse possibile,
si usi <c>noresume</c> per swsusp, <c>pmdisk=off</c> per Suspend-to-Disk e
<c>noresume2</c> per swsusp2.
</p>
<p>
Per portare il proprio sistema in uno degli stati di sleep:
</p>
<pre caption="Attivazione degli stati di sleep">
<comment>(per i kernel 2.4)</comment>
# <i>echo 1 > /proc/acpi/sleep</i> <comment>(standby)</comment>
# <i>echo 3 > /proc/acpi/sleep</i> <comment>(sleep)</comment>
<comment>(per i kernel 2.6)</comment>
# <i>echo -n standby > /sys/power/state</i> <comment>(standby)</comment>
# <i>echo -n mem > /sys/power/state</i> <comment>(sleep)</comment>
<comment>(swsusp)</comment>
# <i>echo 4 > /proc/acpi/sleep</i> <comment>(hibernate)</comment>
<comment>(Suspend-to-Disk)</comment>
# <i>echo -n disk > /sys/power/state</i> <comment>(hibernate)</comment>
<comment>(swsusp2)</comment>
# <i>/usr/sbin/hibernate</i> <comment>(hibernate, si legga di seguito)</comment>
</pre>
<warn>
E' consigliabile effettuare un backup dei propri dati. Eseguendo <c>sync</c> prima
dell'esecuzione di uno dei comandi, i dati di cache verranno scritti sul disco.
Provare il tutto al di fuori dell'ambiente grafico X e, in seguito, con X in
esecuzione senza essere loggati al suo interno.
</warn>
<p>
Se dovesse capitare un kernel panic a causa di uhci o simili, è utile provare
a compilare il supporto USB come modulo per poterlo eventualmente "scaricare"
prima che il laptop vada nello stato di sleep.
</p>
<p>
Mentre tutto ciò che si è visto fino ad ora è sufficiente per eseguire
swsusp e Suspend-to-Disk (non si è detto funzionare!), swsusp2 richiede
maggiori attenzioni. La prima cosa da fare è applicare la patch fornita da
<uri link="http://softwaresuspend.berlios.de/">http://softwaresuspend.berlios.de/</uri>
al kernel. In seguito sarà necessario installare l'<c>hibernate-script</c>.
Una volta installato, si passerà alla sua configurazione tramite il file
<path>/etc/hibernate/hibernate.conf</path> e a provare a vedere se funziona:
</p>
<pre caption="Configurazione dello script hibernate">
<i># emerge hibernate-script</i>
<i># $EDITOR /etc/hibernate/hibernate.conf</i>
<comment>(Ultima occasione per effettuare un backup dei propri dati)</comment>
<i># hibernate</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Problemi</title>
<section>
<title>Se qualcosa dovesse andare male...</title>
<body>
<p>
<e>D:</e> Sto cercando di cambiare la frequenza della CPU, ma
<path>/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor</path> non esiste.
</p>
<p>
<e>R:</e> Assicurati che il tuo processore supporti il frequency scaling e di
aver scelto il driver giusto. Ecco una lista di processori supportati dal cpufreq
(kernel 2.6.7): ARM Integrator, ARM-SA1100, ARM-SA1110, AMD Elan - SC400, SC410, AMD mobile K6-2+, AMD mobile K6-3+, AMD mobile Duron, AMD mobile Athlon, AMD Opteron, AMD Athlon 64, Cyrix Media GXm,
Intel mobile PIII e Intel mobile PIII-M su alcuni chipset, Intel Pentium 4,
Intel Xeon, Intel Pentium M (Centrino), National Semiconductors Geode GX,
Transmeta Crusoe, VIA Cyrix 3 / C3, UltraSPARC-III, SuperH SH-3, SH-4, alcuni
"PowerBook" e "iBook2" e vari processori su alcuni sistemi compatibili ACPI 2.0 (solo se
gli "ACPI Processor Performance States" sono disponibili attraverso l'interfaccia
ACPI/BIOS).
</p>
<p>
<e>D:</e> Il mio notebook supporta il frequency scaling, ma
<path>/sys/devices/system/cpu/cpu0/cpufreq/</path> è vuoto.
</p>
<p>
<e>R:</e> Cerca messaggi d'errore relativi all'ACPI con <c>dmesg | grep ACPI</c>.
Prova ad aggiornare il BIOS, specialmente se vedi errori riguardo il DSDT.
Puoi anche provare a corregge il problema manualmente (ma ciò è al di fuori degli
scopi di questa guida).
</p>
<p>
<e>D:</e> Il mio notebook supporta il frequency scaling, ma secondo /proc/cpuinfo
la velocità non cambia mai.
</p>
<p>
<e>R:</e> Probabilmente hai attivato il supporto al symmetric multiprocessing
nel kernel (CONFIG_SMP). Disattivalo e dovrebbe funzionare. Alcune vecchie versioni
del kernel presentano un bug al riguardo. In questo caso, esegui <c>emerge x86info</c>,
aggiorna il tuo kernel come richiesto e controlla il valore della frequenza con
<c>x86info -mhz</c>.
</p>
<p>
<e>D:</e> Posso cambiare la frequenza della CPU, ma la scelta non è così ampia come
quella disponibile in un altro OS.
</p>
<p>
<e>R:</e> Puoi combinare il frequency scaling con l'ACPI throttoling per ottenere
frequenza minori. Ricorda comunque che il throttoling non risparmia molta energia
e viene usato solo per una gestione termica (mantiene il notebook freddo). Puoi
leggere lo stato attuale del throttoling con <c>cat
/proc/acpi/processor/CPU/throttling</c> a cambiarlo con <c>echo -n "0:x" >
/proc/acpi/processor/CPU/limit</c>, dove la x è una degli stati Tx elencati in
<path>/proc/acpi/processor/CPU/throttling</path>.
</p>
<p>
<e>D:</e> Nella configurazione del kernel powersave, performance e userspace
governors vengono mostrati, ma non vedo la voce ondemand. Dove la trovo?
</p>
<p>
<e>R:</e> Ondemand governor è incluso solamente nelle ultime versioni del kernel. Prova
ad aggiornarlo.
</p>
<p>
<e>D:</e> La durata della batteria sembra essere peggiorata rispetto a prima.
</p>
<p>
<e>R:</e> Controlla i settaggi del tuo BIOS. Potresti aver dimenticato di riattivare
alcuni settaggi.
</p>
<p>
<e>D:</e> La mia batteria è carica, ma per KDE è del tutto scarica (riporta 0%) e,
quindi, viene avviato la sequenza di shutdown.
</p>
<p>
<e>R:</e> Controlla che il supporto batteria sia attivato nel tuo kernel. Se lo hai compilato
come modulo, assicurati di averlo caricato correttamente.
</p>
<p>
<e>D:</e> Ho un Dell Inspiron 51XX e non riesco ad ottenere eventi ACPI.
</p>
<p>
<e>R:</e> Sembra essere un bug del kernel. Leggi <uri
link="http://bugme.osdl.org/show_bug.cgi?id=1752">qui</uri>.
</p>
<p>
<e>D:</e> Ho appena comprato una nuova batteria, ma dura solo per pochi minuti! Cosa faccio
di sbagliato?
</p>
<p>
<e>R:</e> Prima di tutto segui le istruzioni del venditore su come caricare correttamente la batteria.
</p>
<p>
<e>D:</e> Niente, è inutile. Cosa faccio ora?
</p>
<p>
<e>R:</e> Alcune batterie vendute come "nuove" sono in realtà vecchie. Prova questo:
</p>
<pre caption="Stato della batteria">
$ <i>grep capacity /proc/acpi/battery/BAT0/info</i>
design capacity: 47520 mWh
last full capacity: 41830 mWh
</pre>
<p>
Se il valore di "last full capacity" differisce di molto da quello di design capacity,
la tua batteria è probabilmente rotta. Usa la garanzia.
</p>
<p>
<e>D:</e> Non ho trovato una soluzione al mio problema. Cosa faccio?
</p>
<p>
<e>R:</e> Prova a contattarmi direttamente, <mail link="fragfred@gmx.de">Dennis
Nienhüser</mail>.
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: openafs.xml --]
[-- Type: text/xml; charset="us-ascii"; name="openafs.xml", Size: 26739 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/openafs.xml,v 1.17 2004/09/22 11:42:11 swift Exp $ -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link = "/doc/it/openafs.xml" lang="it">
<title>Guida ad OpenAFS in Gentoo Linux</title>
<author title="Editor">
<mail link="darks@gentoo.org">Holger Brueckner</mail>
</author>
<author title="Editor">
<mail link="bennyc@gentoo.org">Benny Chuang</mail>
</author>
<author title="Editor">
<mail link="blubber@gentoo.org">Tiemo Kieft</mail>
</author>
<author title="Editor">
<mail link="fnjordy@gmail.com">Steven McCoy</mail>
</author>
<author title="Traduzione">
<mail link="frgrieco@aliceposta.it">Francesco Grieco</mail>
</author>
<abstract>
Questa guida mostra come installare un server openafs ed un client su gentoo linux
</abstract>
<license/>
<version>0.8</version>
<date>2 Luglio 2005</date>
<chapter>
<title>Introduzione</title>
<section>
<title>Premessa</title>
<body>
<p>Questo documento descrive tutti i passi necessari all'installazione di un server openafs su Gentoo Linux.
Parti di questo documento sono tratte dalla FAQ AFS e dalla guida IBM's Quick Beginnings su AFS.
</p>
</body>
</section>
<section>
<title>Cos'è AFS ?</title>
<body>
<p>
AFS è un filesystem distribuito che permette ad host cooperanti
(client e server) di condividere in maniera efficiente un filesystem
attraverso una local o wide area network. I Client mantengono una
cache per gli oggetti (file) maggiormente utilizzati, per averne
un accesso più rapido.
</p>
<p>
AFS è basato su un filesystem distribuito chiamato "Andrew File System", originariamente
sviluppato all'Information Technology Center della Carnegie-Mellon University.
"Andrew" era il nome del progetto di ricerca alla CMU, in ricordo del fondatore dell'Università.
Fondata la Transarc e divenuto AFS un prodotto, si decise di eliminare il nome "Andrew"
al fine di indicare che ormai si era andati oltre il progetto di ricerca
universitario. AFS era divenuto un filesystem robusto e di qualità.
Tuttavia, essendo ancora esistenti dei nodi (cell) con filesystem del tipo /asf,
e, nota la difficoltà dell'epoca nel cambiare il volume root del filesystem,
il nome AFS rimase tale.
</p>
</body>
</section>
<section>
<title>Cos'è un nodo (cell) AFS ?</title>
<body>
<p>Un nodo (cell) AFS è un insieme di server collegati tra loro che presentano un singolo filesystem.
Di solito, un nodo AFS è costituito da host (postazioni) che usano lo stesso dominio Internet
("domain name"), ad esempio gentoo.org.
Gli utenti si collegano ai client workstation, i quali richiedono dati e file dai server del nodo per
gli utenti stessi. Gli utenti non sapranno su quale server è situato il file a cui stanno accedendo,
poichè ogni volume può essere copiato e spostato su di un altro server senza che se ne accorgano.
I file sono sempre accessibili.
</p>
</body>
</section>
<section>
<title>Che benefici si ottengono con l'utilizzo di AFS ?</title>
<body>
<p>
I punti di forza di AFS sono:
abilità di caching (da 100M a 1GB lato client),
caratteristiche di sicurezza (basato su Kerberos 4, con access control list),
semplicità di addressing (si ha in pratica un solo filesystem),
scalabilità (ulteriore aggiunta di server al nodo in caso di necessità),
protocolli di comunicazione.
</p>
</body>
</section>
<section>
<title>Dove si possono trovare maggiori informazioni ?</title>
<body>
<p>
Si legga la <uri link="http://www.angelfire.com/hi/plutonic/afs-faq.html">FAQ ASF</uri>.
</p>
<p>
Il sito ufficiale di Openafs è <uri link="http://www.openafs.org">www.openafs.org</uri>.
</p>
<p>
AFS è stato originariamente sviluppato dalla Transarc che ora è di proprietà di IBM.
Si possono trovare maggiori informazioni riguardo AFS sul sito della
<uri link="http://www.transarc.ibm.com/Product/EFS/AFS/index.html">Transarc</uri>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Documentazione</title>
<section>
<title>Consultare la Documentazione AFS</title>
<body>
<p>
Si può facilmente consultare la Documentazione originale AFS di IBM. E' scritta molto bene e,
se si deve amministrare un Server AFS, diventa una lettura obbligata.
</p>
<pre caption="Installazione di afsdoc">
# <i>emerge app-doc/afsdoc</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Installazione sul Client</title>
<section>
<title>Fase Iniziale</title>
<body>
<note>
Tutti i comandi devono essere digitati su una sola linea. Per facilitarne la lettura,
in questo documento alcune volte sono riportati su più linee.
</note>
<note>
Sfortunatamente i Client AFS necessitano di una partizione di tipo ext2 per la loro
cache per funzionare correttamente; ci sono problemi con le partizioni di tipo reiserfs.
La partizione ext2 deve essere di circa 200MB (o più) e va montata in
<path>/usr/vice/cache</path>
</note>
<p>
Prima di compilare il client afs vanno modificati i file CellServDB e ThisCell (si trovano in
<path>/usr/portage/net-fs/openafs/files</path>).
</p>
<pre caption="Modifica di CellServDB e ThisCell">
CellServDB:
>netlabs #Cell name
10.0.0.1 #storage
ThisCell:
netlabs
</pre>
<warn>
All'interno del file <path>CellServDB</path> devono essere usati solamente spazi. Nel caso di uso dei TAB, il
client andrà sicuramente incontro a problemi.
</warn>
<p>
Il file CellServDB indica al proprio client quale o quali client ha bisogno di contattare per uno
specifico nodo (cell). Il contenuto di ThisCell dovrebbe sembrare ovvio.
Normalmente la propria azienda usa un nome che è unico.
Una buona scelta può essere il dominio (ufficiale) dell'azienda.
</p>
</body>
</section>
<section>
<title>Compilazione lato Client</title>
<body>
<pre caption="Installazione di openafs">
# <i>emerge net-fs/openafs</i>
</pre>
<p>
Dopo una corretta compilazione si è pronti per proseguire.
</p>
</body>
</section>
<section>
<title>Esecuzione di afs all'avvio</title>
<body>
<p>
I comandi seguenti creano i link appropriati per avviare il client afs durante
il boot del sistema.
</p>
<warn>
Si dovrebbe sempre avere un server afs in esecuzione all'interno del proprio dominio quando si
avvia un client afs. Se il server afs non è attivo (o è down), il sistema non si avvierà e attenderà prima
di proseguire, per un tempo relativamente lungo (fino al timeout).
</warn>
<pre caption="Aggiunta di afs al runlevel di default">
# <i>rc-update add afs default</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Installazione sul Server</title>
<section>
<title>Compilazione lato Server</title>
<body>
<p>
I comandi seguenti installano tutti i binari necessari alla configurazione di un Server AFS
<e>e</e> di un Client.
</p>
<pre caption="Installazione di openafs">
# <i>emerge net-fs/openafs</i>
</pre>
</body>
</section>
<section>
<title>Avvio del Server AFS</title>
<body>
<p>
E' necessario prima di tutto cancellare i file di esempio CellServDB e ThisCell.
</p>
<pre>
# <i>rm /usr/vice/etc/ThisCell</i>
# <i>rm /usr/vice/etc/CellServDB</i>
</pre>
<p>
In seguito si deve eseguire il comando <b>bosserver</b> per inizializzare il Basic OverSeer (BOS)
Server, il quale ha il compito di monitorare e controllare gli altri processi del server AFS.
Si pensi al BOS come ad un init del sistema. La flag <b>-noauth</b> va inclusa per disabilitare
il controllo delle autorizzazioni, poichè non si è ancora aggiunto l'user admin.
</p>
<warn>
Disabilitando il controllo delle autorizzazioni, la sicurezza del nodo (cell) viene,
temporaneamente, compromessa.
Tutti questi sottopassaggi vanno completati in un unica ininterrotta sessione e
il sistema non deve essere lasciato incustodito fino al successivo riavvio del Server BOS con il
controllo delle autorizzazioni attivato.
</warn>
<pre caption="Inizializzazione del Basic OverSeer Server">
# <i>/usr/afs/bin/bosserver -noauth &</i>
</pre>
<p>
Si controlli che il Server BOS abbia creato i file
<path>/usr/vice/etc/CellServDB</path> e <path>/usr/vice/etc/ThisCell</path>
</p>
<pre caption="Controllo della presenza di CellServDB e ThisCell">
# <i>ls -al /usr/vice/etc/</i>
-rw-r--r-- 1 root root 41 Jun 4 22:21 CellServDB
-rw-r--r-- 1 root root 7 Jun 4 22:21 ThisCell
</pre>
</body>
</section>
<section>
<title>Assegnazione del Nome del Nodo (cell) e del Gruppo (Membership) per i Processi del Server</title>
<body>
<p>
Si assegni ora il nome al nodo.
</p>
<impo>Ci sono alcune restrizioni nel formato del nome.
Non possono essere usate lettere in maiuscolo e non si possono superare i 64 caratteri.
Il nome del proprio nodo (cell) apparirà nel percorso <path>/afs</path> ,
quindi conviene usare nomi brevi.
</impo>
<note>D'ora in avanti si sostituisca alla stringa <server name> l'hostname completo
(ad esempio <b>afs.gentoo.org</b>) della macchina sulla quale state installando il tutto.
Al posto di <cell name> va inserito il nome completo del proprio nodo (ad esempio <b>gentoo</b>).
</note>
<p>
Si esegua il comando <b>bos setcellname</b> per assegnare un nome al nodo:
</p>
<pre caption="Impostazione del cell name">
# <i>/usr/afs/bin/bos setcellname <server name> <cell name> -noauth</i>
</pre>
</body>
</section>
<section>
<title>Avvio del Database Server Process</title>
<body>
<p>
Il comando <b>bos create</b> crea le configurazioni dei quattro processi
database server nel file
<path>/usr/afs/local/BosConfig</path> . I quattro processi funzionano solamente
sui database server.
</p>
<table>
<tr>
<ti>kaserver</ti>
<ti>
L'Authentication Server gestisce l'Authentication Database.
Può essere sostituito con un demone Kerberos 5 (in questa guida non documentato).
</ti>
</tr>
<tr>
<ti>buserver</ti>
<ti>Il Backup Server gestisce il Backup Database</ti>
</tr>
<tr>
<ti>ptserver</ti>
<ti>Il Protection Server gestisce il Protection Database</ti>
</tr>
<tr>
<ti>vlserver</ti>
<ti>
Il Volume Location Server gestisce il Volume Location Database (VLDB).
E' il più importante
</ti>
</tr>
</table>
<pre caption="Creazione configurazioni dei processi database">
# <i>/usr/afs/bin/bos create <server name> kaserver simple
/usr/afs/bin/kaserver -cell <cell name> -noauth</i>
# <i>/usr/afs/bin/bos create <server name> buserver simple
/usr/afs/bin/buserver -cell <cell name> -noauth</i>
# <i>/usr/afs/bin/bos create <server name> ptserver simple
/usr/afs/bin/ptserver -cell <cell name> -noauth</i>
# <i>/usr/afs/bin/bos create <server name> vlserver simple
/usr/afs/bin/vlserver -cell <cell name> -noauth</i>
</pre>
<p>
E' possibile verificare che tutti i server siano in esecuzione con il comando <b>bos status</b> :
</p>
<pre caption="Controllo del corretto funzionamento dei server">
# <i>/usr/afs/bin/bos status <server name> -noauth</i>
Instance kaserver, currently running normally.
Instance buserver, currently running normally.
Instance ptserver, currently running normally.
Instance vlserver, currently running normally.
</pre>
</body>
</section>
<section>
<title>Sicurezza del Nodo (cell)</title>
<body>
<p>
Verrano ora esaminati i meccanismi di sicurezza del nodo. Si creeranno due profili iniziali
nell'Authentication Database: l'account di amministratore, chiamato per convenzione <b>admin</b>
e un account per i processi del server AFS, chiamato <b>afs</b>.
Nessun utente si può connettere usando l'user <b>afs</b>, ma il modulo Authentication
Server's Ticket Granting Service (TGS) usa questo account per criptare i ticket del server concessi ai
client AFS.
</p>
<p>
Si passi alla modalità interattiva <b>kas</b>
</p>
<pre caption="Modalità interattiva">
# <i>/usr/afs/bin/kas -cell <cell name> -noauth</i>
ka> <i>create afs</i>
initial_password:
Verifying, please re-enter initial_password:
ka> <i>create admin</i>
initial_password:
Verifying, please re-enter initial_password:
ka> <i>examine afs</i>
User data for afs
key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:30 2001
password will never expire.
An unlimited number of unsuccessful authentications is permitted.
entry never expires. Max ticket lifetime 100.00 hours.
last mod on Mon Jun 4 20:49:30 2001 by $lt;none>
permit password reuse
ka> <i>setfields admin -flags admin</i>
ka> <i>examine admin</i>
User data for admin (ADMIN)
key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:59 2001
password will never expire.
An unlimited number of unsuccessful authentications is permitted.
entry never expires. Max ticket lifetime 25.00 hours.
last mod on Mon Jun 4 20:51:10 2001 by $lt;none>
permit password reuse
ka>
</pre>
<p>
Il comando <b>bos adduser</b> aggiunge l'utente <b>admin</b>
(amministratore) a <path>/usr/afs/etc/UserList</path> .
</p>
<pre caption="Aggiunta dell'utente admin alla UserList">
# <i>/usr/afs/bin/bos adduser <server name> admin -cell <cell name> -noauth</i>
</pre>
<p>
Il comando <b>bos addkey</b> definisce la chiave di crittografia (encryption key)
del Server AFS in <path>/usr/afs/etc/KeyFile</path>
</p>
<note>
Nel caso di richiesta di una password ("input key"), sarà necessario digitare quella usata
nella creazione dell'user afs nella modalità interattiva <b>kas</b>.
</note>
<pre caption="Inserimento password">
# <i>/usr/afs/bin/bos addkey <server name> -kvno 0 -cell <cell name> -noauth</i>
input key:
Retype input key:
</pre>
<p>
Il comando <b>pts createuser</b> crea un profilo Protection Database per l'utente amministratore.
</p>
<note>
Di default, il Protection Server assegna all'utente <b>admin</b> un AFS UID 1, perchè
è il primo profilo creato. Se nel file delle password locale (/etc/passwd o uno equivalente)
è già presente un <b>admin</b> con UID differente, la flag <b>-id</b> verrà utilizzata
per creare UID equivalenti.
</note>
<pre caption="Creazione del profilo Protection Database">
# <i>/usr/afs/bin/pts createuser -name admin -cell <cell name> [-id <AFS UID>] -noauth</i>
</pre>
<p>
Il comando <b>pts adduser</b> fà dell'utente <b>admin</b> un
membro del gruppo "system:administrators" e il comando <b>pts membership</b>
è utile per verificare che ciò sia avvenuto correttamente.
</p>
<pre>
# <i>/usr/afs/bin/pts adduser admin system:administrators -cell <cell name> -noauth</i>
# <i>/usr/afs/bin/pts membership admin -cell <cell name> -noauth</i>
Groups admin (id: 1) is a member of:
system:administrators
</pre>
<p>
Si riavviino tutti i processi del Server AFS
</p>
<pre caption="Riavvio di tutti i processi del server AFS">
# <i>/usr/afs/bin/bos restart <server name> -all -cell <cell name> -noauth</i>
</pre>
</body>
</section>
<section>
<title>Avvio del File Server, Volume Server e Salvager</title>
<body>
<p>
Si avvii il processo <b>fs</b>, costituito da File Server, da Volume Server e da Salvager (processi
fileserver, volserver e salvager).
</p>
<pre caption="Avvio del processo fs">
# <i>/usr/afs/bin/bos create <server name> fs fs /usr/afs/bin/fileserver
/usr/afs/bin/volserver
/usr/afs/bin/salvager
-cell <cell name> -noauth</i>
</pre>
<p>
Si controlli che tutti i processi siano in esecuzione
</p>
<pre caption="Controllo della corretta esecuzione di tutti i processi">
# <i>/usr/afs/bin/bos status <server name> -long -noauth</i>
Instance kaserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/kaserver'
Instance buserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/buserver'
Instance ptserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/ptserver'
Instance vlserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/vlserver'
Instance fs, (type is fs) currently running normally.
Auxiliary status is: file server running.
Process last started at Mon Jun 4 21:09:30 2001 (2 proc starts)
Command 1 is '/usr/afs/bin/fileserver'
Command 2 is '/usr/afs/bin/volserver'
Command 3 is '/usr/afs/bin/salvager'
</pre>
<p>
Il passo successivo è in relazione al se si è o meno mai eseguito un file server AFS nel nodo.
</p>
<p>
Se si sta installanto il Server AFS per la prima volta nel nodo, è necessario creare il
primo volume AFS, <b>root.afs</b>
</p>
<note>
Al posto di "partition name" va inserito il nome di una partizione AFS Server della postazione.
Per convenzione queste partizioni sono chiamate <path>/vicepx</path>, dove la x
può essere compresa tra a e z.
</note>
<pre caption="Creazione del volume root.afs">
# <i>/usr/afs/bin/vos create <server name>
<partition name> root.afs
-cell <cell name> -noauth</i>
</pre>
<p>
Se nel nodo sono già presenti postazioni con file server AFS e volumi, verranno utilizzati i comandi
<b>vos sncvldb</b> e <b>vos syncserv</b> per sincronizzare il VLDB (Volume Location Database)
con la stato attuale dei volumi sulla postazione locale. Tutti i dati necessari saranno
copiati sul proprio nuovo server.
</p>
<p>
Se il comando dovesse restituire il messaggio "partition /vicepa does not exist on
the server" (la partizione /vicepa non esiste sul server), bisognerà assicurarsi
che la partizione sia stata montata prima dell'esecuzione del server OpenAFS, oppure
bisognerà montare la directory e riavviare i processi con il comando
<c>/usr/afs/bin/bos restart <server name> -all -cell <cell
name> -noauth</c>.
</p>
<pre caption ="Sincronizzazione del VLDB">
# <i>/usr/afs/bin/vos syncvldb <server name> -cell <cell name> -verbose -noauth</i>
# <i>/usr/afs/bin/vos syncserv <server name> -cell <cell name> -verbose -noauth</i>
</pre>
</body>
</section>
<section>
<title>Avvio del Server Portion dell'Update Server</title>
<body>
<pre caption="Avvio del server update">
# <i>/usr/afs/bin/bos create <server name>
upserver simple "/usr/afs/bin/upserver
-crypt /usr/afs/etc -clear /usr/afs/bin"
-cell <cell name> -noauth</i>
</pre>
</body>
</section>
<section>
<title>Configurazione del Top Level del Filespace AFS</title>
<body>
<p>
C'è bisogno, a questo punto, di configurare la acl (access control list) in modo che ogni utente possa
accedere al percorso <path>/afs</path>.
</p>
<pre caption="Configurazioen dell'access control list">
# <i>/usr/afs/bin/fs setacl /afs system:anyuser rl</i>
</pre>
<p>
Si deve ora creare il volume root, montarlo in modalità solo lettura su <path>/afs/<cell name></path>
e in modalità lettura/scrittura su <path>/afs/.<cell name></path>
</p>
<pre caption="Configurazione del volume root">
# <i>/usr/afs/bin/vos create <server name><partition name> root.cell</i>
# <i>/usr/afs/bin/fs mkmount /afs/<cell name> root.cell </i>
# <i>/usr/afs/bin/fs setacl /afs/<cell name> system:anyuser rl</i>
# <i>/usr/afs/bin/fs mkmount /afs/.<cell name> root.cell -rw</i>
</pre>
<p>
Ora è tutto pronto ! Si dovrebbe avere un file server AFS funzionante
all'interno della propria rete.
</p>
<note>
Per il corretto funzionamento del server AFS è essenziale che tutti gli
orologi di sistema siano sincronizzati.
La soluzione più conveniente consiste nella installazione di un server ntp su di una postazione (ad esempio
sul server AFS) per sincronizzare tutti gli orologi dei client attraverso il client ntp.
Questo può, naturalmente, essere fatto anche su di un client afs.
</note>
</body>
</section>
</chapter>
<chapter>
<title>Amministrazione di Base</title>
<section>
<title>Avviso</title>
<body>
<p>
OpenAFS è una tecnologia complessa e ampia. Si consiglia la lettura della documentazione AFS
per maggiori e ulteriori informazioni. In questo capitolo verranno illustrate solo alcune
operazioni di amministrazione.
</p>
</body>
</section>
<section>
<title>Configurazione di PAM per l'acquisizione di un Token AFS al Login</title>
<body>
<p>
Per utilizzare AFS è necessario autenticarsi sul Server KA se
si sta utilizzando una implementazione di AFS Kerberos 4, o sul
Kerberos 5 KDC se si sta utilizzando MIT, Heimdal, oppure ShiShi Kerberos 5.
Tuttavia per loggarsi ad una macchina sarà necessario anche un
account utente, situato solitamente in /etc/passwd, NIS, LDAP (OpenLDAP),
oppure in un database Hesiod. PAM permette a Gentoo di legare
l'autenticazione AFS e di login all'account utente.
</p>
<p>
Sarà necessario aggiornare /etc/pam.d/system-auth , utilizzato
anche da altre configurazioni. "use_first_pass" sta ad indicare il controllo
prima sul login dell'utente, e "ignore_root" blocca il controllo sul super user
locale in modo da permettere il login se AFS o il network non si avviano.
</p>
<pre caption="/etc/pam.d/system-auth">
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok
auth sufficient /usr/afsws/lib/pam_afs.so.1 use_first_pass ignore_root
auth required /lib/security/pam_deny.so
account required /lib/security/pam_unix.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok md5 shadow use_authtok
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
</pre>
<p>
Per permettere a sudo di mantenere i token degli utenti reali e per evitare
agli utenti locali di ottenere un accesso AFS si cambi /etc/pam.d/su come evidenziato
di seguito:
</p>
<pre caption="/etc/pam.d/su">
<comment># Qui, utenti con uid > 100 sono considerati appartenenti ad AFS e utenti con
# uid <= 100 sono ignorati da pam_afs.</comment>
auth sufficient /usr/afsws/lib/pam_afs.so.1 ignore_uid 100
auth sufficient /lib/security/pam_rootok.so
<comment># Se si vuole restringere il numero degli utenti ammessi all'utilizzo di 'su',
# si crei il file /etc/security/suauth.allow, editabile solo da root, e si
# aggiungano gli utenti a cui è permesso effettuare 'su' (un utente per ogni
# linea del suddetto file)
#auth required /lib/security/pam_listfile.so item=ruser \
# sense=allow onerr=fail file=/etc/security/suauth.allow
# Decommentando questa linea si permette agli utenti del gruppo wheel
# di eseguire 'su' senza inserire una password.
#auth sufficient /lib/security/pam_wheel.so use_uid trust
# In alternativa, si può implementare una lista di utenti che non hanno
#bisogno di fornire una password
#auth sufficient /lib/security/pam_listfile.so item=ruser \
# sense=allow onerr=fail file=/etc/security/suauth.nopass
# Commentando questa linea si permette a qualsiasi utente, anche a quelli
# non presenti nel gruppo wheel, l'esecuzione di 'su'</comment>
auth required /lib/security/pam_wheel.so use_uid
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_xauth.so
<comment># Qui si previene la perdita dell'id token dell'utente reale</comment>
session optional /usr/afsws/lib/pam_afs.so.1 no_unlog
</pre>
</body>
</section>
</chapter>
</guide>
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] aggiornamenti
@ 2012-03-29 21:54 HUjuice
0 siblings, 0 replies; 39+ messages in thread
From: HUjuice @ 2012-03-29 21:54 UTC (permalink / raw
To: Gentoo Traduzioni
Per quanto mi riguarda, quasi tutti i file in attesa di aggiornamenti
sono in bump.
Resta scoperto PostgreSQL: se qualcuno ha voglia di lavorarci su, è
praticamente da riscrivere da capo.
Ciao a tutti,
Sergio
HUjuice
mooodcast.net
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2007-07-24 8:29 Francesco Grieco
2007-07-24 11:55 ` Davide Cendron
0 siblings, 1 reply; 39+ messages in thread
From: Francesco Grieco @ 2007-07-24 8:29 UTC (permalink / raw
To: gentoo-docs-it
Ciao Davide,
ho inviato su bugzilla la guida openafs aggiornata all'ultima revisione.
Ho in locale anche un aggiornamento di 3 revisioni della power-management.
Visto che la discussione sul comportamento da tenere nell'invio di
revisioni minori non è decollata... :D
che faccio?
Non me la sento di aprire un nuovo bug su bugzilla,
nè di lasciare non aggiornata la guida visto che contiene modifiche
riguardo al risparmio energetico delle wifi più altre correzioni.
E' grave mandartela in privato o sulla ml? :D
Attendo tue,
saluti,
Francesco Grieco
--
gentoo-docs-it@gentoo.org mailing list
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [gentoo-docs-it] Aggiornamenti
2007-07-24 8:29 [gentoo-docs-it] Aggiornamenti Francesco Grieco
@ 2007-07-24 11:55 ` Davide Cendron
0 siblings, 0 replies; 39+ messages in thread
From: Davide Cendron @ 2007-07-24 11:55 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 1855 bytes --]
Il Tuesday 24 July 2007 10:29:44 Francesco Grieco ha scritto:
> Ciao Davide,
> ho inviato su bugzilla la guida openafs aggiornata all'ultima revisione.
Molto bene, la metto online il prima possibile!
> Ho in locale anche un aggiornamento di 3 revisioni della power-management.
> Visto che la discussione sul comportamento da tenere nell'invio di
> revisioni minori non è decollata... :D
> che faccio?
> Non me la sento di aprire un nuovo bug su bugzilla,
> nè di lasciare non aggiornata la guida visto che contiene modifiche
> riguardo al risparmio energetico delle wifi più altre correzioni.
Eh eh eh, la paura di riempire Bugzilla di report inutili ti attanaglia,
eh? :D Tranquillo, ogni giorno vengono inserite DECINE e DECINE di bug
veramente INUTILI (duplicati,invalidi,ecc.), e se ti può "consolare", ogni
tanto è capitato anche a me (ero stato troppo frettoloso), per cui non si si
dovrebbe preoccupare nell'aprire i bug report per un aggiornamento di una
traduzione, anche se l'aggiornamento non è molto consistente! :)
Comunque devi pensare che Bugzilla, attualmente, è l'interfaccia ufficiale per
mettere in contatto il mondo intero con gli sviluppatori Gentoo, pertanto il
bug report è la procedura consigliata e preferita.
Sul fatto che la discussione non è decollata.... abbi fede, speriamo che anche
gli altri collaboratori facciano sapere il proprio punto di vista. Se riesco
vedo di chiedere qualche consiglio e suggerimento ai sommi capi del GDP.
> E' grave mandartela in privato o sulla ml? :D
Ci mancherebbe :) Comunque insisto perchè tu apra un bug report (BTW: comunque
le modifiche a power-management non sono proprio esigue :P), attendo
speranzoso :)
Ciao e grazie,
--
Davide Cendron
Gentoo Documentation Project
Italian Lead Translator
http://www.gentoo.org/doc/it/
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2007-06-29 14:13 Enrico Morelli
2007-06-29 17:26 ` Davide Cendron
0 siblings, 1 reply; 39+ messages in thread
From: Enrico Morelli @ 2007-06-29 14:13 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 642 bytes --]
In allegato gli ultimi aggiornamenti di ati-faq e hb-portage-files
--
-------------------------------------------------------------------
(o_
(o_ //\ Coltivate Linux che tanto Windows si pianta da solo.
(/)_ V_/_
+------------------------------------------------------------------+
| ENRICO MORELLI | email: morelli@CERM.UNIFI.IT |
| * * * * | phone: +39 055 4574269 |
| University of Florence | fax : +39 055 4574253 |
| CERM - via Sacconi, 6 - 50019 Sesto Fiorentino (FI) - ITALY |
+------------------------------------------------------------------+
[-- Attachment #2: ati-faq.xml --]
[-- Type: application/xml, Size: 6929 bytes --]
[-- Attachment #3: hb-portage-files.xml --]
[-- Type: application/xml, Size: 13439 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [gentoo-docs-it] Aggiornamenti
2007-06-29 14:13 Enrico Morelli
@ 2007-06-29 17:26 ` Davide Cendron
2007-07-02 7:33 ` Enrico Morelli
0 siblings, 1 reply; 39+ messages in thread
From: Davide Cendron @ 2007-06-29 17:26 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 1580 bytes --]
Il Friday 29 June 2007 16:13:46 Enrico Morelli ha scritto:
> In allegato gli ultimi aggiornamenti di ati-faq e hb-portage-files
Ciao Enrico, grazie per gli aggiornamenti, però, purtroppo, mi
tocca "invalidarli", in quanto hanno diverse "pecche":
- DOCTYPE non corretto: lo so che è una cavolata, però per correttezza
dovresti già impostarlo in modo che la sua validazione vada a buon fine. Per
cui ti chiedo cortesemente di modificare la configurazione del tuo ambiente
in modo che tu non debba utilizzare
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
(i due puntini prima di /dtd/ sono quelli malefici) per validare localmente i
tuoi documenti XML.
Se hai bisogno di info a riguardo non esitare a chiedere.
- lo stile di codifica XML è da sistemare, e ho visto che non rispecchia
quello dei file attualmente in linea: ne deduco che tu non abbia aggiornato i
tuoi file locali scaricando quelli online. Ti invito ad eseguire questa
operazione prima di aggiornare qualsiasi documento, altrimenti c'è il rischio
di un disallineamento, oppure dovrei risistemare ogni volta manualmente tutte
le parti da correggere, con il risultato di uno spreco di tempo e di
fatiche :P
Concludendo: per ati-faq.xml ho fatto io, le modifiche erano minime. Per
hb-portage-files.xml ti chiedo di reinviarmelo in un formato corretto.
Porta pazienza per la pignoleria, ma un pò di QA (ed evitare del lavoro
inutile) è sempre un bene ;-)
--
Davide Cendron
Gentoo Documentation Project
Italian Follow Up Translator
http://www.gentoo.org/doc/it/
[-- Attachment #2: This is a digitally signed message part. --]
[-- Type: application/pgp-signature, Size: 189 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [gentoo-docs-it] Aggiornamenti
2007-06-29 17:26 ` Davide Cendron
@ 2007-07-02 7:33 ` Enrico Morelli
0 siblings, 0 replies; 39+ messages in thread
From: Enrico Morelli @ 2007-07-02 7:33 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 1181 bytes --]
On Fri, 29 Jun 2007 19:26:11 +0200
Davide Cendron <scen@gentoo.org> wrote:
> Il Friday 29 June 2007 16:13:46 Enrico Morelli ha scritto:
> > In allegato gli ultimi aggiornamenti di ati-faq e hb-portage-files
>
> Ciao Enrico, grazie per gli aggiornamenti, però, purtroppo, mi
> tocca "invalidarli", in quanto hanno diverse "pecche":
>
Sigh sob gulp. la mia prima ivalidazione. Prima o poi doveva
succedere :-(( Me tappino. Essendo dai tempi del Klondike che faccio le
traduzioni mi sono arrugginito un po'. Finisco nel pianto un pacchetto
di clinex e ti rimando la traduzione.
--
-------------------------------------------------------------------
(o_
(o_ //\ Coltivate Linux che tanto Windows si pianta da solo.
(/)_ V_/_
+------------------------------------------------------------------+
| ENRICO MORELLI | email: morelli@CERM.UNIFI.IT |
| * * * * | phone: +39 055 4574269 |
| University of Florence | fax : +39 055 4574253 |
| CERM - via Sacconi, 6 - 50019 Sesto Fiorentino (FI) - ITALY |
+------------------------------------------------------------------+
[-- Attachment #2: hb-portage-files.xml --]
[-- Type: application/xml, Size: 12991 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2006-11-24 10:45 Enrico Morelli
2006-12-11 20:22 ` Marco Mascherpa
0 siblings, 1 reply; 39+ messages in thread
From: Enrico Morelli @ 2006-11-24 10:45 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 804 bytes --]
file versione revisione
-----------------------------------------------------------
hb-portage-divertree.xml 1.5 1.13
hb-portage-configuration.xml 1.5 1.13
hb-portage-files.xml 1.8 1.13
hb-working-portage.xml 1.55 1.61
--
-------------------------------------------------------------------
(o_
(o_ //\ Coltivate Linux che tanto Windows si pianta da solo.
(/)_ V_/_
+------------------------------------------------------------------+
| ENRICO MORELLI | email: morelli@CERM.UNIFI.IT |
| * * * * | phone: +39 055 4574269 |
| University of Florence | fax : +39 055 4574253 |
| CERM - via Sacconi, 6 - 50019 Sesto Fiorentino (FI) - ITALY |
+------------------------------------------------------------------+
[-- Attachment #2: hb-portage-configuration.xml --]
[-- Type: application/xml, Size: 10461 bytes --]
[-- Attachment #3: hb-portage-diverttree.xml --]
[-- Type: application/xml, Size: 4553 bytes --]
[-- Attachment #4: hb-portage-files.xml --]
[-- Type: application/xml, Size: 13046 bytes --]
[-- Attachment #5: hb-working-portage.xml --]
[-- Type: application/xml, Size: 23519 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2006-07-20 9:54 Enrico Morelli
2006-07-20 18:48 ` Marco Mascherpa
0 siblings, 1 reply; 39+ messages in thread
From: Enrico Morelli @ 2006-07-20 9:54 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 735 bytes --]
Doc Versione Revisione
faq.xml 3.5 1.104
ldap-howto.xml 0.22 1.33
qmail-howto.xml 1.13 1.37
ati-faq.xml 1.0.19 1.37
hb-working-portage.xml 1.52 1.57
--
-------------------------------------------------------------------
(o_
(o_ //\ Coltivate Linux che tanto Windows si pianta da solo.
(/)_ V_/_
+------------------------------------------------------------------+
| ENRICO MORELLI | email: morelli@CERM.UNIFI.IT |
| * * * * | phone: +39 055 4574269 |
| University of Florence | fax : +39 055 4574253 |
| CERM - via Sacconi, 6 - 50019 Sesto Fiorentino (FI) - ITALY |
+------------------------------------------------------------------+
[-- Attachment #2: faq.xml --]
[-- Type: application/xml, Size: 36836 bytes --]
[-- Attachment #3: ldap-howto.xml --]
[-- Type: application/xml, Size: 18682 bytes --]
[-- Attachment #4: qmail-howto.xml --]
[-- Type: application/xml, Size: 22959 bytes --]
[-- Attachment #5: ati-faq.xml --]
[-- Type: application/xml, Size: 6583 bytes --]
[-- Attachment #6: hb-working-portage.xml --]
[-- Type: application/xml, Size: 21485 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2005-12-21 9:24 Enrico Morelli
2005-12-21 18:47 ` Marco Mascherpa
0 siblings, 1 reply; 39+ messages in thread
From: Enrico Morelli @ 2005-12-21 9:24 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 713 bytes --]
doc ver rev
---------------------------------------------
ldap-howto 0.22 1.32
ati-faq 1.0.16 1.35
hb-portage-divertree 1.4 1.10
--
-------------------------------------------------------------------
(o_
(o_ //\ Coltivate Linux che tanto Windows si pianta da solo.
(/)_ V_/_
+------------------------------------------------------------------+
| ENRICO MORELLI | email: morelli@CERM.UNIFI.IT |
| * * * * | phone: +39 055 4574269 |
| University of Florence | fax : +39 055 4574253 |
| CERM - via Sacconi, 6 - 50019 Sesto Fiorentino (FI) - ITALY |
+------------------------------------------------------------------+
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: ati-faq.xml --]
[-- Type: text/xml; name=ati-faq.xml, Size: 6195 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/it/ati-faq.xml" lang="it">
<title>Gentoo Linux ATi FAQ</title>
<author title="Autore"><mail link="lu_zero@gentoo.org">
Luca Barbato</mail>
</author>
<author title="Editore"><mail link="peesh@gentoo.org">
Jorge Paulo</mail>
</author>
<author title="Editore"><mail link="blubber@gentoo.org">
Tiemo Kieft</mail>
</author>
<author title="Traduttore"><mail link="myzelf@omnidea.it">
Gilberto De Faveri</mail>
</author>
<author title="Traduttore"><mail link="gentoo-dev@gentoo.it">
Enrico Morelli</mail>
</author>
<abstract>Questa FAQ dovrebbe aiutare gli utenti a risolvere i più comuni problemi di installazione
e configurazione relativi a DRI e X11 per le schede ATI.</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>
<version>1.0.16</version>
<date>9 Settembre 2005</date>
<chapter>
<title>Hardware Supportato</title>
<section>
<title>È supportata la mia scheda ATI?</title>
<body>
<p><uri link="http://www.freedesktop.org/Software/xorg">xorg-x11</uri> supporta quasi ogni scheda ATI,
almeno per quanto riguarda l'accelerazione delle funzioni 2D. Il supporto 3D è offerto sia dal
<uri link="http://dri.sf.net">progetto DRI</uri>, che fa parte di xorg-x11 o dei
driver closed source
<uri link="http://mirror.ati.com/support/drivers/linux/radeon-linux.html">forniti</uri> da ATI.
</p>
<table>
<tr>
<th>GPU</th>
<th>Nome Commerciale</th>
<th>Supportato da</th>
</tr>
<tr>
<ti>Rage128</ti>
<ti>Rage128</ti>
<ti>xorg DRI</ti>
</tr>
<tr>
<ti>R100</ti>
<ti>Radeon7xxx, Radeon64</ti>
<ti>xorg DRI</ti>
</tr>
<tr>
<ti>R200,R250,R280</ti>
<ti>Radeon8500, Radeon9000, Radeon9200</ti>
<ti>xorg DRI, ATI DRI</ti>
</tr>
<tr>
<ti>R300, R400, R500</ti>
<ti>Radeon 9500 - x800</ti>
<ti>xorg 2D, ATI DRI</ti>
</tr>
</table>
</body>
</section>
<section>
<title>Ho una scheda All-In-Wonder/Vivo. Sono supportate le caratteristiche multimediali?</title>
<body>
<p>Le caratteristiche multimediali sono per ora supportate dal
<uri link="http://gatos.sf.net">progetto GATOS</uri>. Questi driver saranno
integrati direttamente in xorg.</p>
</body>
</section>
<section>
<title>Non utilizzo una macchina basata su architettura x86. Cosa posso fare?</title>
<body>
<p>
Il supporto X11 su piattaforme PPC o Alpha è molto simile al supporto per x86.
Comunque, i driver ATI non sono supportati su PPC o Alpha, per questo non è possibile usare le caratteristiche 3D degli R300 Graphics Processing Unit (GPU).
Se si possiede una scheda con queste GPU e si vuole che sia supportata da X11,
contattare <uri link="http://www.ati.com">ATI</uri> e chiedere di rilasciare
le specifiche per la propria GPU.
I sorgenti per AMD64 sono stati rilasciati. Utenti amd64 possono usarli come utenti x86.
</p>
<impo>
Per abilitare l'agpgart per certi chipset AMD64 occorre disabilitare il supporto K8 IOMMU.
</impo>
</body>
</section>
<section>
<title>Ho un portatile. Il mio modello ATI "mobility" è supportato?</title>
<body>
<p>Dovrebbe esserlo, ma potresti avere qualche problema a causa del PCI id OEM che il
chip potrebbe avere. Nella maggior parte dei casi dovrai editare a mano il tuo file di configurazione
o utilizzare l'utility <c>xorgconfig</c>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Installazione</title>
<section>
<title>Pacchetti</title>
<body>
<p>
<ul>
<li>L'ebuild di <c>xorg-x11</c> fornisce l'implementazione di X11 . </li>
<li>Per un kernel 2.6 i moduli DRI possono essere inclusi col kernel o
essere forniti dall'ebuild <c>x11-drm</c></li>.
<li>Per un kernel 2.4 si deve usare l'ebuild <c>x11-drm</c> </li>
<li>L'ebuild <c>ati-drivers</c> fornisce i driver ATI per X e i moduli per il kernel, sia per la serie 2.4 che per la 2.6.
</li>
</ul>
</p>
<p>
Se si vuole usare il supporto agpgart <e>interno</e> agli ATI driver invece
del supporto nel kernel, il driver agpgart e il driver specifico per il chipset (nella configurazione del kernel) devono essere compilati come moduli o non inclusi.
</p>
<pre caption="Installazione driver">
<comment>Per installare solo i driver ed i moduli Rage 128 con x11
</comment>
# <i>VIDEO_CARDS="rage128" emerge x11-drm</i>
<comment>Per avere solo il supporto Radeon</comment>
<comment>(R100, R200, R250, R280 but not R300 yet)</comment>
# <i>VIDEO_CARDS="radeon" emerge x11-drm</i>
<comment>Per installare i driver ATI closed source</comment>
<comment>(R200,R250, R280 and R300 only)</comment>
# <i>emerge ati-drivers</i>
<comment>Per installare solo X11 senza moduli del kernel</comment>
# <i>emerge xorg-x11</i>
</pre>
</body>
</section>
<section>
<title>Configurazione</title>
<body>
<p>È consigliabile utilizzare <c>xorgcfg</c> o <c>xorgconfig</c> per generare
il file di configurazione <path>xorg.conf</path>. Alternativamente, si può usare
l'opzione di autoconfigurazione di Xorg:
</p>
<pre caption="Configurazione automatica di X">
# <i>X -configure</i>
</pre>
<p>
Per maggiori informazioni su come creare un file di configurazione <c>xorg.conf</c> minimo,
è possibile consultare la
<uri link="/doc/it/xorg-config.xml">Desktop Configuration Guide</uri>.</p>
<note> Gli utilizzatori degli ati-drivers possono usare anche <c>fglrxconfig</c> se si sono installati gli <c>ati-drivers</c>.</note>
<impo>Gli utenti PPC dovrebbero usare l'utility di configurazione <c>Xorgautoconfig</c>,
emergendo l'ebuild <c>Xorgautoconfig</c>.</impo>
</body>
</section>
</chapter>
<chapter>
<title>Altre risorse</title>
<section>
<body>
<p>
Maggiori informazioni su Gentoo Linux e i driver binari ATI Radeon possono essere trovati su
<uri
link="http://odin.prohosting.com/wedge01/gentoo-radeon-faq.html">Wedge
Unofficial Gentoo ATI Radeon FAQ</uri>.
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: ldap-howto.xml --]
[-- Type: text/xml; name=ldap-howto.xml, Size: 19215 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/it/ldap-howto.xml">
<title>Gentoo Guide all'autenticazione OpenLDAP </title>
<author title="Autore">
<mail link="sj7trunks@pendulus.net">Benjamin Coles</mail>
</author>
<author title="Revisore">
<mail link="swift@gentoo.org">Sven Vermeulen</mail>
</author>
<author title="Revisore">
<mail link="tseng@gentoo.org">Brandon Hale</mail>
</author>
<author title="Revisore">
<mail link="bennyc@gentoo.org">Benny Chuang</mail>
</author>
<author title="Traduttore">
<mail link="emorelli@gentoo.it">Enrico Morelli</mail>
</author>
<author title="Traduttore">Team Italiano</author>
<abstract>
Questa guida introduce le basi di LDAP e mostra come configurare
OpenLDAP allo scopo di autenticare un gruppo di computer Gentoo.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license />
<version>0.22</version>
<date>21 Ottobre 2005</date>
<chapter>
<title>Iniziare con OpenLDAP</title>
<section>
<title>Cos'è LDAP?</title>
<body>
<p>
LDAP è l'acronimo di <e>Lightweight Directory Access Protocol</e>.
Basato su X.500, comprende molte delle sue funzioni primarie,
ma non include molte delle funzioni esoteriche che X.500 possiede.
Ma cos'è questo X.500 e cosa centra con LDAP?
</p>
<p>
Nel concetto OSI, l'X.500 è un modello per i Directory Service.
Contiene le definizioni per i namespace ed i protocolli
per la ricerca e l'aggiornamento delle directory.
Comunque, X.500 è stato trovato essere eccessivo in molte
situazioni. Entriamo in LDAP. Come l'X.500, provvede
un modello data/namespace per le directory ed anche un protocollo.
Comunque, LDAP è progettato per essere eseguito direttamente
al di sopra dello stack TCP/IP. Si pensi a LDAP come una
versione più snella di X.500.
</p>
</body>
</section>
<section>
<title>Cos'è una directory</title>
<body>
<p>
Una directory è un database specializzato progettato
per frequenti richieste ma infrequenti aggiornamenti.
Al contrario di database generali, non contiene
il supporto per transazioni o funzionalità di roll-back.
Le directory sono facilmente replicabili per incrementarne
la disponibilità e l'affidabilità. Quando le directory vengono
replicate, sono permesse inconsistenze temporanee finché
non divengono eventualmente sincronizzate.
</p>
</body>
</section>
<section>
<title>Come sono strutturate le informazioni</title>
<body>
<p>
Tutte le informazioni all'interno di una directory
sono strutturate gerarchicamente. Inoltre, se si vogliono
inserire dati dentro una directory, la directory
deve sapere come memorizzare questi dati all'interno
di un albero. Si veda l'esempio di una finta compagnia
e ad un albero stile Internet:
</p>
<pre caption = "Struttura organizzativa di GenFic, una compagnia finta di Gentoo">
dc: com
|
dc: genfic <comment>(Organisation)</comment>
/ \
ou: people servers <comment>(Organisational Units)</comment>
/ \ ..
uid: .. jhon <comment>(OU-specific data)</comment>
</pre>
<p>
Dato che non sono stati introdotti dati nel database in questo
schema ascii, ogni nodo di questo albero deve essere definito.
Per dare un nome ad ogni nodo, LDAP usa un naming scheme.
Molte distribuzioni LDAP (incluso OpenLDAP) contengono già
un certo numero di schemi predefiniti (generalmente approvati),
come inetorgperson, uno schema frequentemente usato
per definire utenti.
</p>
<p>
Utenti interessati sono incoraggiati a leggere la
<uri link="http://www.openldap.org/doc/admin21/">OpenLDAP Admin Guide</uri>.
</p>
</body>
</section>
<section>
<title>Per cosa si usa LDAP</title>
<body>
<p>
LDAP può essere usato per vari scopi. Questo documento si focalizza
sulla gestione centralizzata degli utenti, mantenendo tutti gli
account utente in una singola collocazione LDAP (il che non significa
che sia alloggiato su un singolo server, LDAP supporta scalabilità e
ridondanza), sono comunque raggiungibili anche altri obiettivi usando LDAP.
</p>
<ul>
<li>Infrastruttura per chiavi pubbliche</li>
<li>Calendari condivisi</li>
<li>Rubriche condivise</li>
<li>Depositi per DHCP, DNS, ...</li>
<li>
Direttive di classe per la configurazione di sistemi (tenendo traccia
delle configurazioni di vari server)
</li>
<li>...</li>
</ul>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione di OpenLDAP</title>
<section>
<title>Configurazione iniziale</title>
<body>
<note>
In questo documento si userà l'indirizzo genfic.com come
esempio. Si dovrà naturalmente cambiarlo per adattarlo allo scopo da raggiungere.
Comunque, ci si assicuri che il nodo iniziale sia il top level di un dominio
ufficiale (net, com, cc, be, it, ...).
</note>
<p>
Prima di tutto occorre installare tutti i componenti necessari
sul proprio server:
</p>
<pre caption="Installazione di OpenLDAP">
# <i>emerge openldap pam_ldap nss_ldap migrationtools</i>
# <i>chown ldap:ldap /var/lib/openldap-ldbm /var/lib/openldap-data /var/lib/openldap-slurp</i>
</pre>
<p>
Editare <path>/etc/openldap/slapd.conf</path> e aggiungere
ciò che segue a destra di <c>core.schema</c>:
</p>
<pre caption="/etc/openldap/slapd.conf">
<comment># Includere i data schemes necessari</comment>
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
<comment># Usare md5 per fare l'hash delle password</comment>
password-hash {md5}
<comment># Definire le proprietà SSL e TLS (opzionale)</comment>
TLSCertificateFile /etc/ssl/ldap.pem
TLSCertificateKeyFile /etc/openldap/ssl/ldap.pem
TLSCACertificateFile /etc/ssl/ldap.pem
<comment>Più avanti nel file...</comment>
database ldbm
suffix "dc=genfic,dc=com"
rootdn "cn=Manager,dc=genfic,dc=com"
rootpw <i>{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==</i>
directory /var/lib/openldap-ldbm
index objectClass eq
<comment>
Si può avere una password cryptata come quella sopra, con slappasswd -h {Md5}</comment>
</pre>
<p>
Editare il file di configurazione di LDAP:
</p>
<pre caption="/etc/openldap/ldap.conf">
# <i>nano -w /etc/openldap/ldap.conf</i>
<comment>Aggiungere...</comment>
BASE dc=genfic, dc=com
URI ldaps://auth.genfic.com:636/
TLS_REQCERT allow
</pre>
<p>
Si generi ora un certificato SSL per rendere
sicura la directory. Occorre rispondere alle domande che si ricevono
nel miglior modo possibile. Alla richiesta del <e>Common Name</e>, si inserisca
il nome che i client useranno quando contatteranno il server.
Di solito è il domainname completo del server (p.e. <path>auth.genfic.com</path>).
</p>
<pre caption="Generazione di un certificato SSL">
# <i>cd /etc/ssl</i>
# <i>openssl req -config /etc/ssl/openssl.cnf -new -x509 -nodes -out \
ldap.pem -keyout /etc/openldap/ssl/ldap.pem -days 999999</i>
# <i>chown ldap:ldap /etc/openldap/ssl/ldap.pem</i>
</pre>
<p>
Editare ora <path>/etc/conf.d/slapd</path> e aggiungere ciò che
segue, scommentando le linee esistenti:
</p>
<pre caption="/etc/conf.d/slapd">
OPTS="-h 'ldaps:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"
</pre>
<p>
Far partire slapd:
</p>
<pre caption = "Avvio di SLAPd">
# <i>/etc/init.d/slapd start</i>
</pre>
<p>
Si può fare un test col seguente comando:
</p>
<pre caption = "Testare il demone SLAPd">
# <i>ldapsearch -D "cn=Manager,dc=genfic,dc=com" -W</i>
</pre>
<p>
Se si riceve un errore, provare ad aggiungere <c>-d 255</c>
per incermentare la verbosità e risolvere il problema.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Migrare dati esistenti</title>
<section>
<title>Migrare account utente</title>
<body>
<p>
Si migreranno ora gli account utente. Aprire
<path>/usr/share/migrationtools/migrate_common.ph</path>
ed editare ciò che segue:
</p>
<pre caption="/usr/share/migrationtools/migrate_common.ph">
$DEFAULT_BASE = "dc=genfic,dc=com";
$EXTENDED_SCHEMA = 1;
<comment># Commentate queste linee a meno che non abbiate un mail sheme caricato</comment>
<comment>#$DEFAULT_MAIL_DOMAIN = "genfic.com";</comment>
<comment>#$DEFAULT_MAIL_HOST = "mail.genfic.com";</comment>
</pre>
<p>
Eseguire quindi gli script per la migrazione:
</p>
<pre caption="Esecuzione dei migration script">
# <i>export ETC_SHADOW=/etc/shadow</i>
# <i>cd /usr/share/migrationtools</i>
# <i>./migrate_base.pl > /tmp/base.ldif</i>
# <i>./migrate_group.pl /etc/group /tmp/group.ldif</i>
# <i>./migrate_hosts.pl /etc/hosts /tmp/hosts.ldif</i>
# <i>./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif</i>
</pre>
<p>
Questi ultimi passi migrano i file specificati nei file ldif
letti da LDAP. Aggiungere quindi i file alla directory:
</p>
<pre caption="Importare i dati nella directory">
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/base.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/group.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/passwd.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/hosts.ldif</i>
</pre>
<p>
Se si raggiunge un errore nei file ldif, si può riprendere da dove
si è terminato usando <c>ldapadd -c</c>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione del client</title>
<section>
<title>Configurazione di PAM</title>
<body>
<p>
Il primo passo è di configurare PAM per permettere l'autorizzazione
LDAP. Installare
<c>sys-auth/pam_ldap</c> per fornire il supporto dell'autorizzazione
LDAP a PAM e
<c>sys-auth/nss_ldap</c> in modo tale che il sistema
possa far fronte ai server LDAP per informazioni aggiuntive
(usate da <path>nsswitch.conf</path>).
</p>
<pre caption="Installare pam_ldap e nss_ldap">
# <i>emerge pam_ldap nss_ldap</i>
</pre>
<p>
Editare <path>/etc/pam.d/system-auth</path> in modo tale che assomigli a quello che segue:
</p>
<pre caption="/etc/pam.d/system-auth">
auth required pam_env.so
auth sufficient pam_unix.so likeauth nullok shadow
auth sufficient pam_ldap.so use_first_pass
auth required pam_deny.so
account requisite pam_unix.so
account sufficient pam_localuser.so
account required pam_ldap.so
password required pam_cracklib.so retry=3
password sufficient pam_unix.so nullok use_authtok shadow md5
password sufficient pam_ldap.so use_authtok use_first_pass
password required pam_deny.so
session required pam_limits.so
session required pam_unix.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0066
session optional pam_ldap.so
</pre>
<!-- Questo dovrebbe funzionare, vedere #87930
<note>
Se il login su questi sistemi usando ssh non funziona, provare a interscambiare
le due righe <c>auth sufficient</c>. Comunque, con questo interscambio, alcuni tool come <c>su</c> si
rifiuteranno di funzionare correttamente.
</note>
-->
<p>
Cambiare <path>/etc/ldap.conf</path> in modo da avere:
</p>
<pre caption="/etc/ldap.conf">
<comment>#host 127.0.0.1</comment>
<comment>#base dc=padl,dc=com</comment>
ssl start_tls
ssl on
suffix "dc=genfic,dc=com"
<comment>#rootbinddn uid=root,ou=People,dc=genfic,dc=com</comment>
uri ldaps://auth.genfic.com/
pam_password exop
ldap_version 3
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid
nss_base_passwd ou=People,dc=genfic,dc=com
nss_base_shadow ou=People,dc=genfic,dc=com
nss_base_group ou=Group,dc=genfic,dc=com
nss_base_hosts ou=Hosts,dc=genfic,dc=com
scope one
</pre>
<p>
Copiare quindi il file <path>ldap.conf</path> dal server ai client in modo che siano consapevoli dell'ambiente LDAP:
</p>
<pre caption="Copiare l'OpenLDAP ldap.conf">
<comment>(Sostituire a ldap-server il nome del proprio LDAP )</comment>
# <i>scp ldap-server:/etc/openldap/ldap.conf /etc/openldap</i>
</pre>
<p>
Si configurino infine i propri client in modo che
controllino il LDAP per gli account di sistema:
</p>
<pre caption="/etc/nsswitch.conf">
passwd: files ldap
group: files ldap
shadow: files ldap
</pre>
<p>
Per testare le modifiche, digitare:
</p>
<pre caption="Test LDAP Auth">
# <i>getent passwd|grep 0:0</i>
<comment>Si dovrebbero ricevere due righe di risposta:</comment>
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
</pre>
<p>
Se si nota che una delle linee poste nel proprio
<path>/etc/ldap.conf</path> era commentata
(la linea <c>rootbinddn</c>), non c'è da preoccuparsi, non ce n'è
bisogno a meno che non si voglia cambiare la
password degli utenti come superuser. In questo caso c'è
bisogno di mettere in chiaro la password di root
in <path>/etc/ldap.secret</path>. Questo è
<brite>PERICOLOSO</brite> e si dovrebbe cambiare l'accesso
del file in 600. Quello che faccio io è di lasciare questo
file in bianco e quando ho bisogno di cambiare la password
a qualcuno che è sia in ldap che in <path>/etc/passwd</path>,
metto la password di root nel file suddetto per 10 secondi mentre
cambio la password dell'utente e quindi la rimuovo subito
dopo che ho terminato.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Configurazioni per LDAP Server Security</title>
<section>
<title>Permessi OpenLDAP</title>
<body>
<p>
Se si dà un'occhiata a <path>/etc/openldap/slapd.conf</path>
si può notare che è possibile specificare le ACL (o permessi)
di quali dati gli utenti possono leggere e/o scrivere:
</p>
<pre caption="/etc/openldap/slapd.conf">
access to attrs="userPassword"
by dn="uid=root,ou=people,dc=genfic,dc=com" write
by dn="uid=John, ou=People,dc=genfic,dc=com" write
by anonymous auth
by self write
by * none
access to *
by dn="uid=root,ou=People,dc=genfic,dc=com" write
</pre>
<p>
Questo dà l'accesso a tutto ciò che un utente può modificare.
Se questa è un'informazione proprietaria, se ne ha l'accesso in scrittura; se l'informazione
è di un altro utente, la si può leggere; utenti anonimi devono
inviare login e password per avere l'accesso. Ci sono
quattro livelli, partendo dal più basso al più alto:
<c>auth search read write</c>.
</p>
<p>
La prossima ACL è leggermente più sicura, blocca infatti
ad un utente normale la lettura delle password shadow
di altri utenti:
</p>
<pre caption="/etc/openldap/slapd.conf">
access to dn=".*,dc=genfic,dc=com" attr="userPassword"
by dn="uid=root,ou=people,dc=genfic,dc=com" write
by dn="uid=John, ou=People,dc=genfic,dc=com" write
by anonymous auth
by self write
by * search
access to *
by dn="uid=root,ou=People,dc=genfic,dc=com" write
by * search
</pre>
<p>
Questo esempio dà a root e John l'accesso in
lettura/scrittura/ricerca in tutto l'albero
sotto <path>dc=genfic,dc=com</path>.
Questo permette agli utenti di cambiare le proprie
<path>userPassword</path>. Così per come finisce
la dichiarazione del filtro ognuno ha la possibilità
di ricercare ma non di leggere i risultati di tale ricerca.
Si possono avere acl multiple ma le regole vengono processate
dal basso verso l'alto, così quelle iniziali dovrebbero essere
quelle più restrittive.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Lavorare con OpenLDAP</title>
<section>
<title>Manutenzione delle directory</title>
<body>
<p>
Si può iniziare ad usare le directory per autenticare gli utenti
in apache/proftpd/qmail/samba. Si possono amministrare con Webmin,
che provvede un'interfaccia veramente facile. Si può anche
usare gq o directory_administrator.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Riconoscimenti</title>
<section>
<body>
<p>
Si ringrazia Matt Heler per averci prestato il
suo computer per gli scopi di questa guida. Grazie anche
agli amici in #ldap @ irc.freenode.net
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: hb-portage-diverttree.xml --]
[-- Type: text/xml; name=hb-portage-diverttree.xml, Size: 4426 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/handbook/hb-portage-diverttree.xml,v 1.3 2004/11/15 12:47:47 swift Exp $ -->
<sections>
<version>1.4</version>
<date>25 Novembre 2005</date>
<section>
<title>Usare un Portage Tree Subset</title>
<subsection>
<title>Escludere pacchetti e/o categorie</title>
<body>
<p>
Si possono selettivamente aggiornare certe categorie/pacchetti ed ignorarne
altre/i facendo in modo che <c>rsync</c> escluda
categorie/pacchetti durante la fase di <c>emerge --sync</c>.
</p>
<p>
Occorre definire il nome del file che contiene i pacchetti o le categorie da escludere nella
variabile <c>RSYNC_EXCLUDEFROM</c> in <path>/etc/make.conf</path>.
</p>
<pre caption="Definizione del file di esclusione in /etc/make.conf">
RSYNC_EXCLUDEFROM=/etc/portage/rsync_excludes
</pre>
<pre caption="Escludere tutti i giochi in /etc/portage/rsync_excludes">
games-*/*
</pre>
<p>
Si noti comunque che questo può portare ad avere problemi di dipendenze nuove,
aggiornando pacchetti che potrebbero dipendere da pacchetti nuovi ma esclusi.
</p>
</body>
</subsection>
</section>
<section>
<title>Aggiungere ebuild non ufficiali</title>
<subsection>
<title>Definizione di una propria directory Portage</title>
<body>
<p>
Il Portage può usare ebuild che non sono disponibili attraverso l'albero ufficiale. Per far questo, si può creare una nuova directory (per esempio
<path>/usr/local/portage</path>) entro la quale memorizzare gli ebuild di terze parti usando la stessa struttura delle directory dell'albero del Portage.
</p>
<p>
Si definisce quindi la variabile PORTDIR_OVERLAY in <path>/etc/make.conf</path> affinché punti alla directory creata precedentemente. Usando Portage dopo
queste modifiche, si potranno usare questi nuovi ebuild senza che vengano
rimossi o sovrascritti da un nuovo <c>emerge --sync</c>.
</p>
</body>
</subsection>
<subsection>
<title>Lavorare con diversi overlay</title>
<body>
<p>
Per gli utenti che sviluppano su diversi strati, testano pacchetti
prima di porli nell'albero di Portage o vogliono semplicemente usare ebuild non ufficiali
di varie sorgenti, il pacchetto
<c>app-portage/gentoolkit-dev</c> fornisce
<c>gensync</c>, uno strumento che aiuta a mantenere aggiornati gli
overlay repository.
</p>
<p>
Con <c>gensync</c> si possono aggiornate tutti i repository in una volta sola o selezionare solo alcuni di essi. Ogni repository dovrebbe avere un
file
<path>.syncsource</path> nella directory di configurazione <path>/etc/gensync/</path> che contiene l'ubicazione del repository, il nome, l'ID, ecc.
</p>
<p>
Si supponga di avere due repository aggiuntivi chiamati <c>java</c>
( per lo sviluppo di ebuild java) e <c>entapps</c> (per le applicazioni
sviluppate per la propria azienda), si potranno aggiornare nel seguente modo:
</p>
<pre caption="Usare gensync per aggiornare alcuni repository">
# <i>gensync java entapps</i>
</pre>
</body>
</subsection>
</section>
<section>
<title>Software non mantenuto dal Portage</title>
<subsection>
<title>Usare il Portage con software proprietario</title>
<body>
<p>
In alcuni casi si può voler configurare, installare e manutenere software
proprietario senza dover automatizzare il processo del Portage anche se
Portage può provvedere il titolo software. Casi conosciuti sono sorgenti
del kernel e driver nvidia. Si può configurare Portage in modo tale che
sappia che certi pacchetti sono stati installati manualmente nel sistema.
Questo processo è chiamato <e>injecting</e> ed è supportato dal Portage
attraverso il file
<path>/etc/portage/profile/package.provided</path>.
</p>
<p>
Per esempio, per informare il Portage che
<c>vanilla-sources-2.6.11.6</c> è stato installato manualmente, aggiungere
la seguente linea a
<path>/etc/portage/profile/package.provided</path>:
</p>
<pre caption="Esempio di linea per package.provided">
vanilla-sources-2.6.11.6
</pre>
</body>
</subsection>
</section>
</sections>
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2005-11-06 11:12 Francesco Grieco
2005-11-07 21:04 ` Marco Mascherpa
0 siblings, 1 reply; 39+ messages in thread
From: Francesco Grieco @ 2005-11-06 11:12 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 180 bytes --]
Doc: power-management-guide.xml
Ver: 1.25
Rev: 1.15
Doc: openafs.xml
Ver: 1.0
Rev: 1.22
Doc: cron-guide.xml
Ver: 1.4
Rev: 1.5
Salutti a tutta la Mailing List!
Francesco Grieco
[-- Attachment #2: cron-guide.xml --]
[-- Type: text/xml, Size: 19805 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/it/cron-guide.xml,v 1.4 2005/04/03 19:54:24 so Exp $ -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link="/doc/it/cron-guide.xml" lang="it">
<title>Guida a Cron per Gentoo Linux</title>
<author title="Autore">
<mail link="airuike@gmail.com">Eric Brown</mail>
</author>
<author title="Editor">
<mail link="neysx@gentoo.org">Xavier Neys</mail>
</author>
<author title="Traduzione">
<mail link="frgrieco@aliceposta.it">Francesco Grieco</mail>
</author>
<abstract>
Questa guida tratta la configurazione e l'uso di cron.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>
<version>1.4</version>
<date>2005-07-25</date>
<chapter>
<title>Le basi di Cron</title>
<section>
<title>Cosa fa cron</title>
<body>
<p>
Cron è un demone che esegue operazioni pianificate gestite tramite il comando
<c>crontab</c>. Porta a termine questo compito attivandosi ogni minuto e controllando
la presenza di operazioni da eseguire (cron-job) in tutti i crontab degli utenti.
</p>
<note>
<e>crontab</e> è sia il nome di una lista di cron-job (operazioni da eseguire)
che il nome del comando necessario alla configurazione di tale lista.
</note>
</body>
</section>
<section>
<title>Cron</title>
<body>
<p>
In Portage ci sono almeno tre implementazioni differenti di cron tra cui scegliere.
Tutte presentano una interfaccia simile, vale a dire l'uso di <c>crontab</c> o
di un comando simile. E' presente, inoltre, una utility strettamente collegata a
cron, Anacron; funziona in simbiosi con cron su sistemi che non sono in continua esecuzione.
</p>
<p>
Prima di analizzare il funzionamento di cron, è necessario scegliere quale
variante tra quelle disponibili utilizzare. Segue, quindi, una breve
descrizione per ognuna.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Quale implementazione di cron utilizzare</title>
<section>
<title>Vixie cron</title>
<body>
<p>
Vixie cron è una completa implementazione di cron basata su SysV cron.
Ogni utente ha un proprio crontab ed è autorizzato a specificare
proprie variabili d'ambiente al suo interno. Diversamente da altre
varianti di cron, supporta SELinux e PAM. Supporta, inoltre, meno architetture rispetto
a Dcron, ma più di Fcron.
</p>
<p>
Caratteristiche di <c>sys-process/vixie-cron</c>:
</p>
<ul>
<li>
Supporto per SELinux
</li>
<li>
Supporto per PAM <path>/etc/security/limits.conf</path>
</li>
<li>
Configurazione di variabili d'ambiente in crontab (PATH, SHELL, HOME, ecc.)
</li>
<li>
Ogni utente può avere il proprio crontab; l'accesso è controllato da cron.allow
e cron.deny
</li>
</ul>
</body>
</section>
<section>
<title>Il Cron di Dillon</title>
<body>
<p>
Dcron aspira ad essere la più semplice, elegante e sicura implementazione di cron.
Non permette la configurazione delle variabili d'ambiente in crontab e tutti i
cron-job sono eseguiti da <path>/bin/sh</path>. Come Vixie cron, ogni utente ha il proprio
crontab.
</p>
<p>
Caratteristiche di <c>sys-process/dcron</c>:
</p>
<ul>
<li>
Veloce, semplice e privo di funzioni inutili
</li>
<li>
L'accesso a <c>crontab</c> è limitato agli utenti del gruppo cron.
</li>
</ul>
</body>
</section>
<section>
<title>Fcron</title>
<body>
<p>
Fcron mira a rimpiazzare Vixie cron e Anacron. E' progettato per funzionare su
sistemi che non sono continuamente in esecuzione e si presenta con caratteristiche
extra. Possiede un job startup constraint, un job serialization control, l'abilitÃ
di assegnare valori di nice (priorità ) alle operazioni pianificate e l'abilità di pianificare
operazioni da eseguire all'avvio del sistema. Per maggiori informazioni è possibile
consultare la sua <uri link="http://fcron.free.fr/">pagina ufficiale</uri>.
</p>
<p>
Caratteristiche di <c>sys-process/fcron</c>:
</p>
<ul>
<li>
Progettato per funzionare su sistemi in esecuzione non continua; in pratica
può eseguire operazioni dopo un riavvio nel caso la normale esecuzione pianificata
fosse stata "mancata".
</li>
<li>
Configurazione di variabili d'ambiente e molte altre opzioni in crontab.
</li>
<li>
Ogni utente può avere il proprio crontab, l'accesso è controllato da cron.allow e
da cron.deny
</li>
<li>
Sintassi avanzata di crontab per il supporto di molte nuove caratteristiche
</li>
</ul>
</body>
</section>
<section>
<title>Anacron</title>
<body>
<p>
Anacron non è un demone cron, ma qualcosa che di solito funziona in simbiosi con esso.
Esegue comandi a intervalli specificati in giorni e considera il sistema sul quale
è eseguito in non continua esecuzione; eseguirà le operazioni pianificate "mancate" (se
ad esempio il sistema è spento nel momento in cui un'operazione doveva essere eseguita).
Anacron dipende dal demone cron.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Uso di cron</title>
<section>
<title>Installazione</title>
<body>
<p>
Scelta l'implementazione di cron ritenuta più adatta alle proprie esigenze,
la si installi con il comando emerge.
</p>
<pre caption="Installazione di cron">
# <i>emerge dcron</i>
# <i>rc-update add dcron default</i>
# <i>/etc/init.d/dcron start</i>
</pre>
<p>
A meno che non si abbia installato Fcron, si consiglia l'utilizzo anche di Anacron.
</p>
<pre caption="Installazione di anacron">
# <i>emerge anacron</i>
# <i>rc-update add anacron default</i>
# <i>/etc/init.d/anacron start</i>
</pre>
</body>
</section>
<section>
<title>Crontab di Sistema</title>
<body>
<p>
Terminata l'installazione, verrà chiesta l'esecuzione dell'istruzione
<c>crontab /etc/crontab</c>. Il file <path>/etc/crontab</path> è il proprio
<e>crontab di sistema</e>. Una installazione default di Gentoo utilizza questo file
per eseguire gli script presenti in <path>/etc/cron.{daily,hourly,weekly,monthly}</path>.
Si noti che Vixie cron gestisce le operazioni in <path>/etc/crontab</path> in maniera
automatica.
Gli utilizzatori di Dcron e Fcron dovranno eseguire <c>crontab /etc/crontab</c> ogni
qual volta vengano apportati dei cambiamenti a <path>/etc/crontab</path>.
</p>
<p>
Le operazioni pianificate nel crontab di sistema non saranno mostrate nella
lista dei cron-job visualizzata tramite <c>crontab -l</c>.
</p>
<p>
Naturalmente è anche possibile non utilizzare nessun crontab di sistema. Se si è scelto
uno fra Dcron e Fcron, <e>non</e> si esegua <c>crontab /etc/crontab</c>.
Se si è scelto Vixie cron, si dovrebbero commentare (per escludere) tutte le linee presenti in
<path>/etc/crontab</path>.
</p>
<pre caption="Commento (per l'esclusione) di tutte le linee presenti in /etc/crontab">
# <i>sed -i -e "s/^/#/" /etc/crontab</i>
</pre>
</body>
</section>
<section>
<title>Dare l'accesso a cron ad altri utenti</title>
<body>
<p>
Se si vuole che anche altri utenti al di fuori di root abbiano accesso al demone cron,
la lettura di questa sezione è obbigata; in caso contrario la si può tranquillamente saltare
seguendo invece la sezione <uri link="#scheduling">Organizzazione dei cron-job</uri>.
</p>
<note>
Dando ad un altro utente l'accesso a crontab non gli si permetterà di eseguire cron-job
come root. Se si vuole rendere un utente in grado di editare il crontab di root,
si deve utilizzare <c>sudo</c>.
</note>
<p>
Se si vuole permettere ad un utente di utilizzare crontab, indipendentemente dall'implementazione
di cron utilizzata, questo dovrà essere prima aggiunto al gruppo cron. Ad esempio, se si
vuole aggiungere l'utente <e>wepy</e> al gruppo cron, si dovrà digitare:
</p>
<pre caption="Aggiunta di un utente al gruppo cron">
# <i>gpasswd -a wepy cron</i>
</pre>
<p>
E' tutto quello che bisogna fare per dare ad un utente l'accesso a crontab,
se si sta utilizzando <b>Dcron</b>. Gli utilizzatori di Dcron possono passare alla
lettura della sezione successiva <uri link="#scheduling">Organizazzione dei cron-job</uri>,
tutti gli altri dovranno continuare nella normale lettura.
</p>
<p>
Nel caso di utilizzo di <b>Fcron</b>, sarà necessario editare
<path>/etc/fcron/fcron.deny</path> e <path>/etc/fcron/fcron.allow</path>.
Il metodo più sicuro è quello per prima cosa di negare l'accesso a tutti in
<path>/etc/fcron/fcron.deny</path> e in seguito permettere l'accesso
in maniera esplicita all'utente in <path>/etc/fcron/fcron.allow</path>.
</p>
<impo>
<b>Se nè <path>/etc/fcron/fcron.allow</path> nè <path>/etc/fcron/fcron.deny</path>
esistono, tutti gli utenti del gruppo cron saranno in grado di utilizzare crontab.</b>
Per fcron, il file di configurazione <path>fcron.allow</path> di default, permette a <b>tutti gli utenti</b> del gruppo cron l'accesso a fcrontab.
</impo>
<pre caption="Permessi in fcron.deny">
all
</pre>
<p>Ora, se per ipotesi avessimo un utente <e>wepy</e> e volessimo che fosse in grado
di gestire le proprie operazioni pianificate, andrebbe aggiunto a <path>/etc/fcron/fcron.allow</path>
in questo modo:
</p>
<pre caption="Permessi in fcron.allow">
wepy
</pre>
<p>
Se si è scelto <b>Vixie cron</b>, sarà solamente necessario editare
<path>/etc/cron.allow</path>.
</p>
<impo>
E' importante notare che se esiste solamente <path>/etc/cron.allow</path>, allora
solamente gli utenti del gruppo cron elencati al suo interno avranno accesso;
se esiste un <path>/etc/cron.deny</path> anche vuoto, allora tutti gli utenti
del gruppo cron saranno autorizzati!
<b>Non si lasci per questo vuoto <path>/etc/cron.deny</path> se non si ha nessun
<path>/etc/cron.allow</path>.</b>
</impo>
<p>
Per esempio, se si vuole permettere l'accesso all'utente <e>wepy</e>, questo
andrebbe aggiunto a <path>/etc/cron.allow</path> come mostrato:
</p>
<pre caption="Permessi in /etc/cron.allow">
wepy
</pre>
</body>
</section>
<section id="scheduling">
<title>Organizzazione dei cron-job</title>
<body>
<p>
Il processo di configurazione dei crontab è differente a seconda dell'implementazione
di cron che si è scelta. Tutte, però, supportano gli stessi set di comandi di base:
aggiunta e sostituzione dei crontab, modifica dei crontab, cancellazione dei crontab
e visualizzazione dei cron-job in crontab. La lista seguente mostra come eseguire questi
comandi per ogni implementazione.
</p>
<table>
<tr>
<th>Versione</th>
<th>Comando di edit </th>
<th>Comando di rimozione </th>
<th>Comando di aggiunta </th>
<th>Comando di visualizzazione </th>
</tr>
<tr>
<ti>dcron</ti>
<ti><c>crontab -e</c></ti>
<ti><c>crontab -d</c></ti>
<ti><c>crontab <e>file</e></c></ti>
<ti><c>crontab -l</c></ti>
</tr>
<tr>
<ti>fcron</ti>
<ti><c>fcrontab -e</c></ti>
<ti><c>fcrontab -r</c></ti>
<ti><c>fcrontab <e>file</e></c></ti>
<ti><c>fcrontab -l</c></ti>
</tr>
<tr>
<ti>vixie-cron</ti>
<ti><c>crontab -e</c></ti>
<ti><c>crontab -r</c></ti>
<ti><c>crontab <e>file</e></c></ti>
<ti><c>crontab -l</c></ti>
</tr>
</table>
<note>
Fcron crea un link simbolico a <c>crontab</c>.
</note>
<p>
Prima di utilizzare uno qualsiasi di questi comandi, è necessario sapere come è fatto
crontab. Ogni linea in un crontab necessita di cinque campi nell'ordine seguente:
i minuti (0-59), le ore (0-23), i giorni del mese (1-31), i mesi (1-12), e i giorni
della settimana (0-7, Lunedì è 1, Domenica è 0 e 7). I giorni della settimana e i
mesi possono essere inseriti anche tramite delle abbreviazioni inglesi di tre
lettere come mon, tue, jan, feb, ecc. Ogni campo può anche contenere un campo
di valori (ad esempio 1-5 per lun-ven), una lista di valori separati da virgole
(ad esempio 1,2,3 o mon,tue,wed) oppure un campo di valori a <e>salti</e>
(ad esempio 1-6/2 indica 1,3,5).
</p>
<p>
Tutto questo inizialmente può sembrare confusionario ma, con pochi esempi,
risulterà molto semplice.
</p>
<pre caption="Esempi">
<comment># Esegue /bin/false ogni minuto</comment>
* * * * * /bin/false
<comment># Esegue /bin/false all'1:35 di mon,tue,wed (lun,mar,mer) e il 4 di ogni mese</comment>
35 1 4 * mon-wed /bin/false
<comment># Esegue /bin/true alle 22:25 del 2 Marzo</comment>
25 22 2 3 * /bin/true
<comment># Esegue /bin/false alle 2:00 ogni Lunedì Mercoledì e Venerdì</comment>
0 2 * * 1-5/2 /bin/false
</pre>
<note>
Si noti come si debba specificare giorni della settimana e giorni del mese prima di
combinarli. Se si ha * per uno solo di questi, l'altro campo ha precedenza, mentre
* per entrambi ha il significato di tutti i giorni.
</note>
<p>
Per provare tutto quello che si è imparato, saranno illustrati i passaggi per
inserire alcuni cron-job. Prima di tutto si crei un file chiamato <path>crons.cron</path>
e lo si editi come di seguito riportato:
</p>
<pre caption="Modifica di crons.cron">
$ <i>nano crons.cron</i>
<comment>#Min Ore Giorni Mesi Giorno della settimana</comment>
10 3 1 1 * /bin/echo "i don't really like cron"
30 16 * 1,2 * /bin/echo "i like cron a little"
* * * 1-12/2 * /bin/echo "i really like cron"
</pre>
<p>
Ora si può aggiungere questo crontab al sistema con un "comando di aggiunta", come mostrato
di seguito.
</p>
<pre caption="Un nuovo crontab">
# <i>crontab crons.cron</i>
</pre>
<note>
Non seguirà nessun output a questo comando a meno che non si utilizzi la redirezione dell'output.
</note>
<p>
Per verificare le operazioni pianificate, si userà l'appropriato <e>comando di
visualizzazione</e> dalla tabella precedentemente mostrata.
</p>
<pre caption="Visualizzazione dei cron-job">
# <i>crontab -l</i>
</pre>
<p>
Dovrebbe apparire una lista con il contenuto di <path>crons.cron</path>, in caso
contrario si potrebbe avere utilizzato un comando errato per l'aggiunta del crontab.
</p>
<p>
Questo crontab dovrebbe mostrare sullo schermo un "i really like cron" ogni minuto di ogni ora
di ogni giorno di ogni mese. Inoltre il crontab dovrebbe stampare un "i like cron a little"
alle 16.30 per ogni giorno di Gennaio e di Febbraio. Per finire si dovrebbe
anche vedere un "i don't really like cron" alle 3:10 del primo giorno di Gennaio.
</p>
<p>
Se si sta utilizzando Anacron, si dovrebbe continuare la lettura di questa
sezione. In caso contrario, si passi alla prossima <uri link="#editing">modifica dei crontab</uri>.
</p>
<p>
Gli utilizzatori di Anacron dovranno editare il file <path>/etc/anacrontab</path>.
Questo file ha quattro campi: il numero di giorni tra ogni esecuzione, il ritardo in
minuti dopo il quale eseguire l'operazione, il nome dell'operazione pianificata e il comando da eseguire.
</p>
<p>
Per esempio, per fare eseguire <c>echo "i like anacron"</c> ogni 5 giorni, 10
minuti dopo l'avvio di Anacron:
</p>
<pre caption="/etc/anacrontab">
5 10 wasting-time /bin/echo "i like anacron"
</pre>
<p>
Anacron termina dopo l'esecuzione di tutte le operazioni, così se si volesse che
controlli queste operazioni ogni giorno, sarà necessario utilizzare cron.
Le istruzioni alla fine della prossima sezione mostreranno come farlo.
</p>
</body>
</section>
<section id="editing">
<title>Modifica dei crontab</title>
<body>
<p>
Ovviamente, non si vuole che il proprio sistema ripeta quanto vi piaccia cron ("i really
like cron") ogni minuto. Per questo, ora si passerà alla rimozione del crontab con il
corrispondente <e>comando di rimozione</e>. Mostreremo la lista dei cron-job successiva
a questa operazione, per essere sicuri che tutto sia andato nel verso giusto.
</p>
<pre caption="Rimozione di un crontab">
# <i>crontab -d</i>
# <i>crontab -l</i>
</pre>
<p>
Non si dovrebbe vedere nessun cron-job nell'output da <c>crontab -l</c>. Se si dovessero
vedere operazioni elencate, questo vorrà dire che i crontab non saranno stati rimossi,
bisognerà controllare di avere usato il corretto <e>comando di rimozione</e> per la
propria implementazione di cron.
</p>
<p>
Creato uno stato "pulito" di cron, si cercherà ora di inserire qualcosa di utile
nel crontab di <b>root</b>. Molte persone vorrebbero eseguire <c>updatedb</c> settimanalmente
per essere sicure del corretto funzionamento di <c>slocate</c>. Per aggiungere
questa operazione al crontab, bisogna per prima cosa editare ancora
<path>crons.cron</path> in modo simile a quanto di seguito riportato:
</p>
<pre caption="Un vero crontab">
22 2 * * 1 /usr/bin/updatedb
</pre>
<p>
Questo farà eseguire updatedb alle 2:22 A.M. di lunedì mattina ogni settimana.
Si dovrà ora immettere il crontab con il comando di <e>nuova operazione</e> dalla
tabella e controllare nuovamente la lista.
</p>
<pre caption="Lista dei cron-job">
# <i>crontab crons.cron</i>
# <i>crontab -l</i>
</pre>
<p>
Ora, vogliamo, ad esempio, inserire un <c>emerge --sync</c> alle operazioni
automatiche giornaliere. Si potrebbe farlo editando <path>crons.cron</path>
e in seguito utilizzando <c>crontab crons.cron</c> proprio come prima oppure
utilizzando l'apposito <e>comando di edit</e> dalla tabella. Questo procedimento
dà la possibilità di editare il proprio crontab senza dipendere da file esterni
quali ad esempio <path>crons.cron</path>.
</p>
<pre caption="Edit di un crontab">
# <i>crontab -e</i>
</pre>
<p>
Questo dovrebbe aprire il crontab dell'utente con un editor. Se si vuole un
<c>emerge --sync</c> giornaliero alle 6:30 del mattino, si dovrà inserire
qualcosa del genere:
</p>
<pre caption="Un vero crontab">
22 2 * * 1 /usr/bin/updatedb
30 6 * * * /usr/bin/emerge --sync
<comment>(se si sta utilizzando anacron, si aggiunga questa linea)</comment>
30 7 * * * /usr/sbin/anacron -s
</pre>
<p>
Ancora, si controlli la lista dei cron-job come fatto nell'esempio precendente per
essere sicuri di avere inserito le operazione pianificate. Se visualizzate,
si sarà certi della correttezza delle operazioni effettuate.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Note Finali</title>
<section>
<title>Problemi</title>
<body>
<p>
Se si dovessero avere problemi nel far funzionare correttamente cron, questa sezione
potrebbe essere d'aiuto.
</p>
<ul>
<li>
<b>Cron è in esecuzione?</b><br/>
Esegui <c>ps ax | grep cron</c>, assicurati che cron sia mostrato!
</li>
<li>
<b>Cron sta funzionando?</b><br/>
Prova: * * * * * /bin/echo "foobar" >> /file_che_possiedi, e assicurati che funzioni
</li>
<li>
<b>Il tuo comando funziona?</b><br/>
Prova: * * * * * /bin/foobar > /file_che_possiedi 2>&1, cerca gli errori
in /file_che_possiedi
</li>
<li>
<b>Cron riesce ad eseguire le tue operazioni?</b><br/>
Controlla il log di cron, di solito <path>/var/log/cron.log</path> oppure
<path>/var/log/messages</path> per gli errori
</li>
<li>
<b>Ci sono dead.letter?</b><br/>
Di solito cron manda mail in presenza di un problema, controlla la tua posta oppure
guarda in ~/dead.letter
</li>
</ul>
<p>
Si ricordi che ogni implementazione di cron è differente dalle altre e il campo delle
caratteristiche/funzioni può variare di molto. Ci si assicuri di controllare
le pagine di man per crontab, fcrontab o anacrontab a seconda di quello
che si sta utilizzando.
</p>
<p>
Buona fortuna!
</p>
</body>
</section>
</chapter>
</guide>
[-- Attachment #3: power-management-guide.xml --]
[-- Type: text/xml, Size: 55036 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/it/power-management-guide.xml,v 1.6 2005/07/19 21:34:29 so Exp $ -->
<guide link="/doc/it/power-management-guide.xml">
<title>Guida alla Gestione Energetica</title>
<author title="Autore">
<mail link="fragfred@gmx.de">Dennis Nienhüser </mail>
</author>
<author title="Traduzione">
<mail link="frgrieco@aliceposta.it">Francesco Grieco</mail>
</author>
<abstract>
La gestione energetica è l'unica soluzione per estendere la durata della batteria
sui sistemi mobile come i notebook. Questa guida ne illustra la sua configurazione.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>
<version>1.25</version>
<date>2005-10-02</date>
<chapter>
<title>Introduzione</title>
<section>
<title>A cosa serve la Gestione Energetica?</title>
<body>
<p>
Capacità e durata delle batterie dei notebook sono migliorate molto nel corso
degli ultimi anni. Tuttavia i moderni processori consumano molta più energia dei
vecchi e ad ogni nuova generazione di notebook si aggiungono nuove periferiche
"affamate" di energia. Ecco il perchè dell'importanza della gestione energetica.
Applicando buone politiche di risparmio energetico non sarà sempre necessario
acquistare un'altra batteria.
</p>
</body>
</section>
<section>
<title>Breve panoramica</title>
<body>
<p>
Questa guida tratta della gestione energetica per i <e>notebook</e>.
Alcune sezioni potrebbero essere valide anche per i <e>server</e>, altre
non lo sono sicuramente e potrebbero causare problemi. Si consiglia
fortemente di non applicare niente di quello contenuto in questa guida
a macchine server a meno che non si sappia veramente quello che si
sta facendo.
</p>
<p>
Poichè questa guida diventa sempre più lunga, segue una breve panoramica di
ciò che sarà trattato.
</p>
<p>
La sezione <e>Prerequisiti</e> tratta di alcuni requisiti di base necessari
per tutte le sezioni a seguire della guida. Include settaggi del BIOS e
particolari configurazioni nel kernel. I seguenti tre capitoli pongono
l'attenzione sui componenti che tipicamente consumano maggiore energia -
il processore, il display e l'hard disk. Ognuno di essi pùo essere configurato
separatamente. <e>Power Management della CPU</e> mostra come modificare la frequenza del
processore al fine di risparmiare energia senza un eccessivo calo delle performance.
Alcuni stratagemmi in <e>Power Management dell'Hard Disk</e> permettono di
allegerire il carico di lavoro del disco (avendo come effetto anche una
riduzione del livello di rumore). Indicazioni anche per le card Wireless LAN e
per le periferiche USB in <e>Power Management delle altre periferiche</e> mentre
un altro intero capitolo è dedicato agli (ancora sperimentali) <e>Stati di Sleep</e>.
Infine un ultimo capitolo dedicato ai <e>Problemi</e> più comuni in cui
è possibile incorrere.
</p>
</body>
</section>
<section>
<title>Bilancio energetico per ogni componente</title>
<body>
<figure link="/images/energy-budget.png" short="Quale componente consuma quanta
energia?" caption="Peso energetico per ogni componente"/>
<p>
Quasi tutti i componenti possono funzionare in differenti stati - off, sleep, idle, active -
consumando a seconda dei casi diverse quantità di energia. La maggior parte dell'energia
viene consumata dal display LCD, dalla CPU e dagli hard disk. Spesso alcuni di essi
sono in grado di attivare politiche di gestione energetica attraverso il BIOS, ma
una configurazione intelligente del proprio sistema operativo adattabile
a diverse situazioni può ottenere molto di più.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Prerequisiti</title>
<section>
<title>Prima di tutto</title>
<body>
<p>Prima di entrare nei dettagli della gestione energetica per le singole periferiche,
vi sono alcuni requisiti. Dopo aver controllato i settaggi del BIOS, è necessario
attivare alcune opzioni del kernel - in breve ACPI, sleep states e CPU frequency scaling.
Poichè il risparmio energetico comporta una perdita delle prestazioni o un aumento
della latenza, deve essere attivato, naturalmente, solamente in assenza di una
connessione a rete elettrica. Da qui la necessità di un nuovo runlevel <e>battery</e>.
</p>
</body>
</section>
<section>
<title>Il BIOS</title>
<body>
<p>
Per prima cosa è necessario controllare i settaggi relativi al Power Management
nel BIOS. Di solito la soluzione migliore è combinare i settaggi del BIOS alle
politiche del sistema operativo, ma per il momento è meglio disabilitare le
funzioni del BIOS. In questo modo niente interferisce con le nuove politiche
imposte dal sistema operativo. Dopo aver configurato tutto per bene, sarÃ
necessario riabilitare tutte le funzioni del BIOS.
</p>
</body>
</section>
<section>
<title>Configurazione del Kernel</title>
<body>
<p>
Il supporto dell'ACPI (Advanced Configuration and Power Interface) nel kernel
è ancora in fase di sviluppo. Pertanto è consigliabile usare sempre il kernel
più recente.
</p>
<p>
In Portage ci sono differenti versioni del kernel. Quelle consigliate
sono <c>gentoo-sources</c> e <c>suspend2-sources</c>. La seconda, in particolare,
contiene le ultime patch per il supporto Software Suspend 2; si veda la sezione
sugli stati di sleep per maggiori dettagli. Nelle opzioni di configurazione del
kernel vanno, in ogni caso, attivate le opzioni seguenti:
</p>
<pre caption="Settaggi minimi del kernel per il Power Management (Kernel 2.6)">
Power Management Options --->
[*] Power Management Support
[ ] Software Suspend
ACPI( Advanced Configuration and Power Interface ) Support --->
[*] ACPI Support
[ ] Sleep States
[ ] /proc/acpi/sleep (deprecated)
[*] AC Adapter
[*] Battery
<M> Button
<M> Video
[ ] Generic Hotkey
<M> Fan
<M> Processor
<M> Thermal Zone
< > ASUS/Medion Laptop Extras
< > IBM ThinkPad Laptop Extras
< > Toshiba Laptop Extras
(0) Disable ACPI for systems before Jan 1st this year
[ ] Debug Statements
[*] Power Management Timer Support
< > ACPI0004,PNP0A05 and PNP0A06 Container Driver (EXPERIMENTAL)
CPU Frequency Scaling --->
[*] CPU Frequency scaling
[ ] Enable CPUfreq debugging
< > CPU frequency translation statistics
[ ] CPU frequency translation statistics details
Default CPUFreq governor (userspace)
<*> 'performance' governor
<*> 'powersave' governor
<*> 'ondemand' cpufreq policy governor
<*> 'conservative' cpufreq governor
<*> CPU frequency table helpers
<M> ACPI Processor P-States driver
<*> <i>driver CPUFreq a seconda del processore</i>
</pre>
<p>
E' possibile attivare, a propria discrezione, Software Suspend e Sleep States.
I possessori di notebook ASUS, Medion, Thinkpad IBM o Toshiba devono attivare i relativi
moduli specifici.
</p>
<p>
Il kernel deve essere in grado di attivare il CPU frequency scaling (cambio di frequenza della CPU) sul processore. Poichè ogni CPU presenta una interfaccia differente dalle altre, è necessario scegliere il driver giusto per il proprio processore. Si presti attenzione - ad esempio attivando
<e>Intel Pentium 4 clock modulation</e> su un Pentium M, si otterà molto probabilmente un sistema poco stabile. La documentazione del kernel può chiarire qualsiasi dubbio in proposito.
</p>
<p>
Dopo la compilazione del kernel bisogna assicurarsi del corretto caricamento dei moduli
all'avvio e riavviare il notebook con il nuovo kernel con ACPI abilitato. Per installare il demone acpi,
da riga di comando <c>emerge sys-power/acpid</c>. Il suddetto demone gestisce
eventi quali il passaggio da corrente a batteria o la chiusura del lid. E' necessario
assicurarsi che i moduli siano caricatici se non compilati direttamente
all'interno del proprio kernel. Ora si avvii il demone acpid con <c>/etc/init.d/acpid
start</c> e si esegua <c>rc-update add acpid default</c> per caricarlo all'avvio. Il suo
utilizzo verrà spiegato in seguito.
</p>
<pre caption="Installazione di acpid">
# <i>emerge sys-power/acpid</i>
# <i>/etc/init.d/acpid start</i>
# <i>rc-update add acpid default</i>
</pre>
</body>
</section>
<section>
<title>Creazione del runlevel "battery"</title>
<body>
<p>
La configurazione di default attiverà il risparmio energetico solo quando
necessario - in pratica quando il notebook funziona con la propria
batteria. Per effettuare il passaggio fra stato di corrente e di batteria,
sarà necessario creare un runlevel <e>battery</e> in grado di gestire
l'avvio e il blocco degli script di risparmio energetico.
</p>
<note>
Se l'idea di avere un ulteriore runlevel non convince, è possibile saltare
questa sezione. Naturalmente ciò renderà tutto un pò più complicato. La
sezione seguente considera l'esistenza di un runlevel <e>battery</e>.
</note>
<pre caption="Creazione di un runlevel battery">
# <i>cd /etc/runlevels</i>
# <i>cp -a default battery</i>
</pre>
<p>
Finito. Il nuovo runlevel <e>battery</e> contiene tutto come <e>default</e>, ma
non c'è ancora nessun cambio automatico tra i due livelli.
</p>
</body>
</section>
<section>
<title>Risposta agli eventi ACPI</title>
<body>
<p>
Di solito gli eventi ACPI sono la chiusura del lid, il cambio della sorgente
energetica e il bottone di sleep. Il cambio di sorgente energetica è un evento
importante e deve necessariamente generare un cambio di runlevel. Di questo
si occuperà un piccolo script.
</p>
<p>
E' necessario uno script in grado di cambiare il runlevel fra <c>default</c>
e <c>battery</c> a seconda della sorgente energetica utilizzata. Lo
script utilizzata il comando <c>on_ac_power</c> fornito da
<c>sys-power/powermgmt-base</c> - ci si assicuri dell'installazione di tale
pacchetto nel proprio sistema.
</p>
<pre caption="Installazione di powermgt-base">
<i># emerge powermgmt-base</i>
</pre>
<p>
Ora, tramite il comando <c>on_ac_power && echo AC available || echo Running on batteries</c> eseguito in shell è possibile determinare la sorgente energetica
in uso.
Lo script seguente è responsabile del cambio di runlevel.
Va salvato come <path>/etc/acpi/actions/pmg_switch_runlevel.sh</path>
</p>
<pre caption="/etc/acpi/actions/pmg_switch_runlevel.sh">
#!/bin/bash
<comment># INIZIO configurazione</comment>
RUNLEVEL_AC="default"
RUNLEVEL_BATTERY="battery"
<comment># FINE configurazione</comment>
if [ ! -d "/etc/runlevels/${RUNLEVEL_AC}" ]
then
logger "${0}: Runlevel ${RUNLEVEL_AC} does not exist. Aborting."
exit 1
fi
if [ ! -d "/etc/runlevels/${RUNLEVEL_BATTERY}" ]
then
logger "${0}: Runlevel ${RUNLEVEL_BATTERY} does not exist. Aborting."
exit 1
fi
if on_ac_power
then
if [[ "$(cat /var/lib/init.d/softlevel)" != "${RUNLEVEL_AC}" ]]
then
logger "Switching to ${RUNLEVEL_AC} runlevel"
/sbin/rc ${RUNLEVEL_AC}
fi
elif [[ "$(cat /var/lib/init.d/softlevel)" != "${RUNLEVEL_BATTERY}" ]]
then
logger "Switching to ${RUNLEVEL_BATTERY} runlevel"
/sbin/rc ${RUNLEVEL_BATTERY}
fi
</pre>
<p>
Con il comando <c>chmod +x /etc/acpi/actions/pmg_switch_runlevel.sh</c> si
rende lo script eseguibile. Infine è necessario che lo script venga eseguito
ad ogni cambio di sorgente energetica dal demone <c>acpid</c>. Bisogna, però,
sapere quali eventi vengono generati al cambio di sorgente energetica. Gli
eventi vengono chiamati <e>ac_adapter</e> e <e>battery</e> sulla maggior parte
dei notebook, ma si potrebbero avere delle eccezioni.
</p>
<pre caption="Determinazione degli eventi ACPI al cambio di sorgente energetica">
<i># tail -f /var/log/acpid | grep "received event"</i>
</pre>
<p>
Si esegua il comando sopra indicato e si stacchi il cavo di alimentazione dal
proprio notebook.
</p>
<pre caption="Esempio di output al cambio di sorgente energetica">
[Tue Sep 20 17:39:06 2005] received event "ac_adapter AC 00000080 00000000"
[Tue Sep 20 17:39:06 2005] received event "battery BAT0 00000080 00000001"
</pre>
<p>
La parte interessante di questo output è quella che segue <e>received event</e>
fra le virgolette. Sarà necessario inserire queste stringhe nello script che segue.
In caso il proprio notebook dovesse generare più eventi o sempre lo stesso evento,
non c'è da preoccuparsi.
</p>
<pre caption="/etc/acpi/events/pmg_ac_adapter">
<comment># Si sostituisca "ac_adapter" indicato di seguito con l'evento generato dal proprio notebook</comment>
<comment># Ad esempio ac_adapter.* sarà sostituito da ac_adapter AC 00000080 00000000</comment>
event=ac_adapter.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e
</pre>
<pre caption="/etc/acpi/events/pmg_battery">
<comment># Si sostituisca "battery" indicato di seguito con l'evento generato dal proprio notebook</comment>
<comment># Ad esempio battery.* sarà sostituito da battery BAT0 00000080 00000001</comment>
event=battery.*
action=/etc/acpi/actions/pmg_switch_runlevel.sh %e
</pre>
<p>
Sarà necessario riavviare il demone acpid per rendere attivi i cambiamenti
apportati.
</p>
<pre caption="Riavvio del demone acpid">
<i># /etc/init.d/acpid restart</i>
</pre>
<p>
Provando ora ad attaccare e staccare l'alimentazione a corrente, nei log di
sistema dovrebbero apparire a seconda dei casi i messaggi "Switching to AC
mode" o "Switching to battery mode".
Se lo script non è in grado di rilevare correttamente la sorgente di energia
utilizzata, è possibile consultare la sezione Problemi.
</p>
<p>
A causa della natura del meccanismo degli eventi, il notebook, al boot,
passa al runlevel default che sia o meno collegato alla rete elettrica.
Questo va bene se si è collegati direttamente a rete elettrica,
certamente no quando si avvia da batteria.
Una soluzione potrebbe essere l'aggiunta di un parametro del tipo
<c>softlevel=battery</c> al proprio boot loader, ma ci si potrebbe dimenticare
di selezionarlo. Una soluzione migliore è sicuramente quella di generare
un finto evento ACPI alla fine del processo di boot e lasciare che lo script
<path>pmg_switch_runlevel.sh</path> decida quale runlevel utilizzare.
Si apra con il proprio editor il file <path>/etc/conf.d/local.start</path>
e si aggiungano le linee:
</p>
<pre caption="Cambio del runlevel al boot del notebook con la modifica di local.start">
<comment># Finto evento acpi per cambiare runlevel se scollegati da rete elettrica</comment>
/etc/acpi/actions/pmg_switch_runlevel.sh "battery/battery"
</pre>
<p>
Conclusa questa parte preparativa, è ora possibile attivare le politiche di
gestione energetica per ogni singolo componente.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Power Management della CPU</title>
<section>
<title>Terminologia tecnica</title>
<body>
<p>
Il CPU frequency scaling introduce alcuni termini tecnici che potrebbero
essere non conosciuti. Segue, per questo motivo, una breve introduzione.
</p>
<p>
Prima di tutto, il kernel deve essere in grado di cambiare la frequenza
di funzionamento della CPU. Il <e>CPUfreq processor driver</e> contiene
i comandi per effettuare questa operazione su ogni tipo di CPU. Per questo motivo è importante
indicare il driver giusto da utilizzare nel proprio kernel (operazione giÃ
effettuata precedentemente). Inoltre, il kernel deve anche scegliere la
frequenza corretta di funzionamento da utilizzare nelle diverse situazioni. Questa viene
fissata in base ad una <e>policy</e> (politica di gestione) che consiste in
una <e>CPUfreq policy</e> e in un <e>governor</e> (regolatore).
Una CPUfreq policy non è altro che un insieme di due numeri che definiscono
un campo all'interno del quale la frequenza può oscillare - un valore minimo e
uno massimo. Il governor, invece, decide quale delle frequenze disponibili fra la
minima e la massima utilizzare. Ad esempio, il <e>powersave governor</e> utilizza
sempre la frequenza più bassa disponibile, il <e>performance governor</e>, invece,
la più alta. L'<e>userspace governor</e> non sceglie nessuna frequenza in particolare
ma utilizza quella indicata dall'utente (o da un programma in
userspace); il valore della frequenza viene letto da
<path>/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed</path>.
</p>
<p>
Questo può non sembrare un cambiamento dinamico della frequenza e in effetti non lo
è. La dinamicità può essere realizzata con diversi approcci.
Ad esempio, <e>ondemand governor</e> prende le sue decisioni in
base al carico di lavoro della CPU. La stessa cosa viene fatta
da utility come <c>cpudyn</c>, <c>cpufreqd</c>, <c>powernowd</c> e
molte altre. Gli eventi ACPI possono essere utilizzati per attivare o
disattivare i cambi dinamici della frequenza a seconda della sorgente energetica utilizzata.
</p>
</body>
</section>
<section>
<title>Settaggio manuale della frequenza</title>
<body>
<p>
Diminuendo la velocità e il voltaggio della CPU si hanno due vantaggi: viene
consumata meno energia e il notebook non si riscalda eccessivamente. Il grande
svantaggio, naturalmente, è una perdita di performance. La diminuzione della
velocità del processore resta in ogni caso un buon compromesso fra calo di
performance e risparmio energetico.
</p>
<note>
Non tutti i notebook supportano il frequency scaling. In caso di dubbi, una lista
dei processori supportati si trova nella sezione <e>Problemi</e>.
</note>
<p>
E' ora di provare il corretto funzionamento del cambio di frequenza della CPU.
<c>sys-power/cpufrequtils</c> è un programmino molto utile per effettuare un semplice debug.
</p>
<pre caption="Controllo della frequenza della CPU">
# <i>emerge cpufrequtils</i>
# <i>cpufreq-info</i>
</pre>
<p>
Ecco un esempio di quello che si ottiene:
</p>
<pre caption="Output di esempio di cpufreq-info">
cpufrequtils 0.3: cpufreq-info (C) Dominik Brodowski 2004
Report errors and bugs to linux@brodo.de, please.
analyzing CPU 0:
driver: centrino
CPUs which need to switch frequency at the same time: 0
hardware limits: 600 MHz - 1.40 GHz
available frequency steps: 600 MHz, 800 MHz, 1000 MHz, 1.20 GHz, 1.40 GHz
available cpufreq governors: conservative, ondemand, powersave, userspace, performance
current policy: frequency should be within 924 MHz and 1.40 GHz.
The governor "performance" may decide which speed to use
within this range.
current CPU frequency is 1.40 GHz.
</pre>
<p>
Si utilizzi <c>cpufreq-set</c> per assicurarsi che il cambio di frequenza funzioni.
Il comando <c>cpufreq-set -g ondemand</c>, ad esempio, attiva l'ondemand governor;
lo si esegua e si verifichi il cambiamento con <c>cpufreq-info</c>. Se non funziona
come dovrebbe, la sezione Problemi alla fine di questa guida potrebbe essere d'aiuto.
</p>
</body>
</section>
<section>
<title>Adattamento automatico della frequenza</title>
<body>
<p>
Tutto questo è molto semplice, ma scomodo da effettuare tutti i giorni. Meglio lasciare che sia
il proprio sistema a settare automaticamente la frequenza appropriata.
La tabella seguente presenta una panoramica delle utility necessarie a questo compito. E' suddivisa
in tre categorie: <e>kernel</e> per soluzioni che hanno bisogno solo
del supporto del kernel, <e>demone</e> per programmi che lavorano in
background e <e>GUI</e> per programmi che forniscono una interfaccia
grafica per una configurazione più semplice.
</p>
<table>
<tr>
<th>Nome</th>
<th>Categoria</th>
<th>Causa cambio</th>
<th>Governor del kernel</th>
<th>Governor supportati</th>
<th>Note</th>
</tr>
<tr>
<ti>'ondemand' governor</ti>
<ti>Kernel</ti>
<ti>Carico della CPU</ti>
<ti>N.A.</ti>
<ti>N.A.</ti>
<ti>
Scegle la frequenza massima in caso di carico della CPU e frequenze
man mano più basse in caso di CPU libera.
Configurazione attraverso i file presenti in
<path>/sys/devices/system/cpu/cpu0/cpufreq/ondemand/</path>.
Richiede ancora tool in userspace (programmi, script) in caso
di utilizzo del cambio di governor.
</ti>
</tr>
<tr>
<ti>'conservative' governor</ti>
<ti>Kernel</ti>
<ti>Carico della CPU</ti>
<ti>N.A.</ti>
<ti>N.A.</ti>
<ti>
A differenza dell'ondemand governor, il conservative non salta alla massima
frequenza quando il carico della CPU cresce, ma aumenta poco alla volta
la frequenza. Configurazione attraverso i file presenti in
<path>/sys/devices/system/cpu/cpu0/cpufreq/ondemand/</path>. Richiede ancora
tool in userspace (programmi, script) in caso di utilizzo del cambio di
governor.
</ti>
</tr>
<tr>
<ti><uri link="http://mnm.uib.es/~gallir/cpudyn/">cpudyn</uri></ti>
<ti>Demone</ti>
<ti>Carico della CPU</ti>
<ti>Performance, powersave</ti>
<ti>Dynamic</ti>
<ti>
Supporta anche lo standby dei dischi - si noti, però, che il <e>laptop mode</e>
in molti casi funziona decisamente meglio.
</ti>
</tr>
<tr>
<ti><uri link="http://sourceforge.net/projects/cpufreqd/">cpufreqd</uri></ti>
<ti>Demone</ti>
<ti>Stato della batteria, Carico della CPU, Temperatura, Programmi in
esecuzione</ti>
<ti>Tutti disponibili</ti>
<ti>Nessuno</ti>
<ti>
Configurazioni sofisticata (ma anche complesse).
</ti>
</tr>
<tr>
<ti>
<uri link="http://www.deater.net/john/powernowd.html">powernowd</uri>
</ti>
<ti>Demone</ti>
<ti>Carico della CPU</ti>
<ti>Nessuno</ti>
<ti>Passive, sine, aggressive</ti>
<ti>
Supporta SMP.
</ti>
</tr>
<tr>
<ti>
<uri link="http://fatcat.ftj.agh.edu.pl/~nelchael/index.php?cat=projs&subcat=ncpufreqd&language=en">ncpufreqd</uri>
</ti>
<ti>Demone</ti>
<ti>Temperatura</ti>
<ti>Nessuno</ti>
<ti>Powersave, performance</ti>
<ti>
Passa da modalità performance a powersave a seconda della temperatura del sistema.
Molto utile su notebook con noti problemi di surriscaldamento.
</ti>
</tr>
<tr>
<ti><uri link="http://www.goop.org/~jeremy/speedfreq/">speedfreq</uri></ti>
<ti>Demone</ti>
<ti>Carico della CPU</ti>
<ti>Nessuno</ti>
<ti>Dynamic, powersave, performance, fixed speed</ti>
<ti>
Semplice da configurare con una interfaccia client/server. Richiede un
kernel della serie 2.6. Il suo sviluppo è stato interrotto, non è più funzionante
e per questo motivo è stato rimosso da Portage.
</ti>
</tr>
<tr>
<ti><uri link="http://cpuspeedy.sourceforge.net/">gtk-cpuspeedy</uri></ti>
<ti>GUI</ti>
<ti>Nessuno</ti>
<ti>Nessuno</ti>
<ti>Nessuno</ti>
<ti>
Applicazione per Gnome, utility grafica per configurare manualmente la
frequenza della CPU. Non offre nessun tipo di automazione.
</ti>
</tr>
<tr>
<ti>klaptopdaemon</ti>
<ti>GUI</ti>
<ti>Stato della batteria</ti>
<ti>Tutti disponibili</ti>
<ti>Nessuno</ti>
<ti>
Solamente per KDE, 'ondemand' governor necessario per il cambio dinamico della
frequenza.
</ti>
</tr>
</table>
<p>
L'adattamento della frequenza della CPU al carico di lavoro corrente del notebook
può sembrare semplice da attuare ad una prima occhiata, ma in realtà non lo è.
Un algoritmo errato può causare cambi continui fra due frequenze o
spreco di energia quando la frequenza viene portata inutilmente a valori troppo alti.
</p>
<p>
Quale scegliere? Se si è indecisi, un'ottima scelta è <c>cpufreqd</c>:
</p>
<pre caption="Installazione di cpufreqd">
# <i>emerge cpufreqd</i>
</pre>
<p>
La configurazione di <c>cpufreqd</c> avviene attraverso il file <path>/etc/cpufreqd.conf</path>.
Quella di default fornita con cpufreqd sembra leggermente confusionaria. Si raccomanda
di sostituirla con quella fornita dallo sviluppatore Gentoo, Henrik Brix Andersen (si guardi di seguito).
</p>
<pre caption="/etc/cpufreqd.conf">
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
pm_type=acpi
verbosity=5
[Profile]
name=ondemand
minfreq=0%
maxfreq=100%
policy=ondemand
[Profile]
name=conservative
minfreq=0%
maxfreq=100%
policy=conservative
[Profile]
name=powersave
minfreq=0%
maxfreq=100%
policy=powersave
[Profile]
name=performance
minfreq=0%
maxfreq=100%
policy=performance
[Rule]
name=battery
ac=off
profile=conservative
[Rule]
name=battery_low
ac=off
battery_interval=0-10
profile=powersave
[Rule]
name=ac
ac=on
profile=ondemand
</pre>
<p>
Ora si può avviare il demone cpufreqd. Lo si aggiunga ai runlevel <e>default</e> e
<e>battery</e> come mostrato di seguito.
</p>
<pre caption="Avvio di cpufreqd">
# <i>rc-update add cpufreqd default battery</i>
# <i>rc</i>
</pre>
<warn>
Non si esegua più di uno dei programmi sopra citati contemporaneamente. Potrebbero, infatti, esserci problemi come un cambio continuo fra due frequenze.
</warn>
</body>
</section>
<section>
<title>Verifica di funzionamento a seguito delle modifiche apportate</title>
<body>
<p>
L'ultima cosa da controllare è che le nuove politiche di risparmio energetico
facciano bene il loro lavoro. Un modo semplice per verificare ciò è il
monitoraggio della velocità della CPU mentre è al lavoro sul notebook:
</p>
<pre caption="Monitoraggio della velocità della CPU">
# <i>watch grep \"cpu MHz\" /proc/cpuinfo</i>
</pre>
<p>
Se <path>/proc/cpuinfo</path> non dovesse venire aggiornato (sezione Problemi), si provi a monitorare
la frequenza della CPU con:
</p>
<pre caption="Monitoraggio alternativo della velocità della CPU">
# <i>watch x86info -mhz</i>
</pre>
<p>
A seconda dei settaggi, la velocità della CPU dovrebbe aumentare in caso di richieste
d'uso, diminuire in mancanza di attività o, semplicemente, rimanere costante. Quando
si utilizza cpufreqd e la voce verbosity è impostata ad un valore di 5 o più in <path>cpufreqd.conf</path>,
nei syslog si otterrano maggiori informarzioni su quello che accade.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Power Management del display LCD</title>
<section>
<title>Il maggior consumatore di energia</title>
<body>
<p>
Come si può vedere dalla <uri link="#doc_chap1_fig1">figura 1.1</uri>, il display
LCD consuma la maggior parte dell'energia (questo potrebbe non valere nel caso
di CPU non mobile). Per questo non solo è importante spegnere il display quando
non utilizzato, ma anche ridurre il backlight (retroilluminazione) se possibile.
Molti notebook offrono la possibilità di regolare il backlight.
</p>
<p>
La prima cosa da controllare sono i settaggi di standby/suspend/off del display.
Questi sono tutti valori che dipendono dal windowmanager. L'oscuramento del
terminale può essere effettuato con <c>setterm -blank <numero-di-minutiM></c>,
<c>setterm -powersave on</c> e <c>setterm -powerdown <numero-di-minutiM></c>.
Per X.org, si può editare <path>/etc/X11/xorg.conf</path> come di seguito riportato:
</p>
<pre caption="Settaggi dell'LCD suspend in X.org e in XFree86">
Section "ServerLayout"
Identifier [...]
[...]
Option "BlankTime" "5" <comment># Oscura lo schermo dopo cinque minuti (Fake)</comment>
Option "StandbyTime" "10" <comment># Spegne lo schermo dopo 10 minuti (DPMS)</comment>
Option "SuspendTime" "20" <comment># Suspend dopo 20 minuti</comment>
Option "OffTime" "30" <comment># Spegne dopo mezz'ora</comment>
[...]
EndSection
[...]
Section "Monitor"
Identifier [...]
Option "DPMS" "true"
[...]
EndSection
</pre>
<p>
Vale lo stesso per XFree86 e <path>/etc/X11/XF86Config</path>.
</p>
<p>
Probabilmente la gestione del backlight (retroilluminazione) è il punto più importante.
Se si è in grado di accedere al controllo tramite un tool, bisogna scrivere un piccolo
script in grado di settare il backlight nella modalità batteria e inserirlo nel
runlevel <e>battery</e>. Lo script seguente dovrebbe funzionare sulla maggior parte
dei notebook IBM Thinkpad. Necessita del pacchetto <c>app-laptop/ibm-acpi</c>
oppure dell'opzione appropriata selezionata nel kernel.
</p>
<warn>
Il supporto per la regolazione della luminosità è sperimentale nel pacchetto
ibm-acpi. L'accesso diretto all'hardware di questa utility potrebbe provocare blocchi inaspettati del sistema.
Si legga a tale proposito il <uri link="http://ibm-acpi.sourceforge.net/">sito ufficiale</uri> del pacchetto ibm-acpi.
</warn>
<p>
Per essere in grado di regolare il livello di lumonisità , il modulo ibm_acpi deve essere
caricato con il paramentro sperimentale.
</p>
<pre caption="Caricamento automatico del modulo ibm_acpi">
<comment>(Prima di proseguire si legga l'avviso sopra riportato circa l'instabilità di questa opzione)</comment>
<i># emerge ibm-acpi</i>
<i># echo "options ibm_acpi experimental=1" >> /etc/modules.d/ibm_acpi</i>
<i># /sbin/modules-update</i>
<i># echo ibm_acpi >> /etc/modules.autoload.d/kernel-2.6</i>
<i># modprobe ibm_acpi</i>
</pre>
<p>
Queste operazioni non dovrebbero produrre messaggi di errore e,
dopo il caricamento del modulo, dovrebbe essere creato il file <path>/proc/acpi/ibm/brightness</path>.
Uno script di avvio avrà il compito di scegliere il miglior livello di luminositÃ
in base alla sorgente energetica disponibile.
</p>
<pre caption="/etc/conf.d/lcd-brightness">
<comment># Si legga /proc/acpi/ibm/brightness per i valori disponibili</comment>
<comment># Per altre informazioni /usr/share/doc/ibm-acpi-*/README.gz</comment>
<comment># Livello di lumonisità in modalità corrente. Di default 7.</comment>
BRIGHTNESS_AC=7
<comment># Livello di luminosità in modalità batteria. Di default 4..</comment>
BRIGHTNESS_BATTERY=4
</pre>
<pre caption="/etc/init.d/lcd-brightness">
#!/sbin/runscript
set_brightness() {
if on_ac_power
then
LEVEL=${BRIGHTNESS_AC:-7}
else
LEVEL=${BRIGHTNESS_BATTERY:-4}
fi
if [ -f /proc/acpi/ibm/brightness ]
then
ebegin "Setting LCD brightness"
echo "level ${LEVEL}" > /proc/acpi/ibm/brightness
eend $?
else
ewarn "Setting LCD brightness is not supported."
ewarn "Check that ibm_acpi is loaded into the kernel"
fi
}
start() {
set_brightness
}
stop () {
set_brightness
}
</pre>
<p>
Una volta finito, bisogna assicurarsi che la luminosità sia regolata automaticamente
aggiungendo lo script al runlevel battery.
</p>
<pre caption="Regolazione automatica della luminosità ">
<i># chmod +x /etc/init.d/lcd-brightness</i>
<i># rc-update add lcd-brightness battery</i>
<i># rc</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Power Management dell'Hard Disk</title>
<section>
<title>Sleep quando in idle</title>
<body>
<p>
L'obiettivo è portare l'hard disk nello stato di sleep il prima possibile
quando non viene utilizzato. Verranno analizzate due possibilità . La prima
è <c>cpudyn</c>. Bisogna decommentare le linee nella sezione "Disk Options" in
<path>/etc/conf.d/cpudyn</path>. Per portare l'hard disk in sleep dopo 60 secondi
di inattività si deve agire nel modo seguente:
</p>
<pre caption="Uso di cpudyn per lo standby dell'hard disk">
<comment>################################################
# DISK OPTIONS
# (opzioni disabilitate di default)
################################################
#
# Tempo dopo il quale porre il disco in modalità standby
# in mancanza di operazioni IO (in secondi)
#
</comment>
TIMEOUT=60
<comment>
#
# Dischi sui quali effettuare lo spindown (separati da virgole)
#
</comment>
DISKS=/dev/hda
</pre>
<p>
La seconda possibilità è quella di usare un piccolo script e hdparm.
Si crei <path>/etc/init.d/pm.hda</path> come riportato di seguito:
</p>
<pre caption="Uso di hdparm per lo standby dell'hard disk">
#!/sbin/runscript
depend() {
after hdparm
}
start() {
ebegin "Activating Power Management for Hard Drives"
hdparm -q -S12 /dev/hda
eend $?
}
stop () {
ebegin "Deactivating Power Management for Hard Drives"
hdparm -q -S253 /dev/hda
eend $?
}
</pre>
<p>
Con <c>man hdparm</c> è possibile avere informazioni sulle varie opzioni.
Una volta pronto, è necessario aggiungere lo script al runlevel battery.
</p>
<pre caption="Configurazione per lo standby automatico del disco">
# <i>chmod +x /etc/init.d/pm.hda</i>
# <i>/sbin/depscan.sh</i>
# <i>rc-update add pm.hda battery</i>
</pre>
<impo>
Si presti molta attenzione ai settaggi di sleep e di spin down del proprio hard disk.
Settaggi troppo spinti (valori molto piccoli) possono danneggiare l'hardware e invalidare
la garanzia.
</impo>
</body>
</section>
<section>
<title>Aumento del tempo di idle - laptop-mode</title>
<body>
<p>
Gli ultimi kernel (2.6.6 e maggiori, gli ultimi della serie 2.4 e altri con alcune patch)
includono il così detto <e>laptop-mode</e>. Quando attivato, le operazioni
di scrittura avvengono ogni 10 minuti (invece di 30 secondi). Questo fà si che l'hard disk
non lavori in maniera continuativa.
</p>
<pre caption="Avvio automatico del laptop-mode">
# <i>emerge laptop-mode-tools</i>
</pre>
<p>
I <c>laptop-mode-tools</c> hanno la propria configurazione in
<path>/etc/laptop-mode/laptop-mode.conf</path>. E' possibile
adattarla alle proprie esigenze; la documentazione è presente nel file di configurazione stesso.
Per rendere automatico l'avvio <c>rc-update add laptop_mode battery</c>.
</p>
</body>
</section>
<section>
<title>Altri consigli</title>
<body>
<p>
Oltre a portare il proprio hard disk nello stato di sleep il prima possibile,
una buona idea è minimizzare gli accessi al disco. Si osservino i processi che
scrivono sul disco frequentemente - syslogd è un buon candidato. Non sarà necessario
fermarlo completamente, ma è possibile modificare il suo file di configurazione in
modo tale che non tutto venga loggato, riducendo in questo modo gli accessi al disco.
Cups scrive sul disco periodicamente, quindi fermarlo e attivarlo manualmente
solo quando necessario è una buona idea.
</p>
<pre caption="Disattivare cups nella modalità batteria">
# <i>rc-update del cupsd battery</i>
</pre>
<p>
Un'altra possibilità è la disattivazione dello swap nella modalità batteria.
Prima di scrivere qualcosa che attivi e disattivi lo swap, bisogna assicurarsi
che ci sia abbastanza RAM e che lo swap non sia usato pesantemente, altrimenti
si potrebbero avere problemi.
</p>
<p>
Se non si vuole utilizzare il laptop-mode, è sempre possibile minimizzare gli
accessi al disco montando alcune directory come <e>tmpfs</e> - gli accessi in
scrittura non avvengono sul disco, ma nella memoria principale e vengono
persi con l'operazione di unmount. Spesso è utile montare <path>/tmp</path>
allo stesso modo - il suo contenuto viene in ogni caso perso ad ogni reboot
che sia montato o meno sul disco o in RAM. Bisogna solo essere certi
di avere RAM a sufficienza e nessun programma (come un client per i download o
un programma di compressione) che abbia bisogno di molto spazio in <path>/tmp</path>.
Per usare questa soluzione è necessario avere il supporto tmpfs abilitato
nel kernel e aggiungere una linea come la seguente in <path>/etc/fstab</path>:
</p>
<pre caption="Modifica di /etc/fstab per rendere /tmp volatile">
none /tmp tmpfs size=32m 0 0
</pre>
<warn>
Si presti attenzione al parametro size e lo si modifichi per il proprio sistema.
Se non si è sicuri, non lo si modifichi, in quanto si creerebbero facilmente
grossi cali di performance (effetto collo di bottiglia). Se si volesse montare
<path>/var/log</path> nello stesso modo, non bisogna dimenticare di unire i file
di log al disco prima di effettuare l'unmounting. Sono essenziali. Montare anche
/var/tmp allo stesso modo è inutile. Portage usa questa directory per la compilazione...
</warn>
</body>
</section>
</chapter>
<chapter>
<title>Power Management per altre periferiche</title>
<section>
<title>Schede grafiche</title>
<body>
<p>
Se si è in possesso di una scheda grafica ATI con supporto PowerPlay (dynamic
clock scaling per le GPU, graphic processing unit), in X.org è possibile
abilitare questa caratteristica. Bisogna aprire il file
<path>/etc/X11/xorg.conf</path> e aggiungere (oppure attivare) l'opzione
<c>DynamicClocks</c> nella sezione Device. Questa opzione attivita su alcuni
sistemi può provocare blocchi o crash.
</p>
<pre caption="Attivazione del supporto PowerPlay per le schede grafiche ATI in X.org">
Section "Device"
[...]
Option "DynamicClocks" "on"
EndSection
</pre>
</body>
</section>
<section>
<title>Power Management del Wireless</title>
<body>
<p>
Le card Wireless LAN consumano poca energia. E' possibile inserirle nella modalitÃ
risparmio energetico in analogia allo script pm.hda.
</p>
<pre caption="Power Management automatico per le WLAN">
#!/sbin/runscript
start() {
ebegin "Activating Power Management for Wireless LAN"
iwconfig wlan0 power on power max period 3
eend $?
}
stop () {
ebegin "Deactivating Power Management for Wireless LAN"
iwconfig wlan0 power off
eend $?
}
</pre>
<p>
L'esecuzione di questo script porta la wlan0 in modalità risparmio energetico
ponendola in stato di sleep dopo tre secondi di assenza di traffico.
Lo si salvi come <path>/etc/init.d/pm.wlan0</path> e lo si aggiunga al runlevel
battery come gli altri. Per dettagli e maggiori opzioni <c>man iwconfig</c>.
Se i propri driver oppure l'access point supportano il cambio del beacon time,
questo può essere un altro modo per risparmiare ancora più energia.
</p>
<pre caption="Power Management for WLAN">
# <i>chmod +x /etc/init.d/pm.wlan0</i>
# <i>/sbin/depscan.sh</i>
# <i>rc-update add pm.wlan0 battery</i>
</pre>
</body>
</section>
<section>
<title>USB Power Management</title>
<body>
<p>
Ci sono due problemi riguardo il consumo di energia delle periferiche USB:
primo, periferiche come i mouse USB, le fotocamere digitali o le USB stick consumano
energia appena inserite. Non si può ovviare in nessun modo a questo problema
(a meno che non vengano rimosse se non necessarie). Secondo, quando ci sono
periferiche USB collegate, l'USB host controller accede periodicamente al bus
non permettendo alla CPU di passare nella modalità sleep.
Il kernel presenta una opzione sperimentale per attivare la sospensione delle
periferiche USB tramite le chiamate al driver oppure tramite uno dei file
<path>power/state</path> in <path>/sys</path>.
</p>
<pre caption="Attivazione del supporto USB suspend nel kernel">
Device Drivers
USB support
[*] Support for Host-side USB
[*] USB suspend/resume (EXPERIMENTAL)
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Stati di Sleep: sleep, standby, suspend to disk</title>
<section>
<title>Cosa sono</title>
<body>
<p>
L'ACPI definisce differenti stati di sleep. I più importanti sono
</p>
<ul>
<li>S1 ossia Standby</li>
<li>S3 ossia Suspend to RAM ossia Sleep</li>
<li>S4 ossia Suspend to Disk ossia Hibernate</li>
</ul>
<p>
Possono essere chiamati quando il sistema non è in uso, ma non si vuole
effettuare lo shutdown a causa del lungo tempo di boot.
</p>
</body>
</section>
<section>
<title>Sleep (S3)</title>
<body>
<p>
Il supporto ACPI per questi stati di spleep è considerato sperimentale per
delle buone ragioni. Gli stati di sleep APM sembrano essere più stabili, purtroppo
non è possibile utilizzare contemporaneamente APM e ACPI.
</p>
<pre caption="Configurazione del kernel per il supporto agli stati di sleep">
Power Management Options --->
[*] Power Management support
ACPI (Advanced Configuration and Power Interface) Support --->
[*] ACPI Support
[*] Sleep States
</pre>
<p>
Compilato il kernel con le opzioni sopra considerate, è possibile utilizzare
l'<c>hibernate-script</c> per attivare la sospensione o una modalità di sleep.
</p>
<pre caption="Installazione dell'hibernate-script">
<i># emerge hibernate-script</i>
</pre>
<p>
Sono ora necessarie alcune configurazioni in <path>/etc/hibernate</path>.
Di default, il pacchetto appena installato contiene due file di configurazione:
<path>hibernate.conf</path> e <path>ram.conf</path>.
</p>
<p>
Per configurare lo sleep, bisogna modificare <path>ram.conf</path> in
<path>/etc/hibernate</path>.
<c>UseSysfsPowerState mem</c> è settato correttamente, ma sarà necessario scorrere
il resto del file di configurazione e modificarlo secondo il proprio sistema.
I commenti e i nomi delle opzioni saranno di aiuto. In caso di condivisioni
samba o nfs in una rete, bisognerà assicurarsi di bloccare gli script init per
evitare errori di timeout.
</p>
<p>
Giunti a questo punto, questa sarà l'ultima occasione per effettuare un backup dei
propri dati prima dell'esecuzione del prossimo comando. Probabilmente per tornare
indietro dallo stato di sleep, occorrerà premere un tasto speciale come <e>Fn</e>.
</p>
<pre caption="Chiamata di sleep">
<i># hibernate-ram</i>
</pre>
<p>
Se si sta ancora leggendo questa guida, sarà segno di un corretto funzionamento.
Sarà possibile anche configurare lo standby (S1) in maniera simile copiando
<path>ram.conf</path> in <path>standby.conf</path> e creando un link simbolico
a <path>/usr/sbin/hibernate</path> chiamato <path>/usr/sbin/hibernate-standby</path>.
S3 e S4 sono gli stati di sleep più importanti poichè permetteno un grande
risparmio di energia.
</p>
</body>
</section>
<section>
<title>Hibernate (S4)</title>
<body>
<p>
Questa sezione tratta dell'ibernazione; un'immagine del sistema in esecuzione
viene scritta sul disco prima dello spegnimento. Alla riaccensione (resume),
l'immagine viene caricata ed è possibile riprendere il proprio lavoro dal
punto esatto in cui lo si è interrotto prima dell'ibernazione.
</p>
<warn>
Nessuna periferica hot-plug va cambiata o scambiata in stato di sospensione.
Non si carichi un'immagine con un kernel differente rispetto a quello con cui
la si è creata.
Ogni client/server samba o nfs va bloccato prima dell'ibernazione.
</warn>
<p>
Attualmente ci sono due implementazioni per S4. Quella originale è swsusp,
poi c'è la più nuova suspend2 con un'interfaccia carina (supporto fbsplash
incluso). E' possibile trovare
<uri link="http://suspend2.net/features.html#compare">un'analisi comparativa</uri>
alla <uri link="http://suspend2.net">homepage di suspend2</uri>.
Suspend-to-Disk (pmdisk), un fork di swsusp, è stato riunito al progetto
originale.
</p>
<p>
Suspend2 non è ancora incluso nel kernel ufficiale, per questo motivo sarÃ
necessario applicare una patch, disponibile all'indirizzo
<uri link="http://suspend2.net">suspend2.net</uri>, ai sorgenti del kernel oppure
utilizzare <c>sys-kernel/suspend2-sources</c>.
</p>
<p>
La sezione del kernel necessaria sia a swsusp che a suspen2 è la seguente:
</p>
<pre caption="Configurazione del kernel per i vari stati di sospensione">
Power Management Options --->
<comment>(hibernate con swsusp)</comment>
[*] Software Suspend
<comment>(sostituire /dev/SWAP con la propria partizione di swap)</comment>
(/dev/SWAP) Default resume partition
<comment>(hibernate con suspend2)</comment>
Software Suspend 2
--- Image Storage (you need at least one writer)
[*] File Writer
[*] Swap Writer
--- General Options
[*] LZF image compression
<comment>(sostituire /dev/SWAP con la propria partizione di swap)</comment>
(swap:/dev/SWAP) Default resume device name
[ ] Allow Keep Image Mode
</pre>
<p>
La configurazione di swsusp è piuttosto semplice. Se non si è indicata la giusta
locazione della partizione di swap nella configurazione del kernel, è possibile
passarla come parametro con la direttiva <c>resume=/dev/SWAP</c>. Se non è possibile
effettuare l'avvio a causa di un'immagine rovinata, si può utilizzare il
parametro del kernel <c>noresume</c>. Lo script di avvio <c>hibernate-cleanup</c>
invaliderà l'immagine rovinata durante il processo di boot.
</p>
<pre caption="Invalidamento dell'immagine swsusp durante il processo di avvio">
<i># rc-update add hibernate-cleanup boot</i>
</pre>
<p>
Per attivare l'ibernazione con swsusp, si utilizza lo script hibernate dopo aver
settato <c>UseSysfsPowerState disk</c> in <path>/etc/hibernate/hibernate.conf</path>.
</p>
<warn>
E' consigliabile effettuare un backup dei propri dati. Eseguendo <c>sync</c> prima
dell'esecuzione di uno dei comandi, i dati di cache verranno scritti sul disco.
Provare il tutto al di fuori dell'ambiente grafico X e, in seguito, con X in
esecuzione senza essere loggati al suo interno.
</warn>
<p>
Se dovesse capitare un kernel panic a causa di uhci o simili, è utile provare
a compilare il supporto USB come modulo per poterlo eventualmente "scaricare"
prima che il laptop vada nello stato di sleep. Ci sono opzioni di configurazione
a proposito in <path>hibernate.conf</path>.
</p>
<pre caption="Ibernazione con swsusp">
<i># nano -w /etc/hibernate.conf</i>
<comment>(Assicurarsi di avere un backup dei propri dati)</comment>
<i># hibernate</i>
</pre>
<p>
La sezione seguente tratta della configurazione di suspend2 con il supporto
fbsplash per avere una "progress bar" (barra di avanzamento) grafica durante
la sospensione e il ripristino.
</p>
<p>
La prima parte della configurazione è simile alla configurazione di swsusp.
Se non si è indicata la giusta locazione della partizione di swap nella
configurazione del kernel, è possibile passarla come parametro con la
direttiva <c>resume2=swap:/dev/SWAP</c>. Se non è possibile
effettuare l'avvio, si può utilizzare il parametro <c>noresume2</c>.
Inoltre, lo script di avvio <c>hibernate-cleanup</c>
invaliderà l'immagine di suspend2 rovinata durante il processo di boot.
</p>
<pre caption="Invalidamento dell'immagine suspend2 durante il processo di avvio">
<i># rc-update add hibernate-cleanup boot</i>
</pre>
<p>
Ora è necessario modificare il file <path>/etc/hibernate/hibernate.conf</path>,
attivando la sezione <e>suspend2</e> e commentando tutte le linee nelle sezioni
<e>sysfs_power_state</e> e <e>acpi_sleep</e>. Per il momento la parte fbsplash
non va attivata nelle opzioni globali.
</p>
<pre caption="Ibernazione con suspend2">
<i># nano -w /etc/hibernate.conf</i>
<comment>(Assicurarsi di avere un backup dei propri dati)</comment>
<i># hibernate</i>
</pre>
<p>
Ora è il momento di configurare fbsplash. Per attivare il supporto fbsplash
durante l'ibernazione, è necessario il pacchetto <c>sys-apps/suspend2-userui</c>
con la USE flag <e>fbsplash</e> attivata.
</p>
<pre caption="Installazione di suspend2-userui">
<i># mkdir -p /etc/portage</i>
<i># echo sys-apps/suspend2-userui fbsplash >> /etc/portage/package.use</i>
<i># emerge suspend2-userui</i>
</pre>
<p>
L'ebuild richiede la creazione di un link simbolico al tema da utilizzare.
Ad esempio, per utilizzare il tema <c>livecd-2005.1</c>, sarà necessario il comando:
</p>
<pre caption="Utilizzo del tema livecd-2005.1 durante l'ibernazione">
<i># ln -sfn /etc/splash/livecd-2005.1 /etc/splash/suspend2</i>
</pre>
<p>
Se non si vuole uno schermo nero nella prima parte del processo di ripristino,
bisognerà aggiungere <c>suspend2ui_fbsplash</c> alla propria immagine initrd.
Se si è creata la propria immagine initrd con <c>splash_geninitramfs</c> e la
si è salvata come <path>/boot/fbsplash-emergence-1024x768</path>, i passi
da seguire sono i seguenti:
</p>
<pre caption="Aggiunta di suspend2ui_fbsplash alla immagine initrd">
<i># mount /boot</i>
<i># mkdir ~/initrd.d</i>
<i># cp /boot/fbsplash-emergence-1024x768 ~/initrd.d/</i>
<i># cd ~/initrd.d</i>
<i># gunzip -c fbsplash-emergence-1024x768 | cpio -idm --quiet -H newc</i>
<i># rm fbsplash-emergence-1024x768</i>
<i># cp /usr/sbin/suspend2ui_fbsplash sbin/</i>
<i># find . | cpio --quiet --dereference -o -H newc | gzip -9 > /boot/fbsplash-suspend2-emergence-1024x768</i>
</pre>
<p>
In seguito vanno modificati <path>grub.conf</path> oppure <path>lilo.conf</path>
a seconda del boot manager utilizzato per fare in modo che il proprio kernel suspend2
utilizzi <path>/boot/fbsplash-suspend2-emergence-1024x768</path> come immagine
initrd. Ora è possibile effettuare un test per verificare il corretto funzionamento.
</p>
<pre caption="Test di ibernazione con fbsplash">
<i># suspend2ui_fbsplash -t</i>
</pre>
<p>
Ora, si apra ancora una volta il file <path>/etc/hibernate/hibernate.conf</path>
e si attivino le opzioni fbsplash. Si esegua <c>hibernate</c>, tutto dovrebbe
funzionare in maniera corretta.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Problemi</title>
<section>
<title>Se qualcosa dovesse andare male...</title>
<body>
<p>
<e>D:</e> Sto cercando di cambiare la frequenza della CPU, ma
<path>/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor</path> non esiste.
</p>
<p>
<e>R:</e> Assicurati che il tuo processore supporti il frequency scaling e di
aver scelto il driver giusto. Ecco una lista di processori supportati dal cpufreq
(kernel 2.6.7): ARM Integrator, ARM-SA1100, ARM-SA1110, AMD Elan - SC400, SC410, AMD mobile K6-2+, AMD mobile K6-3+, AMD mobile Duron, AMD mobile Athlon, AMD Opteron, AMD Athlon 64, Cyrix Media GXm,
Intel mobile PIII e Intel mobile PIII-M su alcuni chipset, Intel Pentium 4,
Intel Xeon, Intel Pentium M (Centrino), National Semiconductors Geode GX,
Transmeta Crusoe, VIA Cyrix 3 / C3, UltraSPARC-III, SuperH SH-3, SH-4, alcuni
"PowerBook" e "iBook2" e vari processori su alcuni sistemi compatibili ACPI 2.0 (solo se
gli "ACPI Processor Performance States" sono disponibili attraverso l'interfaccia
ACPI/BIOS).
</p>
<p>
<e>D:</e> Il mio notebook supporta il frequency scaling, ma
<path>/sys/devices/system/cpu/cpu0/cpufreq/</path> è vuoto.
</p>
<p>
<e>R:</e> Cerca messaggi d'errore relativi all'ACPI con <c>dmesg | grep ACPI</c>.
Prova ad aggiornare il BIOS, specialmente se vedi errori riguardo il DSDT.
Puoi anche provare a corregge il problema manualmente (ma ciò è al di fuori degli
scopi di questa guida).
</p>
<p>
<e>D:</e> Il mio notebook supporta il frequency scaling, ma secondo /proc/cpuinfo
la velocità non cambia mai.
</p>
<p>
<e>R:</e> Probabilmente hai attivato il supporto al symmetric multiprocessing
nel kernel (CONFIG_SMP). Disattivalo e dovrebbe funzionare. Alcune vecchie versioni
del kernel presentano un bug al riguardo. In questo caso, esegui <c>emerge x86info</c>,
aggiorna il tuo kernel come richiesto e controlla il valore della frequenza con
<c>x86info -mhz</c>.
</p>
<p>
<e>D:</e> Posso cambiare la frequenza della CPU, ma la scelta non è così ampia come
quella disponibile in un altro OS.
</p>
<p>
<e>R:</e> Puoi combinare il frequency scaling con l'ACPI throttoling per ottenere
frequenza minori. Ricorda comunque che il throttoling non risparmia molta energia
e viene usato solo per una gestione termica (mantiene il notebook freddo). Puoi
leggere lo stato attuale del throttoling con <c>cat
/proc/acpi/processor/CPU/throttling</c> a cambiarlo con <c>echo -n "0:x" >
/proc/acpi/processor/CPU/limit</c>, dove la x è una degli stati Tx elencati in
<path>/proc/acpi/processor/CPU/throttling</path>.
</p>
<p>
<e>D:</e> Nella configurazione del kernel powersave, performance e userspace
governors vengono mostrati, ma non vedo la voce ondemand. Dove la trovo?
</p>
<p>
<e>R:</e> Ondemand governor è incluso solamente nelle ultime versioni del kernel. Prova
ad aggiornarlo.
</p>
<p>
<e>D:</e> La durata della batteria sembra essere peggiorata rispetto a prima.
</p>
<p>
<e>R:</e> Controlla i settaggi del tuo BIOS. Potresti aver dimenticato di riattivare
alcuni settaggi.
</p>
<p>
<e>D:</e> La mia batteria è carica, ma per KDE è del tutto scarica (riporta 0%) e,
quindi, viene avviato la sequenza di shutdown.
</p>
<p>
<e>R:</e> Controlla che il supporto batteria sia attivato nel tuo kernel. Se lo hai compilato
come modulo, assicurati di averlo caricato correttamente.
</p>
<p>
<e>D:</e> Ho un Dell Inspiron 51XX e non riesco ad ottenere eventi ACPI.
</p>
<p>
<e>R:</e> Sembra essere un bug del kernel. Leggi <uri
link="http://bugme.osdl.org/show_bug.cgi?id=1752">qui</uri>.
</p>
<p>
<e>D:</e> Ho attivato l'opzione DynamicClocks in <path>xorg.conf</path>
e ora ottengo crash / lo schermo rimane nero / il mio notebook non
effettua correttamente lo shutdown (spegnimento).
</p>
<p>
<e>R:</e> Questo accade purtroppo su alcuni sistemi. L'unica soluzione
è la disattivazione dell'opzione DynamicClocks.
</p>
<p>
<e>D:</e> Voglio utilizzare suspend2, ma la mia partizione di swap viene
indicata come troppo piccola. Non posso effettuare un suo ridimensionamento.
</p>
<p>
<e>R:</e> Se non c'è abbastanza spazio libero sul tuo sistema, è possibile
utilizzare il filewriter al posto dello swapwriter. <c>hibernate-script</c>
lo supporta bene. Maggiori informazioni nel file
<path>/usr/src/linux/Documentation/power/suspend2.txt</path>.
</p>
<p>
<e>D:</e> Ho appena comprato una nuova batteria, ma dura solo per pochi minuti! Cosa faccio
di sbagliato?
</p>
<p>
<e>R:</e> Prima di tutto segui le istruzioni del venditore su come caricare correttamente la batteria.
</p>
<p>
<e>D:</e> Niente, è inutile. Cosa faccio ora?
</p>
<p>
<e>R:</e> Alcune batterie vendute come "nuove" sono in realtà vecchie. Prova questo:
</p>
<pre caption="Stato della batteria">
$ <i>grep capacity /proc/acpi/battery/BAT0/info</i>
design capacity: 47520 mWh
last full capacity: 41830 mWh
</pre>
<p>
Se il valore di "last full capacity" differisce di molto da quello di design capacity,
la tua batteria è probabilmente rotta. Usa la garanzia.
</p>
<p>
<e>D:</e> Non ho trovato una soluzione al mio problema. Cosa faccio?
</p>
<p>
<e>R:</e> Prova a contattarmi direttamente, <mail link="fragfred@gmx.de">Dennis
Nienhüser</mail>.
</p>
</body>
</section>
</chapter>
</guide>
[-- Attachment #4: openafs.xml --]
[-- Type: text/xml, Size: 26967 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/it/openafs.xml,v 1.6 2005/07/19 21:55:32 so Exp $ -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link = "/doc/it/openafs.xml" lang="it">
<title>Guida ad OpenAFS in Gentoo Linux</title>
<author title="Editor">
<mail link="darks@gentoo.org">Holger Brueckner</mail>
</author>
<author title="Editor">
<mail link="bennyc@gentoo.org">Benny Chuang</mail>
</author>
<author title="Editor">
<mail link="blubber@gentoo.org">Tiemo Kieft</mail>
</author>
<author title="Editor">
<mail link="fnjordy@gmail.com">Steven McCoy</mail>
</author>
<author title="Traduzione">
<mail link="frgrieco@aliceposta.it">Francesco Grieco</mail>
</author>
<abstract>
Questa guida mostra come installare un server OpenAFS ed un client su Gentoo Linux
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>
<version>1.0</version>
<date>2005-10-29</date>
<chapter>
<title>Introduzione</title>
<section>
<title>Premessa</title>
<body>
<p>
Questo documento descrive tutti i passi necessari all'installazione di un server OpenAFS su Gentoo Linux.
Parti di questo documento sono tratte dalla FAQ AFS e dalla guida IBM's Quick Beginnings su AFS.
</p>
</body>
</section>
<section>
<title>Cos'è AFS ?</title>
<body>
<p>
AFS è un filesystem distribuito che permette ad host cooperanti
(client e server) di condividere in maniera efficiente un filesystem
attraverso una local o wide area network. I Client mantengono una
cache per gli oggetti (file) maggiormente utilizzati, per averne
un accesso più rapido.
</p>
<p>
AFS è basato su un filesystem distribuito chiamato "Andrew File System", originariamente
sviluppato all'Information Technology Center della Carnegie-Mellon University.
"Andrew" era il nome del progetto di ricerca alla CMU, in ricordo del fondatore dell'Università .
Fondata la Transarc e divenuto AFS un prodotto, si decise di eliminare il nome "Andrew"
al fine di indicare che ormai si era andati oltre il progetto di ricerca
universitario. AFS era divenuto un filesystem robusto e di qualità .
Tuttavia, essendo ancora esistenti dei nodi (cell) con filesystem del tipo /asf,
e, nota la difficoltà dell'epoca nel cambiare il volume root del filesystem,
il nome AFS rimase tale.
</p>
</body>
</section>
<section>
<title>Cos'è un nodo (cell) AFS ?</title>
<body>
<p>
Un nodo (cell) AFS è un insieme di server collegati tra loro che presentano un singolo filesystem.
Di solito, un nodo AFS è costituito da host (postazioni) che usano lo stesso dominio Internet
("domain name"), ad esempio gentoo.org.
Gli utenti si collegano ai client workstation, i quali richiedono dati e file dai server del nodo per
gli utenti stessi. Gli utenti non sapranno su quale server è situato il file a cui stanno accedendo,
poichè ogni volume può essere copiato e spostato su di un altro server senza che se ne accorgano.
I file sono sempre accessibili. E' una sorta di NFS potenziato.
</p>
</body>
</section>
<section>
<title>Che benefici si ottengono con l'utilizzo di AFS ?</title>
<body>
<p>
I punti di forza di AFS sono:
abilità di caching (da 100M a 1GB lato client),
caratteristiche di sicurezza (basato su Kerberos 4, con access control list),
semplicità di addressing (si ha in pratica un solo filesystem),
scalabilità (ulteriore aggiunta di server al nodo in caso di necessità ),
protocolli di comunicazione.
</p>
</body>
</section>
<section>
<title>Dove si possono trovare maggiori informazioni ?</title>
<body>
<p>
Si legga la <uri link="http://www.angelfire.com/hi/plutonic/afs-faq.html">FAQ ASF</uri>.
</p>
<p>
Il sito ufficiale di OpenAFS è <uri link="http://www.openafs.org">www.openafs.org</uri>.
</p>
<p>
AFS è stato originariamente sviluppato dalla Transarc che ora è di proprietà di IBM.
Si possono trovare maggiori informazioni riguardo AFS sul sito della
<uri link="http://www.transarc.ibm.com/Product/EFS/AFS/index.html">Transarc</uri>.
</p>
</body>
</section>
<section>
<title>Come posso effettuare un debug dei problemi?</title>
<body>
<p>
OpenAFS ha un ottimo supporto al logging. Naturalmente, di default, i messaggi di log
vengono memorizzati nei propri file di log invece che nei normali file log di sistema
presenti nella propria macchina. Per redirigere i messaggi di log nel proprio logger
di sistema, utilizzare l'opzione <c>-syslog</c> per tutti i comandi <c>bos</c>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Documentazione</title>
<section>
<title>Consultare la Documentazione AFS</title>
<body>
<p>
Si può facilmente consultare la Documentazione originale AFS di IBM. E' scritta molto bene e,
se si deve amministrare un Server AFS, diventa una lettura obbligata.
</p>
<pre caption="Installazione di afsdoc">
# <i>emerge app-doc/afsdoc</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Installazione sul Client</title>
<section>
<title>Fase Iniziale</title>
<body>
<note>
Tutti i comandi devono essere digitati su una sola linea. Per facilitarne la lettura,
in questo documento alcune volte sono riportati su più linee.
</note>
<note>
Sfortunatamente i Client AFS necessitano di una partizione di tipo ext2 per la loro
cache per funzionare correttamente; ci sono problemi con le partizioni di tipo reiserfs.
La partizione ext2 deve essere di circa 200MB (o più) e va montata in
<path>/usr/vice/cache</path>
</note>
<p>
Prima di compilare il client afs vanno modificati i file CellServDB e ThisCell (si trovano in
<path>/usr/portage/net-fs/openafs/files</path>).
</p>
<pre caption="Modifica di CellServDB e ThisCell">
CellServDB:
>netlabs #Cell name
10.0.0.1 #storage
ThisCell:
netlabs
</pre>
<warn>
All'interno del file <path>CellServDB</path> devono essere usati solamente spazi. Nel caso di uso dei TAB, il
client andrà sicuramente incontro a problemi.
</warn>
<p>
Il file CellServDB indica al proprio client quale o quali client ha bisogno di contattare per uno
specifico nodo (cell). Il contenuto di ThisCell dovrebbe sembrare ovvio.
Normalmente la propria azienda usa un nome che è unico.
Una buona scelta può essere il dominio (ufficiale) dell'azienda.
</p>
</body>
</section>
<section>
<title>Compilazione lato Client</title>
<body>
<pre caption="Installazione di openafs">
# <i>emerge net-fs/openafs</i>
</pre>
<p>
Dopo una corretta compilazione si è pronti per proseguire.
</p>
</body>
</section>
<section>
<title>Esecuzione di AFS all'avvio</title>
<body>
<p>
I comandi seguenti creano i link appropriati per avviare il client afs durante
il boot del sistema.
</p>
<warn>
Si dovrebbe sempre avere un server afs in esecuzione all'interno del proprio dominio quando si
avvia un client afs. Se il server AFS non è attivo (o è down), il sistema non si avvierà e attenderà prima
di proseguire, per un tempo relativamente lungo (fino al timeout).
</warn>
<pre caption="Aggiunta di AFS al runlevel di default">
# <i>rc-update add afs default</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Installazione sul Server</title>
<section>
<title>Compilazione lato Server</title>
<body>
<p>
I comandi seguenti installano tutti i binari necessari alla configurazione di un Server AFS
<e>e</e> di un Client.
</p>
<pre caption="Installazione di openafs">
# <i>emerge net-fs/openafs</i>
</pre>
</body>
</section>
<section>
<title>Avvio del Server AFS</title>
<body>
<p>
E' necessario prima di tutto cancellare i file di esempio CellServDB e ThisCell.
</p>
<pre caption="Rimuovere file di esempio">
# <i>rm /usr/vice/etc/ThisCell</i>
# <i>rm /usr/vice/etc/CellServDB</i>
</pre>
<p>
In seguito si deve eseguire il comando <c>bosserver</c> per inizializzare il Basic OverSeer (BOS)
Server, il quale ha il compito di monitorare e controllare gli altri processi del server AFS.
Si pensi al BOS come ad un init del sistema. La flag <c>-noauth</c> va inclusa per disabilitare
il controllo delle autorizzazioni, poichè non si è ancora aggiunto l'user admin.
</p>
<warn>
Disabilitando il controllo delle autorizzazioni, la sicurezza del nodo (cell) viene,
temporaneamente, compromessa.
Tutti questi sottopassaggi vanno completati in un unica ininterrotta sessione e
il sistema non deve essere lasciato incustodito fino al successivo riavvio del Server BOS con il
controllo delle autorizzazioni attivato.
</warn>
<pre caption="Inizializzazione del Basic OverSeer Server">
# <i>/usr/afs/bin/bosserver -noauth &</i>
</pre>
<p>
Si controlli che il Server BOS abbia creato i file
<path>/usr/vice/etc/CellServDB</path> e <path>/usr/vice/etc/ThisCell</path>
</p>
<pre caption="Controllo della presenza di CellServDB e ThisCell">
# <i>ls -al /usr/vice/etc/</i>
-rw-r--r-- 1 root root 41 Jun 4 22:21 CellServDB
-rw-r--r-- 1 root root 7 Jun 4 22:21 ThisCell
</pre>
</body>
</section>
<section>
<title>Assegnazione del Nome del Nodo (cell) e del Gruppo (Membership) per i Processi del Server</title>
<body>
<p>
Si assegni ora il nome al nodo.
</p>
<impo>Ci sono alcune restrizioni nel formato del nome.
Non possono essere usate lettere in maiuscolo e non si possono superare i 64 caratteri.
Il nome del proprio nodo (cell) apparirà nel percorso <path>/afs</path> ,
quindi conviene usare nomi brevi.
</impo>
<note>D'ora in avanti si sostituisca alla stringa <server name> l'hostname completo
(ad esempio <b>afs.gentoo.org</b>) della macchina sulla quale state installando il tutto.
Al posto di <cell name> va inserito il nome completo del proprio nodo (ad esempio <b>gentoo</b>).
</note>
<p>
Si esegua il comando <c>bos setcellname</c> per assegnare un nome al nodo:
</p>
<pre caption="Impostazione del cell name">
# <i>/usr/afs/bin/bos setcellname <server name> <cell name> -noauth</i>
</pre>
</body>
</section>
<section>
<title>Avvio del Database Server Process</title>
<body>
<p>
Il comando <c>bos create</c> crea le configurazioni dei quattro processi
database server nel file
<path>/usr/afs/local/BosConfig</path> . I quattro processi funzionano solamente
sui database server.
</p>
<table>
<tr>
<ti>kaserver</ti>
<ti>
L'Authentication Server gestisce l'Authentication Database.
Può essere sostituito con un demone Kerberos 5 (in questa guida non documentato).
</ti>
</tr>
<tr>
<ti>buserver</ti>
<ti>Il Backup Server gestisce il Backup Database</ti>
</tr>
<tr>
<ti>ptserver</ti>
<ti>Il Protection Server gestisce il Protection Database</ti>
</tr>
<tr>
<ti>vlserver</ti>
<ti>
Il Volume Location Server gestisce il Volume Location Database (VLDB).
E' il più importante
</ti>
</tr>
</table>
<pre caption="Creazione configurazioni dei processi database">
# <i>/usr/afs/bin/bos create <server name> kaserver simple
/usr/afs/bin/kaserver -cell <cell name> -noauth</i>
# <i>/usr/afs/bin/bos create <server name> buserver simple
/usr/afs/bin/buserver -cell <cell name> -noauth</i>
# <i>/usr/afs/bin/bos create <server name> ptserver simple
/usr/afs/bin/ptserver -cell <cell name> -noauth</i>
# <i>/usr/afs/bin/bos create <server name> vlserver simple
/usr/afs/bin/vlserver -cell <cell name> -noauth</i>
</pre>
<p>
E' possibile verificare che tutti i server siano in esecuzione con il comando <c>bos status</c>:
</p>
<pre caption="Controllo del corretto funzionamento dei server">
# <i>/usr/afs/bin/bos status <server name> -noauth</i>
Instance kaserver, currently running normally.
Instance buserver, currently running normally.
Instance ptserver, currently running normally.
Instance vlserver, currently running normally.
</pre>
</body>
</section>
<section>
<title>Sicurezza del Nodo (cell)</title>
<body>
<p>
Verranno ora esaminati i meccanismi di sicurezza del nodo. Si creeranno due profili iniziali
nell'Authentication Database: l'account di amministratore, chiamato per convenzione <b>admin</b>
e un account per i processi del server AFS, chiamato <c>afs</c>.
Nessun utente si può connettere usando l'user <b>afs</b>, ma il modulo Authentication
Server's Ticket Granting Service (TGS) usa questo account per criptare i ticket del server concessi ai
client AFS.
</p>
<p>
Si passi alla modalità interattiva <c>kas</c>
</p>
<pre caption="Modalità interattiva">
# <i>/usr/afs/bin/kas -cell <cell name> -noauth</i>
ka> <i>create afs</i>
initial_password:
Verifying, please re-enter initial_password:
ka> <i>create admin</i>
initial_password:
Verifying, please re-enter initial_password:
ka> <i>examine afs</i>
User data for afs
key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:30 2001
password will never expire.
An unlimited number of unsuccessful authentications is permitted.
entry never expires. Max ticket lifetime 100.00 hours.
last mod on Mon Jun 4 20:49:30 2001 by $lt;none>
permit password reuse
ka> <i>setfields admin -flags admin</i>
ka> <i>examine admin</i>
User data for admin (ADMIN)
key (0) cksum is 2651715259, last cpw: Mon Jun 4 20:49:59 2001
password will never expire.
An unlimited number of unsuccessful authentications is permitted.
entry never expires. Max ticket lifetime 25.00 hours.
last mod on Mon Jun 4 20:51:10 2001 by $lt;none>
permit password reuse
ka>
</pre>
<p>
Il comando <c>bos adduser</c> aggiunge l'utente <b>admin</b>
(amministratore) a <path>/usr/afs/etc/UserList</path> .
</p>
<pre caption="Aggiunta dell'utente admin alla UserList">
# <i>/usr/afs/bin/bos adduser <server name> admin -cell <cell name> -noauth</i>
</pre>
<p>
Il comando <c>bos addkey</c> definisce la chiave di crittografia (encryption key)
del Server AFS in <path>/usr/afs/etc/KeyFile</path>
</p>
<note>
Nel caso di richiesta di una password ("input key"), sarà necessario digitare quella usata
nella creazione dell'user afs nella modalità interattiva <c>kas</c>.
</note>
<pre caption="Inserimento password">
# <i>/usr/afs/bin/bos addkey <server name> -kvno 0 -cell <cell name> -noauth</i>
input key:
Retype input key:
</pre>
<p>
Il comando <c>pts createuser</c> crea un profilo Protection Database per l'utente amministratore.
</p>
<note>
Di default, il Protection Server assegna all'utente <b>admin</b> un AFS UID 1, perchè
è il primo profilo creato. Se nel file delle password locale (<path>/etc/passwd</path> o uno equivalente)
è già presente un <b>admin</b> con UID differente, la flag <c>-id</c> verrà utilizzata
per creare UID equivalenti.
</note>
<pre caption="Creazione del profilo Protection Database">
# <i>/usr/afs/bin/pts createuser -name admin -cell <cell name> [-id <AFS UID>] -noauth</i>
</pre>
<p>
Il comando <c>pts adduser</c> fà dell'utente <b>admin</b> un
membro del gruppo "system:administrators" e il comando <c>pts membership</c>
è utile per verificare che ciò sia avvenuto correttamente.
</p>
<pre caption="Fare amministratore un collaboratore del gruppo amministratore e verificare">
# <i>/usr/afs/bin/pts adduser admin system:administrators -cell <cell name> -noauth</i>
# <i>/usr/afs/bin/pts membership admin -cell <cell name> -noauth</i>
Groups admin (id: 1) is a member of:
system:administrators
</pre>
<p>
Si riavviino tutti i processi del Server AFS
</p>
<pre caption="Riavvio di tutti i processi del server AFS">
# <i>/usr/afs/bin/bos restart <server name> -all -cell <cell name> -noauth</i>
</pre>
</body>
</section>
<section>
<title>Avvio del File Server, Volume Server e Salvager</title>
<body>
<p>
Si avvii il processo <c>fs</c>, costituito da File Server, da Volume Server e da Salvager (processi
fileserver, volserver e salvager).
</p>
<pre caption="Avvio del processo fs">
# <i>/usr/afs/bin/bos create <server name> fs fs /usr/afs/bin/fileserver
/usr/afs/bin/volserver
/usr/afs/bin/salvager
-cell <cell name> -noauth</i>
</pre>
<p>
Si controlli che tutti i processi siano in esecuzione
</p>
<pre caption="Controllo della corretta esecuzione di tutti i processi">
# <i>/usr/afs/bin/bos status <server name> -long -noauth</i>
Instance kaserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/kaserver'
Instance buserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/buserver'
Instance ptserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/ptserver'
Instance vlserver, (type is simple) currently running normally.
Process last started at Mon Jun 4 21:07:17 2001 (2 proc starts)
Last exit at Mon Jun 4 21:07:17 2001
Command 1 is '/usr/afs/bin/vlserver'
Instance fs, (type is fs) currently running normally.
Auxiliary status is: file server running.
Process last started at Mon Jun 4 21:09:30 2001 (2 proc starts)
Command 1 is '/usr/afs/bin/fileserver'
Command 2 is '/usr/afs/bin/volserver'
Command 3 is '/usr/afs/bin/salvager'
</pre>
<p>
Il passo successivo è in relazione al se si è o meno mai eseguito un file server AFS nel nodo.
</p>
<p>
Se si sta installanto il Server AFS per la prima volta nel nodo, è necessario creare il
primo volume AFS, <b>root.afs</b>
</p>
<note>
Al posto di "partition name" va inserito il nome di una partizione AFS Server della postazione.
Per convenzione queste partizioni sono chiamate <path>/vicepx</path>, dove la x
può essere compresa tra a e z.
</note>
<pre caption="Creazione del volume root.afs">
# <i>/usr/afs/bin/vos create <server name>
<partition name> root.afs
-cell <cell name> -noauth</i>
</pre>
<p>
Se nel nodo sono già presenti postazioni con file server AFS e volumi, verranno utilizzati i comandi
<c>vos sncvldb</c> e <c>vos syncserv</c> per sincronizzare il VLDB (Volume Location Database)
con la stato attuale dei volumi sulla postazione locale. Tutti i dati necessari saranno
copiati sul proprio nuovo server.
</p>
<p>
Se il comando dovesse restituire il messaggio "partition /vicepa does not exist on
the server" (la partizione /vicepa non esiste sul server), bisognerà assicurarsi
che la partizione sia stata montata prima dell'esecuzione del server OpenAFS, oppure
bisognerà montare la directory e riavviare i processi con il comando
<c>/usr/afs/bin/bos restart <server name> -all -cell <cell
name> -noauth</c>.
</p>
<pre caption ="Sincronizzazione del VLDB">
# <i>/usr/afs/bin/vos syncvldb <server name> -cell <cell name> -verbose -noauth</i>
# <i>/usr/afs/bin/vos syncserv <server name> -cell <cell name> -verbose -noauth</i>
</pre>
</body>
</section>
<section>
<title>Avvio del Server Portion dell'Update Server</title>
<body>
<pre caption="Avvio del server update">
# <i>/usr/afs/bin/bos create <server name>
upserver simple "/usr/afs/bin/upserver
-crypt /usr/afs/etc -clear /usr/afs/bin"
-cell <cell name> -noauth</i>
</pre>
</body>
</section>
<section>
<title>Configurazione del Top Level del Filespace AFS</title>
<body>
<p>
C'è bisogno, a questo punto, di configurare la ACL (access control list) in modo che ogni utente possa
accedere al percorso <path>/afs</path>.
</p>
<pre caption="Configurazioen dell'access control list">
# <i>/usr/afs/bin/fs setacl /afs system:anyuser rl</i>
</pre>
<p>
Si deve ora creare il volume root, montarlo in modalità solo lettura su <path>/afs/<cell name></path>
e in modalità lettura/scrittura su <path>/afs/.<cell name></path>
</p>
<pre caption="Configurazione del volume root">
# <i>/usr/afs/bin/vos create <server name><partition name> root.cell</i>
# <i>/usr/afs/bin/fs mkmount /afs/<cell name> root.cell </i>
# <i>/usr/afs/bin/fs setacl /afs/<cell name> system:anyuser rl</i>
# <i>/usr/afs/bin/fs mkmount /afs/.<cell name> root.cell -rw</i>
</pre>
<p>
Ora è tutto pronto ! Si dovrebbe avere un file server AFS funzionante
all'interno della propria rete.
</p>
<note>
Per il corretto funzionamento del server AFS è essenziale che tutti gli
orologi di sistema siano sincronizzati.
La soluzione più conveniente consiste nella installazione di un server ntp su di una postazione (ad esempio
sul server AFS) per sincronizzare tutti gli orologi dei client attraverso il client ntp.
Questo può, naturalmente, essere fatto anche su di un client AFS.
</note>
</body>
</section>
</chapter>
<chapter>
<title>Amministrazione di Base</title>
<section>
<title>Avviso</title>
<body>
<p>
OpenAFS è una tecnologia complessa e ampia. Si consiglia la lettura della documentazione AFS
per maggiori e ulteriori informazioni. In questo capitolo verranno illustrate solo alcune
operazioni di amministrazione.
</p>
</body>
</section>
<section>
<title>Configurazione di PAM per l'acquisizione di un Token AFS al Login</title>
<body>
<p>
Per utilizzare AFS è necessario autenticarsi sul Server KA se
si sta utilizzando una implementazione di AFS Kerberos 4, o sul
Kerberos 5 KDC se si sta utilizzando MIT, Heimdal, oppure ShiShi Kerberos 5.
Tuttavia per loggarsi ad una macchina sarà necessario anche un
account utente, situato solitamente in <path>/etc/passwd</path>, NIS, LDAP (OpenLDAP),
oppure in un database Hesiod. PAM permette a Gentoo di legare
l'autenticazione AFS e di login all'account utente.
</p>
<p>
Sarà necessario aggiornare <path>/etc/pam.d/system-auth</path>, utilizzato
anche da altre configurazioni. "use_first_pass" sta ad indicare il controllo
prima sul login dell'utente, e "ignore_root" blocca il controllo sul superuser
locale in modo da permettere il login se AFS o il network non si avviano.
</p>
<pre caption="/etc/pam.d/system-auth">
auth required pam_env.so
auth sufficient pam_unix.so likeauth nullok
auth sufficient pam_afs.so.1 use_first_pass ignore_root
auth required pam_deny.so
account required pam_unix.so
password required pam_cracklib.so retry=3
password sufficient pam_unix.so nullok md5 shadow use_authtok
password required pam_deny.so
session required pam_limits.so
session required pam_unix.so
</pre>
<p>
Per permettere a <c>sudo</c> di mantenere i token degli utenti reali e per evitare
agli utenti locali di ottenere un accesso AFS si cambi <path>/etc/pam.d/su</path> come evidenziato
di seguito:
</p>
<pre caption="/etc/pam.d/su">
<comment># Qui, utenti con uid > 100 sono considerati appartenenti ad AFS e utenti con
# uid <= 100 sono ignorati da pam_afs.</comment>
auth sufficient /usr/afsws/lib/pam_afs.so.1 ignore_uid 100
auth sufficient /lib/security/pam_rootok.so
<comment># Se si vuole restringere il numero degli utenti ammessi all'utilizzo di 'su',
# si crei il file /etc/security/suauth.allow, editabile solo da root, e si
# aggiungano gli utenti a cui è permesso effettuare 'su' (un utente per ogni
# linea del suddetto file)
#auth required /lib/security/pam_listfile.so item=ruser \
# sense=allow onerr=fail file=/etc/security/suauth.allow
# Decommentando questa linea si permette agli utenti del gruppo wheel
# di eseguire 'su' senza inserire una password.
#auth sufficient /lib/security/pam_wheel.so use_uid trust
# In alternativa, si può implementare una lista di utenti che non hanno
#bisogno di fornire una password
#auth sufficient /lib/security/pam_listfile.so item=ruser \
# sense=allow onerr=fail file=/etc/security/suauth.nopass
# Commentando questa linea si permette a qualsiasi utente, anche a quelli
# non presenti nel gruppo wheel, l'esecuzione di 'su'</comment>
auth required /lib/security/pam_wheel.so use_uid
auth required /lib/security/pam_stack.so service=system-auth
account required /lib/security/pam_stack.so service=system-auth
password required /lib/security/pam_stack.so service=system-auth
session required /lib/security/pam_stack.so service=system-auth
session optional /lib/security/pam_xauth.so
<comment># Qui si previene la perdita dell'id token dell'utente reale</comment>
session optional /usr/afsws/lib/pam_afs.so.1 no_unlog
</pre>
</body>
</section>
</chapter>
</guide>
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2005-10-20 10:29 Enrico Morelli
2005-10-20 22:20 ` Marco Mascherpa
0 siblings, 1 reply; 39+ messages in thread
From: Enrico Morelli @ 2005-10-20 10:29 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 827 bytes --]
Doc Ver Rev
-----------------------------------------------------
hb-portage-branches 1.6 1.12
hb-portage-divertree 1.3 1.7
hb-portage-tools 1.4 1.7
hb-portage-configuration 1.4 1.9
hb-portage-files 1.7 1.10
hb-working-portage 1.56 1.51
--
-------------------------------------------------------------------
(o_
(o_ //\ Coltivate Linux che tanto Windows si pianta da solo.
(/)_ V_/_
+------------------------------------------------------------------+
| ENRICO MORELLI | email: morelli@CERM.UNIFI.IT |
| * * * * | phone: +39 055 4574269 |
| University of Florence | fax : +39 055 4574253 |
| CERM - via Sacconi, 6 - 50019 Sesto Fiorentino (FI) - ITALY |
+------------------------------------------------------------------+
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: hb-portage-branches.xml --]
[-- Type: text/xml; name=hb-portage-branches.xml, Size: 5877 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/handbook/hb-portage-branches.xml,v 1.3 2004/11/15 12:47:47 swift Exp $ -->
<sections>
<version>1.6</version>
<date>11 Agosto 2005</date>
<section>
<title>Usare una branca</title>
<subsection>
<title>La branca stabile</title>
<body>
<p>
La variabile ACCEPT_KEYWORDS definisce la branca usata dal sistema. Il suo valore
predefinito è la branca stabile per l'architettura del sistema in uso, per
esempio <c>x86</c>
</p>
<p>
La raccomandazione è di usare solo la branca stabile, comunque, se non si
è preoccupati eccessivamente per la stabilità e si vuole aiutare Gentoo
sottomettendo rapporti di problemi su
<uri>http://bugs.gentoo.org</uri>, si può proseguire con la lettura.
</p>
</body>
</subsection>
<subsection>
<title>La branca di test</title>
<body>
<p>
Se si vogliono usare i software più recenti si può considerare l'uso
della branca test. Per far usare al Portage la branca di test occorre aggiungere
il simbolo ~ prima dell'architettura del sistema in uso.
</p>
<p>
La branca di test è esattamente ciò che significa: <e>In fase di test</e>. Se un pacchetto è
in fase di test, significa che gli sviluppatori pensano che sia funzionante ma non ancora
testato in maniera esauriente. Ci si potrebbe trovare ad essere i primi a scoprire un bug
nel pacchetto, nel qual caso si dovrebbe aprire un bug su
<uri
link="http://bugs.gentoo.org">bugreport</uri> per farlo conoscere agli sviluppatori.
it.
</p>
<p>
Si potrebbero comunque notare problemi di stabilità, gestione
imperfetta dei pacchetti (per esempio dipendenze errate od omesse),
aggiornamenti troppo frequenti (risultante in compilazioni multiple) o
pacchetti corrotti. Se non si conosce come lavora Gentoo e come risolvere
i problemi, si raccomanda di usare le branche stabili e testate.
</p>
<p>
Per esempio, per selezionare la branca di test per architetture x86, editare
<path>/etc/make.conf</path> e definire:
</p>
<pre caption="Definire la variabile ACCEPT_KEYWORDS">
ACCEPT_KEYWORDS="~x86"
</pre>
<p>
Se si aggiorna il sistema dopo questa modifica, si avranno <e>molti</e> pacchetti
da aggiornare. Una cosa da tenere bene in mente è che se si aggiorna il sistema
in uso alla branca di test non c'è un modo semplice per tornare alla branca
stabile (eccetto l'uso di backup naturalmente).
</p>
</body>
</subsection>
</section>
<section>
<title>Miscelare branche stabili e test</title>
<subsection>
<title>Il file package.keywords</title>
<body>
<p>
Si può chiedere al Portage di permettere la branca di test per particolari
pacchetti ma usare la branca stabile per il resto del sistema.
Per questo, si deve aggiungere la categoria ed il nome del pacchetto che
si vuole usare dalla branca di test al file <path>/etc/portage/package.keywords</path>.
Per esempio, per usare la branca di test di <c>gnumeric</c>:
</p>
<pre caption="Definizione di /etc/portage/package.keywords per gnumeric, linea completa">
app-office/gnumeric ~x86
</pre>
</body>
</subsection>
<subsection>
<title>Sperimentare versioni particolari</title>
<body>
<p>
Se si vuole usare una versione specifica di software dalla branca di test
ma non si vuole che Portage usi la branca di test per le versioni successive,
si può aggiungere la versione nel file
<path>package.keywords</path>.
In questo caso si <e>deve</e> usare l'operatore =. Si può anche inserire
un intervallo di versioni usando gli operatori
<=, <, > o >=.
</p>
<p>
In ogni caso, volendo aggiungere una versione si <e>deve</e> usare un operatore.
Se non si specifica alcuna versione <e>non si possono</e> usare operatori.
</p>
<p>
Il seguente esempio mostra come accettare gnumeric-1.2.13:
</p>
<pre caption="Usare una particolare versione di gnumeric">
=app-office/gnumeric-1.2.13 ~x86
</pre>
</body>
</subsection>
</section>
<section>
<title>Usare pacchetti mascherati</title>
<subsection>
<title>Il file package.unmask</title>
<body>
<p>
Gli sviluppatori di Gentoo <b>non</b> supportano l'uso di questi file.
Si prega di usare cautela nel loro uso. Le richieste di supporto in relazione
a <c>package.unmask</c> e/o <c>package.mask</c> non avranno risposta.
Si è avvertiti.
</p>
<p>
Quando un pacchetto è stato mascherato dagli sviluppatori di Gentoo e si
vuole comunque installare il file a dispetto della ragione menzionata
nel file <path>package.mask</path> (ubicato di default in <path>/usr/portage/profiles</path>), aggiungere la stessa <e>identica</e> linea in <path>/etc/portage/package.unmask</path>.
</p>
<p>
Per esempio, se <c>=net-mail/hotwayd-0.8</c> è mascherato, si può comunque
installarlo aggiungendo la stessa identica linea nel file
<path>package.unmask</path>:
</p>
<pre caption="/etc/portage/package.unmask">
=net-mail/hotwayd-0.8
</pre>
</body>
</subsection>
<subsection>
<title>Il file package.mask</title>
<body>
<p>
Se non si vuole che Portage installi un certo pacchetto o una specifica versione
di un pacchetto, lo si può mascherare autonomamente aggiungendo una riga
appropriata in
<path>/etc/portage/package.mask</path>.
</p>
<p>
Per esempio, se non si vuole che Portage installi nuove versioni del kernel dopo
<c>gentoo-sources-2.6.8.1</c>, si aggiunga la seguente linea a
<path>package.mask</path>:
</p>
<pre caption="/etc/portage/package.mask esempio">
>sys-kernel/gentoo-sources-2.6.8.1
</pre>
</body>
</subsection>
</section>
</sections>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: hb-portage-diverttree.xml --]
[-- Type: text/xml; name=hb-portage-diverttree.xml, Size: 4233 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/handbook/hb-portage-diverttree.xml,v 1.3 2004/11/15 12:47:47 swift Exp $ -->
<sections>
<version>1.3</version>
<date>11 Ottobre 2005</date>
<section>
<title>Usare un Portage Tree Subset</title>
<subsection>
<title>Escludere pacchetti e/o categorie</title>
<body>
<p>
Si possono selettivamente aggiornare certe categorie/pacchetti ed ignorarne
altre/i facendo in modo che <c>rsync</c> escluda
categorie/pacchetti durante la fase di <c>emerge --sync</c>.
</p>
<p>
Di default, <c>rsync</c> controlla il contenuto di
<path>/etc/portage/rsync_excludes</path> (se esiste) per vedere quali
categorie o pacchetti <e>non</e> si vogliono aggiornare con <c>rsync</c>.
</p>
<p>
Si noti comunque che questo può portare ad avere problemi di dipendenze nuove,
aggiornando pacchetti che potrebbero dipendere da pacchetti nuovi ma esclusi.
</p>
</body>
</subsection>
</section>
<section>
<title>Aggiungere ebuild non ufficiali</title>
<subsection>
<title>Definizione di una propria directory Portage</title>
<body>
<p>
Il Portage può usare ebuild che non sono disponibili attraverso l'albero ufficiale. Per far questo, si può creare una nuova directory (per esempio
<path>/usr/local/portage</path>) entro la quale memorizzare gli ebuild di terze parti usando la stessa struttura delle directory dell'albero del Portage.
</p>
<p>
Si definisce quindi la variabile PORTDIR_OVERLAY in <path>/etc/make.conf</path> affinché punti alla directory creata precedentemente. Usando Portage dopo
queste modifiche, si potranno usare questi nuovi ebuild senza che vengano
rimossi o sovrascritti da un nuovo <c>emerge --sync</c>.
</p>
</body>
</subsection>
<subsection>
<title>Lavorare con diversi overlay</title>
<body>
<p>
Per gli utenti che sviluppano su diversi strati, testano pacchetti
prima di porli nell'albero di Portage o vogliono semplicemente usare ebuild non ufficiali
di varie sorgenti, il pacchetto
<c>app-portage/gentoolkit-dev</c> fornisce
<c>gensync</c>, uno strumento che aiuta a mantenere aggiornati gli
overlay repository.
</p>
<p>
Con <c>gensync</c> si possono aggiornate tutti i repository in una volta sola o selezionare solo alcuni di essi. Ogni repository dovrebbe avere un
file
<path>.syncsource</path> nella directory di configurazione <path>/etc/gensync/</path> che contiene l'ubicazione del repository, il nome, l'ID, ecc.
</p>
<p>
Si supponga di avere due repository aggiuntivi chiamati <c>java</c>
( per lo sviluppo di ebuild java) e <c>entapps</c> (per le applicazioni
sviluppate per la propria azienda), si potranno aggiornare nel seguente modo:
</p>
<pre caption="Usare gensync per aggiornare alcuni repository">
# <i>gensync java entapps</i>
</pre>
</body>
</subsection>
</section>
<section>
<title>Software non mantenuto dal Portage</title>
<subsection>
<title>Usare il Portage con software proprietario</title>
<body>
<p>
In alcuni casi si può voler configurare, installare e manutenere software
proprietario senza dover automatizzare il processo del Portage anche se
Portage può provvedere il titolo software. Casi conosciuti sono sorgenti
del kernel e driver nvidia. Si può configurare Portage in modo tale che
sappia che certi pacchetti sono stati installati manualmente nel sistema.
Questo processo è chiamato <e>injecting</e> ed è supportato dal Portage
attraverso il file
<path>/etc/portage/profile/package.provided</path>.
</p>
<p>
Per esempio, per informare il Portage che
<c>vanilla-sources-2.6.11.6</c> è stato installato manualmente, aggiungere
la seguente linea a
<path>/etc/portage/profile/package.provided</path>:
</p>
<pre caption="Esempio di linea per package.provided">
vanilla-sources-2.6.11.6
</pre>
</body>
</subsection>
</section>
</sections>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: hb-portage-tools.xml --]
[-- Type: text/xml; name=hb-portage-tools.xml, Size: 6015 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/handbook/hb-portage-tools.xml,v 1.5 2004/11/15 12:47:47 swift Exp $ -->
<sections>
<version>1.4</version>
<date>28 Luglio 2005</date>
<section>
<title>etc-update</title>
<body>
<p>
<c>etc-update</c> è un tool il cui scopo è di installare i file
<path>._cfg0000_<name></path> attraverso un'interfaccia
che permette l'installazione interattiva e l'installazione automatica
dei file di configurazione non importanti.
I file <path>._cfg0000_<name></path> sono generati dal Portage quando
vuole sovrascrivere un file in una directory protetta dalla variabile
CONFIG_PROTECT.
</p>
<p>
Eseguire <c>etc-update</c> è molto semplice:
</p>
<pre caption="Eseguire etc-update">
# <i>etc-update</i>
</pre>
<p>
Dopo l'installazione dei file di configurazione non importanti, viene
visualizzata una lista di file protetti che dovrebbero essere aggiornati.
In fondo alla lista viene richiesto il da farsi tra le seguenti possibili
opzioni:
</p>
<pre caption="Opzioni di etc-update">
Please select a file to edit by entering the corresponding number.
(-1 to exit) (-3 to auto merge all remaining files)
(-5 to auto-merge AND not use 'mv -i'):
</pre>
<p>
Se si sceglie <c>-1</c>, si provoca l'uscita immediata di <c>etc-update</c>
senza aver eseguito alcun cambiamento. Con le scelte <c>-3</c> o <c>-5</c>,
<e>tutti</e> i file di configurazione listati verrano sovrascritti con le
nuove versioni. E' perciò molto importante selezionare prima i file
di configurazione che non si vorrebbero aggiornare automaticamente.
Questo si può fare semplicemente digitando il numero listato alla sinistra
del file di configurazione.
</p>
<p>
Come esempio selezioniamo il file di configurazione <path>/etc/pear.conf</path>:
</p>
<pre caption="Aggiornare un file di configurazione specifico">
Beginning of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
<comment>[...]</comment>
End of differences between /etc/pear.conf and /etc/._cfg0000_pear.conf
1) Replace original with update
2) Delete update, keeping original as is
3) Interactively merge original with update
4) Show differences again
</pre>
<p>
Si possono ora vedere le differenze tra i due file. Se si pensa che il file
possa venire aggiornato senza problemi, digitare <c>1</c>. Se si pensa che
l'aggiornamento non sia necessario o non provveda nuove o utili informazioni,
digitare <c>2</c>. Se si vuole aggiornare il file di configurazione corrente
in modo interattivo, digitare <c>3</c>.
</p>
<p>
Non ci sono punti a favore della fusione interattiva. Per completezza,
segue la lista di comandi che possono essere usati mentre si sta
interattivamente fondendo i due file. Vengono visualizzate due linee (quella
originale e quella proposta nell'aggiornamento) e la richiesta sul da farsi
tra uno dei seguenti comandi:
</p>
<pre caption="Comandi disponibili per la fusione interattiva">
ed: Edit then use both versions, each decorated with a header.
eb: Edit then use both versions.
el: Edit then use the left version.
er: Edit then use the right version.
e: Edit a new version.
l: Use the left version.
r: Use the right version.
s: Silently include common lines.
v: Verbosely include common lines.
q: Quit.
</pre>
<p>
Una volta terminato l'aggiornamento dei file di configurazione importanti,
si può procedere all'aggiornamento automatico dei restanti file,
<c>etc-update</c> terminerà la sua esecuzione quando non ci saranno più file
di configurazione da aggiornare.
</p>
</body>
</section>
<section>
<title>dispatch-conf</title>
<body>
<p>
Usando <c>dispatch-conf</c> si possono installare gli aggiornamenti dei
file di configurazione mentre si tiene traccia di tutte le modifiche.
<c>dispatch-conf</c> memorizza le differenze tra i file di configurazione
come patch o usando il sistema di revisione RCS.
</p>
<p>
Come con <c>etc-update</c>, viene richiesto di mantenere li file di configurazione
invariato, usare il nuovo file, editare il file corrente o fondere le modifiche
interattivamente. Comunque, <c>dispatch-conf</c> possiede anche alcune
caratteristiche aggiuntive:
</p>
<ul>
<li>
Vengono aggiornati automaticamente i file di configurazione le cui modifiche
coinvolgono solo commenti.
</li>
<li>
Vengono automaticamente aggiornati i file di configurazione che differiscono
solo per la quantità di spazi.
</li>
</ul>
<p>
Accertarsi di editare <path>/etc/dispatch-conf.conf</path> e di creare la
directory referenziata dalla variabile archive-dir.
</p>
<p>
Per maggiori informazioni, consultare le pagine di manuale di <c>dispatch-conf</c>:
</p>
<pre caption="Leggere le paine di manuale di dispatch-conf">
$ <i>man dispatch-conf</i>
</pre>
</body>
</section>
<section>
<title>quickpkg</title>
<body>
<p>
Con <c>quickpkg</c> si possono creare archivi di pacchetti che sono già
installati sul sistema. Questi archivi possono essere usati come pacchetti
precompilati. L'uso di <c>quickpkg</c> è estremamente semplice, basta aggiungere i nomi dei pacchetti che si vuole archiviare.
</p>
<p>
Per esempio, se si vogliono archiviare <c>curl</c>, <c>arts</c> e <c>procps</c>:
</p>
<pre caption="Esempio dell'uso di quickpkg">
# <i>quickpkg curl arts procps</i>
</pre>
<p>
I pacchetti precostruiti vengono memorizzati in <path>$PKGDIR/All</path>
(<path>/usr/portage/packages/All</path> di default).
Link simbolici che puntano a questi pacchetti sono posti in
<path>$PKGDIR/<category></path>.
</p>
</body>
</section>
</sections>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: hb-portage-configuration.xml --]
[-- Type: text/xml; name=hb-portage-configuration.xml, Size: 8376 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/handbook/hb-portage-configuration.xml,v 1.4 2004/11/09 13:01:52 swift Exp $ -->
<sections>
<version>1.4</version>
<date>22 Gennaio 2005</date>
<section>
<title>Configurazione del Portage</title>
<subsection>
<body>
<p>
Si è potuto notare come il Portage sia configurabile attraverso numerose
variabili che si possono definire in <path>/etc/make.conf</path>.
Si faccia riferimento alle pagine man di <path>make.conf</path>
per maggiori e più complete informazioni:
</p>
<pre caption="Leggere le pagine man di make.conf">
$ <i>man make.conf</i>
</pre>
</body>
</subsection>
</section>
<section>
<title>Opzioni specifiche per la compilazione</title>
<subsection>
<title>Opzioni per la configurazione e la compilazione</title>
<body>
<p>
Quando Portage compila un'applicazione, passa il contenuto delle seguenti
variabili al compilatore e allo script configure:
</p>
<ul>
<li>
CFLAGS & CXXFLAGS definisce le flag per i compilatori C e C++.
</li>
<li>
CHOST definisce l'informazione dell'host per lo script configure dell'applicazione.
</li>
<li>
MAKEOPTS è passata al comando <c>make</c> e di solito definisce
l'ammontare del parallelismo usato durante la compilazione. Maggiori informazioni
sulle opzioni di make possono essere trovate nella pagina man di make.
</li>
</ul>
<p>
Anche la variabile USE viene usata durante la configurazione e la compilazione
ma è già stata spiegata minuziosamente nei precedenti capitoli.
</p>
</body>
</subsection>
<subsection>
<title>Opzioni di emersione</title>
<body>
<p>
Quando Portage deve emergere una nuova versione di un certo software,
rimuoverà i file obsoleti delle vecchie versioni dal sistema.
Portage aspetta cinque secondi prima di rimuovere le vecchie versioni.
Questi cinque secondi sono definiti dalla variabile CLEAN_DELAY.
</p>
</body>
</subsection>
</section>
<section>
<title>Protezione dei file di configurazione</title>
<subsection>
<title>Protezione delle locazioni del Portage</title>
<body>
<p>
Portage sovrascrive i file provvisti dalle nuove versioni di un software se
i file non sono memorizzari in una locazione <e>protetta</e>.
Queste locazioni protette sono definite dalla variabile CONFIG_PROTECT e sono
generalmente locazioni di file di configurazione. La lista delle directory
è separata da spazi.
</p>
<p>
Un file che avrebbe dovuto essere scritto in tale locazione protetta
viene rinominato e l'utente viene avvertito della presenza di una nuova
versione del (presumibilmente) file di configurazione.
</p>
<p>
Si può avere la definizione corrente di CONFIG_PROTECT attraverso l'output
di <c>emerge --info</c>:
</p>
<pre caption="Avere la definizione di CONFIG_PROTECT">
$ <i>emerge --info | grep 'CONFIG_PROTECT='</i>
</pre>
<p>
Maggiori informazioni sulla protezione dei file di configurazione del Portage è disponibile attraverso <c>emerge</c>
</p>
<pre caption="Maggiori informazioni sulla protezione dei file di configurazione">
$ <i>emerge --help config</i>
</pre>
</body>
</subsection>
<subsection>
<title>Escludere directory</title>
<body>
<p>
Per 'sproteggere' certe sottodirectory da locazioni protette si può usare
la variabile CONFIG_PROTECT_MASK.
</p>
</body>
</subsection>
</section>
<section>
<title>Opzioni per il download</title>
<subsection>
<title>Ubicazione dei server</title>
<body>
<p>
Quando le informazioni o i dati richiesti non sono disponibili sul sistema,
Portage cerca di recuperarli da Internet. L'ubicazione dei server per le
varie informazioni e i canali dati sono definite attraverso le seguenti
variabili:
</p>
<ul>
<li>
GENTOO_MIRRORS definisce la lista dei server che contengono codice sorgente
(distfiles)
</li>
<li>
PORTAGE_BINHOST definisce un particolare server che contiene pacchetti
precompilati per il sistema
</li>
</ul>
<p>
Una terza definizione coinvolge l'ubicazione del server rsync usato quando
si aggiorna l'albero del Portage:
</p>
<ul>
<li>
SYNC definisce un particolare server che Portage usa per aggiornare
il proprio albero
</li>
</ul>
<p>
Le variabili GENTOO_MIRRORS e SYNC possono essere definite attraverso il
comando <c>mirrorselect</c>. Sarà necessario emergere l'applicazione prima dell'uso com <c>emerge mirrorselect</c>. Per maggiori informazioni vedere l'help
online di mirrorselect:
</p>
<pre caption="Maggiorni informazioni su mirrorselect">
# <i>mirrorselect --help</i>
</pre>
<p>
Se il nostro ambiente richiede di usare un proxy server, si possono usare
le variabili HTTP_PROXY, FTP_PROXY e RSYNC_PROXY per dichiarare il proxy
server.
</p>
</body>
</subsection>
<subsection>
<title>Comandi per il download</title>
<body>
<p>
Quando Portage necessita di scaricare codice sorgente, usa il comando
<c>wget</c> di default. E' possibile modificarlo attraverso la variabile
FETCHCOMMAND.
</p>
<p>
Portage riesce e riprendere download parziali di codice sorgente. Per questo
usa <c>wget</c>, ma si può alterare con la variabili RESUMECOMMAND.
</p>
<p>
Occorre assicurarsi che sia FETCHCOMMAND che RESUMECOMMAND memorizzino il
codice sorgente nella collocazione corretta. Per questo si possono usare
le variabile \${URI} e \${DISTDIR} per puntare all'ubicazione del
codice sorgente e dei distfiles rispettivamente.
</p>
<p>
Si possono anche definire dei gestori di protocollo specifici con
FETCHCOMMAND_HTTP,
FETCHCOMMAND_FTP, RESUMECOMMAND_HTTP, RESUMECOMMAND_FTP, ecc.
</p>
</body>
</subsection>
<subsection>
<title>Configurazione di rsync </title>
<body>
<p>
Non si può alterare il comando rsync usato dal Portage per aggiornare il proprio
albero, ma si possono definire delle variabili relative al comando rsync:
</p>
<ul>
<li>
RSYNC_EXCLUDEFROM punta ad un file contenente la lista dei pacchetti
e/o categorie che rsync dovrebbe ignorare durante il processo di aggiornamento
</li>
<li>
RSYNC_RETRIES definisce quante volte rsync dovrebbe provare a connettersi
al mirror definito dalla variabile SYNC prima di rinunciarvi. Il valore predefinito per questa variabile è 3.
</li>
<li>
RSYNC_TIMEOUT definisce i secondi di inattività di una connessione rsync
prima di avere un timeout. Il valore predefinito per questa variabile è 180
ma utenti dialup probabilmente dovrebbero aumentare i secondi a 300 o più.
</li>
</ul>
</body>
</subsection>
</section>
<section>
<title>Configurazione di Gentoo </title>
<subsection>
<title>Selezione di una branca</title>
<body>
<p>
Si può cambiare la branca predefinita con la variabile ACCEPT_KEYWORDS il cui
valore di default è l'architettura stabile del sistema. Maggiori informazioni
sulle branche di Gentoo possono essere trovate nela prossimo capitolo.
</p>
</body>
</subsection>
<subsection>
<title>Caratteristiche del Portage</title>
<body>
<p>
Si possono attivare certe caratteristiche del Portage con la variabile
FEATURES. Le caratteristiche del Portage sono state discusse nei capitoli
precedenti, come in
<uri link="?part=2&chap=3">Caratteristiche del Portage </uri>.
</p>
</body>
</subsection>
</section>
<section>
<title>Comportamento del Portage</title>
<subsection>
<title>Gestione delle risorse</title>
<body>
<p>
Con la variabile PORTAGE_NICENESS si può aumentare o ridurre il valore nice
con cui viene eseguito il Portage. Il valore di PORTAGE_NICENESS viene
<e>aggiunto</e> al valore corrente di nice.
</p>
<p>
Per maggiori informazioni sui valori di nice fare riferimento alle
pagine man del nice:
</p>
<pre caption="Maggiori informazioni sul nice">
$ <i>man nice</i>
</pre>
</body>
</subsection>
<subsection>
<title>Comportamento dell'output</title>
<body>
<p>
La variabile NOCOLOR, il cui valore predefinito è "false", definisce se
Portage deve disabilitare l'uso di output colorato.
</p>
</body>
</subsection>
</section>
</sections>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: hb-portage-files.xml --]
[-- Type: text/xml; name=hb-portage-files.xml, Size: 9072 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/handbook/hb-portage-files.xml,v 1.5 2004/11/09 13:01:52 swift Exp $ -->
<sections>
<version>1.7</version>
<date>27 Giugno 2005</date>
<section>
<title>I file del Portage</title>
<subsection>
<title>Direttive per la configurazione</title>
<body>
<p>
Portage usa le configurazioni predefinite memorizzate in <path>/etc/make.globals</path>.
Scorrendo questo file, si noterà che tutta la configurazione del Portage è
gestita da variabili. Quali sono queste variabili ed il loro significato
è descritto in seguito.
</p>
<p>
Dato che molte direttive di configurazione differiscono da architettura
ad architettura, Portage ha dei file di configurazione predefiniti che fanno
parte del proprio profilo.
Il proprio profilo è indicato dal link simbolico <path>/etc/make.profile</path>; le configurazioni del Portage sono definite dai file in <path>make.defaults</path> del proprio profilo e dei profili parenti.
Verranno presi in considerazione i profili e la directory
<path>/etc/make.profile</path>.
</p>
<p>
Se si sta pianificando la modifica di una variabile di configurazione
<e>non</e> alterate <path>/etc/make.globals</path> o <path>make.defaults</path>.
Usare invece <path>/etc/make.conf</path> che ha la precedenza sui file
precedenti. Un file di esempio che non viene preso in considerazione dal Portage, si trova in <path>/etc/make.conf.example</path>.
</p>
<p>
Si può anche definire una variabile di configurazione del Portage come una
variabile ambiente, ma non è raccomandato.
</p>
</body>
</subsection>
<subsection>
<title>Informazioni specifiche sul profilo</title>
<body>
<p>
Si è già avuto a che fare con la directory <path>/etc/make.profile</path>.
Questa non è esattamente una directory ma un link simbolico ad un profilo,
di default uno all'interno di <path>/usr/portage/profiles</path> anche
se potete crearne uno vostro e farlo puntare a questo.
Il profilo cui punta il link è il profilo al quale aderisce il sistema.
</p>
<p>
Un profilo contiene informazioni specifiche dell'architettura così come
una lista di pacchetti che appartengono al sistema che corrisponde a
questo profilo, una lista di pacchetti che non girano su questo profilo
(o sono mascherati), ecc.
</p>
</body>
</subsection>
<subsection>
<title>Informazioni specifiche dell'utente</title>
<body>
<p>
Quando si vuole sovrascrivere il comportamento del Portage riguardo
l'installazione del software, si dovrnno editare file all'interno di
<path>/etc/portage</path>.
Si è incoraggiati ad usare i file all'interno di <path>/etc/portage</path> e
scoraggiati ad usare variabili ambiente.
</p>
<p>
All'interno di <path>/etc/portage</path> si possono creare i seguenti file:
</p>
<ul>
<li>
<path>package.mask</path> una lista di pacchetti che si vuole che il Portage
non installi
</li>
<li>
<path>package.unmask</path> una lista di pacchetti che si vuole installare
anche se gli sviluppatori di Gentoo scoraggiano dal farlo
</li>
<li>
<path>package.keywords</path> una lista di pacchetti che si vuole installare
anche se il pacchetto non è stato trovato disponibile per l'architettura
del sistema
</li>
<li>
<path>package.use</path> una lista di flag USE che si vuole usare per
certi pacchetti senza che l'intero sistema ne sia coinvolto
</li>
</ul>
<p>
Maggiori informazioni sulla directory <path>/etc/portage</path>
e la lista completa dei file che vi si possono creare, può essere
trovata nella pagina man del Portage:
</p>
<pre caption="Leggere la pagina man del Portage">
$ <i>man portage</i>
</pre>
</body>
</subsection>
<subsection>
<title>Modificare l'ubicazione dei file e delle directory del Portage</title>
<body>
<p>
Come menzionato precedentemente i file di configurazione non possono
essere memorizzati in directory diverse da quelle predefinite.
Comunque, Portage usa molte altre ubicazioi per vari scopi: memorizzazione
del codice sorgente, directory di compilazione, albero del Portage, ...
</p>
<p>
Tutti questi scopi hanno ubicazioni predefinite ma che possono essere alterate
attraverso <path>/etc/make.conf</path>.
Il resto di questo capitolo spiega quali sono le ubicazioni per scopi speciali
usate dal Portage e come alterare la loro collocazione nel filesystem.
</p>
<p>
Questo documento non deve essere usato come un riferimento. Se si desidera
avere una panoramica, fare riferimento alle pagine man del Portage e di
<path>make.conf</path>:
</p>
<pre caption="Leggere le pagine man del Portage e del make.conf">
$ <i>man portage</i>
$ <i>man make.conf</i>
</pre>
</body>
</subsection>
</section>
<section>
<title>Ubicazione dei file</title>
<subsection>
<title>L'albero del Portage</title>
<body>
<p>
L'ubicazione predefinita per l'albero del Portage è <path>/usr/portage</path>.
Questo è definito dalla variabile PORTDIR. Se si vuole mettere l'albero del
Portage da qualche altra parte (alterando questa variabile), non ci si
deve dimenticare di modificare il link simbolico <path>/etc/make.profile</path>
in accordo con la nuova ubicazione.
</p>
<p>
Se si altera la variabile PORTDIR, si possono voler modificare anche le seguenti
variabili in quanto non noteranno il cambio di PORTDIR (a causa del modo
di gestire le variabili del Portage): PKGDIR, DISTDIR, RPMDIR.
</p>
</body>
</subsection>
<subsection>
<title>Binari precompilati</title>
<body>
<p>
Anche se Portage non usa pacchetti precompilati di default, ha comunque
un supporto esteso anche per questi. Quando si chiede al Portage di usare
pacchetti precompilati, questi verranno cercati nella directory
<path>/usr/portage/packages</path>. Questa ubicazione è definita
dalla variabile PKGDIR.
</p>
</body>
</subsection>
<subsection>
<title>Codice Sorgente</title>
<body>
<p>
Il codice sorgente delle applicazioni è memorizzato, di default, in <path>/usr/portage/distfiles</path>. Questa ubicazione è definita dalla variabile DISTDIR.
</p>
</body>
</subsection>
<subsection>
<title>File RPM</title>
<body>
<p>
Ancge se Portage non usa file RPM, è possibile generarli usando il
comando <c>ebuild</c>
(vedere <uri link="?part=3&chap=6">L'applicazione ebuild</uri>).
L'ubicazione di default per i file RPM è
<path>/usr/portage/rpm</path> ed è definita dalla variabile RPMDIR.
</p>
</body>
</subsection>
<subsection>
<title>Portage Database</title>
<body>
<p>
Portage memorizza il proprio stato (quali pacchetti sono installati, che file appartengono ad un dato pacchetto, ...) in <path>/var/db/pkg</path>.
<e>Non</e> alterare questi file manualmente! Si potrebbe alterare la conoscenza che il Portage ha del proprio sistema.
</p>
</body>
</subsection>
<subsection>
<title>Portage Cache</title>
<body>
<p>
La cache di Portage (con la data di modifica, i pacchetti virtuali,
l'informazione sull'albero delle dipendenze,...) viene memorizzata in
<path>/var/cache/edb</path>. Questa locazione è realmente
una cache: la si può rimuovere se non si sta eseguendo nessuna applicazione
collegata al portage.
</p>
</body>
</subsection>
</section>
<section>
<title>Compilare il software</title>
<subsection>
<title>File temporanei</title>
<body>
<p>
I file temporanei del Portage sono memorizzati di default in <path>/var/tmp</path>. Questo è definito dalla variabile PORTAGE_TMPDIR.
</p>
<p>
Se si altera la variabile PORTAGE_TMPDIR, si potrebbe voler modificare anche le
seguenti variabili dato che non noteranno la modifica di PORTAGE_TMPDIR (a
causa di come Portage gestisce le variabili): BUILD_PREFIX.
</p>
</body>
</subsection>
<subsection>
<title>Directory di compilazione</title>
<body>
<p>
Portage crea specifiche directory di compilazione per ogni pacchetto emerso
all'interno di
<path>/var/tmp/portage</path>. Questa ubicazione è definita dalla variabile BUILD_PREFIX.
</p>
</body>
</subsection>
<subsection>
<title>Ubicazione nel filesystem</title>
<body>
<p>
Di default Portage installa tutti i file sul filesystem corrente
(<path>/</path>), ma si può modificare questa definizione usando la variabile ambiante ROOT.
</p>
</body>
</subsection>
</section>
<section>
<title>Caratteristiche di log</title>
<subsection>
<title>Ebuild Logging</title>
<body>
<p>
Portage può creare file di log per ebuild, ma solo quando la variabile PORT_LOGDIR è definita con una locazione che sia scrivibile dall'utente portage. Il valore predefinito per questa variabile è nullo.
</p>
</body>
</subsection>
</section>
</sections>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: hb-working-portage.xml --]
[-- Type: text/xml; name=hb-working-portage.xml, Size: 21901 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/it/handbook/hb-working-portage.xml,v 1.1 2004/03/24 10:11:46 mush Exp $ -->
<sections>
<version>1.51</version>
<date>30 Giugno 2005</date>
<section>
<title>Benvenuti in Portage</title>
<body>
<p>
Portage è probabilmente l'innovazione di Gentoo più rilevante nella gestione software. La grande flessibilità e l'enorme quantità di caratteristiche ne fanno
uno dei migliori programmi per la gestione del software disponibili
per Linux.
</p>
<p>
Portage è completamente scritto in <uri link="http://www.python.org">Python</uri> e <uri link="http://www.gnu.org/software/bash">Bash</uri> e perciò
completamente visibile agli utenti essendo entrambi linguaggi di scripting.
</p>
<p>
Molti utenti useranno Portage attraverso il tool <c>emerge</c>. Questo
capitolo non è un duplicato delle informazioni disponibili attraverso
le pagine man di emerge. Per avere la lista completa delle opzioni di
emerge, consultare la pagina man:
</p>
<pre caption="Leggere la pagina man di emerge">
# <i>man emerge</i>
</pre>
</body>
</section>
<section>
<title>L'albero del Portage</title>
<subsection>
<title>Gli ebuild</title>
<body>
<p>
Quando si parla di pacchetti si intendono spesso titoli software che sono
disponibili agli utenti Gentoo attraverso l'albero del Portage.
L'albero del Portage è una collezione di file <e>ebuild</e> che contengono
tutte le informazioni necessarie al Portage per manutenere il software
(installare, ricercare,....). Questi ebuild risiedono di default in <path>/usr/portage</path>.
</p>
<p>
Ogni qualvolta si chiede al Portage di eseguire alcune azioni riguardanti
i titoli software, vengono usati gli ebuild del sistema come base.
Diviene, così, importante aggiornare regolarmente gli ebuild del sistema
in modo tale che Portage sia a conoscenza del nuovo software, degli aggiornamenti, ecc.
</p>
</body>
</subsection>
<subsection>
<title>Aggiornamento dell'albero del Portage</title>
<body>
<p>
L'albero del Portage viene di solito aggiornato con <uri
link="http://rsync.samba.org">rsync</uri>, una utility
per il trasferimento incrementale di file.
L'aggiornameto è realmente semplice dato che il comando <c>emerge</c>
fornisce un'interfaccia per rsync:
</p>
<pre caption="Aggiornamento dell'albero del Portage">
# <i>emerge --sync</i>
</pre>
<p>
Se non si riesce ad usare rsync a causa di un firewall si può aggiornare
l'albero del Portage usando lo snapshot che viene generato giornalmente.
Il tool <c>emerge-webrsync</c> scarica ed installa automaticamente l'ultimo
snapshot dai sistemi Gentoo.
</p>
<pre caption="Eseguire emerge-webrsync">
# <i>emerge-webrsync</i>
</pre>
</body>
</subsection>
</section>
<section>
<title>Manutenzione del software</title>
<subsection>
<title>Ricerca del software</title>
<body>
<p>
La ricerca dei titoli software attraverso l'albero del Portage si esegue
utilizzando la funzione di ricerca di <c>emerge</c>. Di default
<c>emerge --search</c> restituisce i nomi dei pacchetti i cui titoli
corrispondono (per intero o parzialmente) a quelli forniti per la ricerca.
</p>
<p>
Per esempio, dovendo cercare tutti i pacchetti che hanno "pdf" nel
loro nome:
</p>
<pre caption="Cercare i pacchetti che contengono pdf nel nome">
$ <i>emerge --search pdf</i>
</pre>
<p>
Se si vuole cercare attraverso la descrizione si può usare l'opzione
<c>--searchdesc</c> ( o <c>-S</c>):
</p>
<pre caption="Cercare i pacchetti che contengono pdf nella descrizione">
$ <i>emerge --searchdesc pdf</i>
</pre>
<p>
Da uno sguardo all'output si nota che vengono fornite diverse informazioni.
I campi sono chiaramente identificati così che non saranno esaminati:
</p>
<pre caption="Esempio dell'output di 'emerge --search'">
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
</pre>
</body>
</subsection>
<subsection>
<title>Installazione del software</title>
<body>
<p>
Una volta trovato il titolo del software che interessa, lo si può facilmente
installare con <c>emerge</c> facendolo seguire dal nome del pacchetto.
Per esempio, per installare <c>gnumeric</c>:
</p>
<pre caption="Installare gnumeric">
# <i>emerge gnumeric</i>
</pre>
<p>
Dato che molte applicazioni dipendono da altre ogni tentativo di installare
certi pacchetti software potrebbe portare all'installazione di alcuni
pacchetti aggiuntivi. Se si vuol sapere cosa verrà installato dal
Portage quando viene richiesta un'installazione, si deve aggiungere l'opzione
<c>--pretend</c>. Per esempio:
</p>
<pre caption="Fingere di installare gnumeric">
# <i>emerge --pretend gnumeric</i>
</pre>
<p>
Quando si chiede al Portage di installare un pacchetto, verrà scaricato il
codice sorgente necessario da internet e memorizzato di default in
<path>/usr/portage/distfiles</path>. Il pacchetti verrà quindi scompresso, compilato e installato. Se si vuole che Portage scarichi solo i sorgenti senza
installarli, si aggiunga al comando <c>emerge</c> l'opzione <c>--fetchonly</c>:
</p>
<pre caption="Scaricare il codice sorgente di gnumeric">
# <i>emerge --fetchonly gnumeric</i>
</pre>
</body>
</subsection>
<subsection>
<title>Trovare la documentazione di pacchetti installati</title>
<body>
<p>
Molti pacchetti forniscono la propria documentazione. Alcune volte
il flag USE <c>doc</c> determina se la documentazione del pacchetto
verrà installata o no. Si può controllare l'esistenza di un flag USE
<c>doc</c> con il comando
<c>emerge -vp
<nome pacchetto></c>.
</p>
<pre caption="Controllo dell'esistenza di un flag USE doc">
<comment>(Naturalmente, alsa-lib è solamente un esempio.)</comment>
# <i>emerge -vp alsa-lib</i>
[ebuild N ] media-libs/alsa-lib-1.0.9_rc3 +doc -jack 674 kB
</pre>
<p>
Si può abilitare o disabilitare il flag USE <c>doc</c> sia globalmente
nel file
<path>/etc/make.conf</path> o per pacchetto nel file
<path>/etc/portage/package.use</path>.
Il capitolo <uri
link="?part=2&chap=2">USE Flag</uri> copre in dettaglio questo aspetto.
</p>
<p>
Una volta che il pacchetto è stato installato, la sua documentazione
viene generalmente trovata in una sottodirectory col nome del pacchetto
nella directory
<path>/usr/share/doc</path>.
Si può avere la lista dei file installati col tool <c>equery</c> che fa
parte del <uri
link="/doc/en/gentoolkit.xml">pacchetto</uri>
<c>app-portage/gentoolkit</c> .
</p>
<pre caption="Trovare la documentazione di un pacchetto">
# <i>ls -l /usr/share/doc/alsa-lib-1.0.9_rc3</i>
total 28
-rw-r--r-- 1 root root 669 May 17 21:54 ChangeLog.gz
-rw-r--r-- 1 root root 9373 May 17 21:54 COPYING.gz
drwxr-xr-x 2 root root 8560 May 17 21:54 html
-rw-r--r-- 1 root root 196 May 17 21:54 TODO.gz
<comment>(Alternativamente, usare equery per localizzare file interessanti:)</comment>
# <i>equery files alsa-lib | less</i>
media-libs/alsa-lib-1.0.9_rc3
* Contents of media-libs/alsa-lib-1.0.9_rc3:
/usr
/usr/bin
/usr/bin/alsalisp
<comment>(output troncato)</comment>
</pre>
</body>
</subsection>
<subsection>
<title>Rimozione del software</title>
<body>
<p>
Se si vuole rimuovere un pacchetto dal sistema, usare <c>emerge --unmerge</c>.
Questo comando rimuoverà tutti i file installati dal pacchetto
<e>eccetto</e> i file di configurazione che sono stati alterati
dopo l'installazione. In questo modo si permette di
continuare a lavorare con il pacchetto nel caso si decidesse di installarlo
nuovamente.
</p>
<p>
<brite>Attenzione</brite>: Portage <e>non</e> controllerà se il
pacchetto che si vuole rimuovere sia richiesto da un altro pacchetto.
Verrà solo emesso un avviso del fatto che la rimozione di pacchetti importanti
potrebbe danneggiare il sistema.
</p>
<pre caption="Rimozione di gnumeric">
# <i>emerge --unmerge gnumeric</i>
</pre>
<p>
Quando si rimuove un pacchetto dal sistema, le sue dipendenze saranno
lasciate. Per far trovare al Portage tutte le dipendenze che potrebbero
essere rimosse, usare la funzionalità <c>--depclean</c> di <c>emerge</c>.
Se ne parlerà in seguito.
</p>
</body>
</subsection>
<subsection>
<title>Aggiornare il software</title>
<body>
<p>
Per mantenere il sistema in perfetta forma (e non solo con gli ultimi
aggiornamenti sulla sicurezza) si dovrà mantenere aggiornato il sistema
regolarmente. Dato che Portage controlla gli ebuild dell'albero del Portage
si dovrà prima aggiornare l'albero. Quindi, si potrà aggiornare il sistema
con <c>emerge --update world</c>:
</p>
<pre caption="Aggiornare il sistema">
# <i>emerge --update world</i>
</pre>
<p>
Portage cercherà quindi le nuove versioni delle applicazioni installate.
Verranno comunque verificate solo le versioni per le applicazioni che
si sono esplicitamente installate e non le dipendenze.
Se si vuole aggiornare ogni singolo pacchetto del sistema, occorre
aggiungere l'argomento <c>--deep</c>:
</p>
<pre caption="Aggiornare l'intero sistema">
# <i>emerge --update --deep world</i>
</pre>
<p>
Dato che aggiornamenti che riguardano la sicurezza possono
essere correlati a pacchetti che non si sono esplicitamente installati
nel sistema (ma che sono stati installati quali dipendenze di altri programmi),
si raccomanda di eseguire questo comando una volta ogni tanto.
</p>
<p>
Se è stato alterato qualche <uri link="?part=2&chap=2">USE flag</uri>
si può aggiungere l'opzione <c>--newuse</c>. Portage verificherà
se la modifica richiede l'installazione di nuovi pacchetti o la ricompilazione
di quelli esistenti:
</p>
<pre caption="Eseguire un aggiornamento completo">
# <i>emerge --update --deep --newuse world</i>
</pre>
</body>
</subsection>
<subsection>
<title>Metapacchetti</title>
<body>
<p>
Alcuni pacchetti presenti nell'albero del Portage non hanno un contenuto reale
ma sono usati per installare una collezione di pacchetti. Per esempio,
il pacchetto <c>kde</c> installa un ambiente KDE sul sistema ricercando tra
i vari pacchetti legati al KDE come dipendenze.
</p>
<p>
La rimozione di un tale pacchetto dal sistema usando <c>emerge --unmerge</c>,
non avrà successo dato che le numerose dipendenze rimarranno sul sistema.
</p>
<p>
Portage ha anche la funzionalità di rimozione delle dipendenze orfane, ma dato che
la disponibilità del software è dinamicamente dipendente, occorre prima
aggiornare completamente l'intero sistema, includendo, se ci sono state, le
modifiche alle flag USE. Quindi sarà possibile eseguire <c>emerge --depclean</c>
per rimuovere le dipendenze orfane. Fatto ciò, ci sarà bisogno di
ricompilare le applicazioni che erano dinamicamente linkate al software
rimosso ma non più richiesto.
</p>
<p>
Tutto ciò può essere fatto con un seguenti tre comandi:
</p>
<pre caption="Rimozione delle dipendenze orfane">
# <i>emerge --update --deep --newuse world</i>
# <i>emerge --depclean</i>
# <i>revdep-rebuild</i>
</pre>
<p>
<c>revdep-rebuild</c> viene provveduto col pacchetto <c>gentoolkit</c>, che deve
essere quindi emerso prima:
</p>
<pre caption="Installazione del pacchetto gentoolkit">
# <i>emerge gentoolkit</i>
</pre>
</body>
</subsection>
</section>
<section>
<title>Errori durante l'uso del Portage</title>
<subsection>
<title>Slot, virtualità, branche, architetture e profili</title>
<body>
<p>
Portage è estremamente potente e supporta molte
caratteristiche che altri gestori di software omettono. Si vedranno ora
altri aspetti del Portage senza andare troppo nei dettagli.
</p>
<p>
Portage permette la coesistenza di differenti versioni dello stesso pacchetto.
A differenza di altre distribuzioni che tendono a chiamare i propri pacchetti
con le versioni (come <c>freetype</c> e <c>freetype2</c>), Portage usa una
tecnica chiamata <e>SLOT</e>. Un ebuild dichiara un certo SLOT per le proprie
versioni. Ebuild con SLOT differenti possono coesistere sullo stesso sistema.
Per esempio, il pacchetto <c>freetype</c> ha un ebuild con <c>SLOT="1"</c>
e <c>SLOT="2"</c>.
</p>
<p>
Ci sono anche pacchetti che provvedono la stessa funzionalità ma
con un'implementazione diversa. Per esempio, <c>metalogd</c>, <c>sysklogd</c>
e <c>syslog-ng</c>, tutti gestori di eventi di sistema. Applicazioni che fanno
assegnamento sulla disponibilità di un gestore di eventi di sistema, non
possono dipendere da uno in particolare. Per esempio, <c>metalogd</c>, come altri
sistemi di gestione di eventi, sono tutti un'ottima scelta. Portage permette
l'uso di <e>virtualità</e>: ogni sistema di gestione degli eventi provvede
un <c>virtual/syslog</c> in modo tale che le applicazioni possano dipendere
da tale <c>virtual/syslog</c>.
</p>
<p>
Il software all'interno dell'albero del Portage, può risiedere in differenti
branche. Di default il sistema accetta solo pacchetti che Gentoo giudica
stabili. Molti nuovi software una volta raccomandati, vengono aggiunti
ad una branca di test, il che significa che sarà necessario procedere
ad ulteriori verifiche prima di marcarli come stabili. Anche se gli ebuild
per tali software sono presenti nell'albero del Portage, non vengono aggiornati
prima di raggiungere la branca stabile.
</p>
<p>
Alcuni software sono disponibili solo per alcune architetture. Oppure
il software non gira su altre architetture o ha necessità di essere
ulteriormente testato o gli sviluppatori che raccomandano il software
non sono in grado di verificare se il pacchetto gira su differenti architetture.
</p>
<p>
Ogni installazione di Gentoo aderisce ad un certo <c>profilo</c> che contiene
tra le altre informazioni, la lista dei pacchetti che sono richiesti
affinché un sistema funzioni normalmente.
</p>
</body>
</subsection>
<subsection id="blocked">
<title>Pacchetti bloccati</title>
<body>
<pre caption="Portage avverte circa i pacchetti bloccati (con --pretend)">
[blocks B ] mail-mta/ssmtp (from pkg mail-mta/postfix-2.2.2-r1)
</pre>
<pre caption="Portage avverte circa i pacchetti bloccati (senza --pretend)">
!!! Error: the mail-mta/postfix package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
</pre>
<p>
Gli ebuild contengono specifici campi che informano il Portage sulle
dipendenze. Ci sono due possibili dipendenze: dipendenze in fase di compilazione dichiarate in <c>DEPEND</c> e dipendenze per l'esecuzione dichiarate in <c>RDEPEND</c>.
Quando una di queste dipendenze marca un pacchetto o un virtuale come
<e>non</e> compatibile, questo viene bloccato.
</p>
<p>
Per correggere il blocco, si può scegliere tra il non installare il pacchetto
o rimuovere prima il pacchetto che causa il conflitto. Nel precedente
esempio si può scegliere tra il non installare <c>postfix</c> o rimuovere
prima <c>ssmtp</c>.
</p>
<p>
E' anche possibile che due pacchetti che devono essere ancora installati
siano in conflitto tra loro. In questo raro caso, si dovrebbe capire
perché si vogliono installare entrambi dato che in molti casi può bastare
l'installazione di un solo pacchetto. Se non è questo il caso, aprire un bug sul
<uri link="http://bugs.gentoo.org">Gentoo bugtracking system</uri>.
</p>
</body>
</subsection>
<subsection id="masked">
<title>Pacchetti mascherati</title>
<body>
<pre caption="Portage avverte circa i pacchetti mascherati">
!!! all ebuilds that could satisfy "bootsplash" have been masked.
</pre>
<pre caption="Portage avverte circa i pacchetti mascherati - la ragione">
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: <i>~x86 keyword</i>)
- lm-sensors/lm-sensors-2.8.7 (masked by: <i>-sparc keyword</i>)
- sys-libs/glibc-2.3.4.20040808 (masked by: <i>-* keyword</i>)
- dev-util/cvsd-1.0.2 (masked by: <i>missing keyword</i>)
- media-video/ati-gatos-4.3.0 (masked by: <i>package.mask</i>)
- sys-libs/glibc-2.3.2-r11 (masked by: <i>profile</i>)
</pre>
<p>
Quando si desidera installare un pacchetto che non è disponibile per il
nostro sistema, si riceverà un errore di pacchetto mascherato.
Si dovrà quindi installare un'applicazione differente disponibile per
il nostro sistema oppure aspettare finché il pacchetto divenga
disponibile. C'è sempre una ragione perché un pacchetto viene mascherato:
</p>
<ul>
<li>
<b>~arch keyword</b> significa che l'applicazione non è stata sufficientemente testata per essere inserita nella branca stabile.
Aspettare alcuni giorni o alcune settimane e provare nuovamente.
</li>
<li>
<b>-arch keyword</b> o <b>-* keyword</b> significa che l'applicazione non funziona sulla nostra architettura. Se si crede che il pacchetto giri, aprire un
bug sul <uri link="http://bugs.gentoo.org">bugzilla</uri> di Gentoo.
</li>
<li>
<b>missing keyword</b> significa che l'applicazione non è ancora stata testata sulla nostra architettura.
Chiedere al gruppo che si occupa del porting per l'architettura di
testare il pacchetto o testarlo per loro e riportare i risultati sul
<uri link="http://bugs.gentoo.org">bugzilla</uri> di Gentoo.
</li>
<li>
<b>package.mask</b> significa che il pacchetto è corrotto, instabile o difettoso ed è stato deliberatamente marcato come non-usare.
</li>
<li>
<b>profile</b> significa che il pacchetto non è stato trovato appropriatamente nel vostro profilo.
Le applicazioni potrebbero danneggiare il sistema se installate o sono solo
non compatibili col profilo in uso.
</li>
</ul>
</body>
</subsection>
<subsection id="missingdependencies">
<title>Dipendenze omesse</title>
<body>
<pre caption="Portage avverte circa le dipendenze omesse">
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r4
!!! Possibly a DEPEND/*DEPEND problem.
</pre>
<p>
L'applicazione che si sta provando ad installare dipende da un altro
pacchetto che non è disponibile per il sistema. Controllare
su <uri
link="http://bugs.gentoo.org">bugzilla</uri> se la cosa è segnalata
altrimenti la si può riportare. A meno che non si stia mescolando
le branche, questo non dovrebbe accadere ed è perciò un bug.
</p>
</body>
</subsection>
<subsection id="ambiguousebuild">
<title>Nomi di ebuild ambigui</title>
<body>
<pre caption="Portage avverte circa l'ambiguità di nomi di ebuild">
!!! The short ebuild name "aterm" is ambiguous. Please specify
!!! one of the following fully-qualified ebuild names instead:
dev-libs/aterm
x11-terms/aterm
</pre>
<p>
L'applicazione che si vuole installare ha un nome che corrisponde con un altro
pacchetto. Occorre specificare la categoria. Portage informa sulle scelte
possibili.
</p>
</body>
</subsection>
<subsection id="circulardependencies">
<title>Dipendenze circolari</title>
<body>
<pre caption="Portage avverte circa le dipendenze circolari">
!!! Error: circular dependencies:
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
</pre>
<p>
Due (o più) pacchetti che si vuole installare dipendono l'uno dall'altro e non
possono perciò essere installati. Questo è probabilmente un bug del Portage.
Provare ad eseguire un rsync e provare nuovamente. Si può anche controllare
su <uri link="http://bugs.gentoo.org">bugzilla</uri> se è un caso conosciuto
oppure no, nel qual caso lo si può riportare.
</p>
</body>
</subsection>
<subsection id="fetchfailed">
<title>Scaricamento non riuscito</title>
<body>
<pre caption="Portage avverte circa un download non riuscito">
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
<comment>(...)</comment>
!!! Some fetch errors were encountered. Please see above for details.
</pre>
<p>
Portage non è riuscito a scaricare i sorgenti per una data applicazione
e proverà a proseguire con l'installazione delle altre applicazioni
se ci sono. Questo problema può essere causato da un mirror che non è
stato sincronizzato appropriatamente o perché l'ebuild punta ad una locazione
incorretta. Il server dove risiedono i sorgenti potrebbe anche non essere
disponibile per qualche ragione.
</p>
<p>
Riprovare dopo un'ora e vedere se la situazione persiste.
</p>
</body>
</subsection>
<subsection id="profileprotect">
<title>Protezione dei profili di sistema</title>
<body>
<pre caption="Portage avverte circa la protezione dei profili">
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
</pre>
<p>
Si è richiesto la rimozione di un pacchetto che fa parte del core del
sistema. Tale pacchetto è listato nel vostro profile come richiesto e
dovrebbe perciò non essere rimosso dal sistema.
</p>
</body>
</subsection>
</section>
</sections>
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2005-08-29 10:20 il Sasdo
0 siblings, 0 replies; 39+ messages in thread
From: il Sasdo @ 2005-08-29 10:20 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1.1: Type: text/plain, Size: 224 bytes --]
Ecco le mie guide aggiornate:
file: gentoo-sparc-faq.xml
versione: 1.3
revisione: 1.6
file: quick-samba-howto.xml
versione: 1.12
revisione: 1.18
Ciao!
--
ochei lo ammetto: il mio cervello lo tengo in frigo.
[-- Attachment #1.2: Type: text/html, Size: 266 bytes --]
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: gentoo-sparc-faq.xml --]
[-- Type: text/xml; name="gentoo-sparc-faq.xml", Size: 17447 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/it/gentoo-sparc-faq.xml,v 1.3 2004/07/17 13:51:36 mush Exp $ -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link="/doc/it/gentoo-sparc-faq.xml" lang="it">
<title>Domande frequenti riguardanti Gentoo Linux su piattaforma SPARC</title>
<author title="Sviluppatore SPARC"><mail link="weeve@gentoo.org">Jason Wever</mail></author>
<author title="Traduzione"><mail link="sasdo@email.it">Enrico Sasdelli</mail></author>
<abstract>
Questa FAQ è destinata a rispondere alle domande più comuni relative a Gentoo Linux/SPARC e Linux su architetture SPARC.
E' possibile inviare revisioni e correzioni al team sparc o al team della documentazione.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license/>
<version>1.3</version>
<date>2005-08-29</date>
<chapter>
<title>Note della Documentazione</title>
<section>
<body>
<p>
Queste sono alcune note per familiarizzare con gli acronimi ed i termini utilizzati in questo documento.
</p>
<p>
Quando vengono menzionati <c>SPARC</c> e <c>SPARC64</c>, si fa riferimento al tipo di sistema
di <c>sun4x</c>.
SPARC rappresenta il sistema a 32 bit che utilizza le architetture <c>sun4c</c>, <c>sun4d</c>
e <c>sun4m</c> (per esempio SPARCstations).
SPARC64 rappresenta l'architettura <c>sun4u</c> nella serie UltraSPARC (Ultras, Blades, SunFires, etc.) .
</p>
<p>
Alcuni acronimi: <c>OBP</c> = OpenBoot PROM, <c>SS</c> = SPARCstation
</p>
</body>
</section>
</chapter>
<chapter>
<title>Installazione</title>
<section>
<title>Come si può installare/usare SPARC su una console seriale?</title>
<body>
<p>
Primo, bisogna assicurarsi di non avere una tastiera o un monitor collegati. OBP userà
il monitor per l'output di default se uno è collegato. Ci sarà bisogno di un cavo null modem
o di un cavo seriale regolare senza adattatore nullmodem per essere abilitato a vedere l'output.
</p>
<p>
Settaggi della porta seriale standard:
</p>
<ul>
<li>9600 baud</li>
<li>8 bits di dati</li>
<li>Nessun bit di parità</li>
<li>1 bit di stop</li>
</ul>
<p>
Qui sotto c'è una lista dei programmi più usati per visualizzare una console seriale.
Controlla per vedere se l'applicazione della tua console seriale ha la possibilità di
inviare un break, questo può essere molto utile su SPARC.
Il segnale di break su una console seriale è l'equivalente di inviare il comando Stop+A sulla tastiera.
</p>
<table>
<tr>
<th>Linux</th>
<th>Windows</th>
</tr>
<tr>
<ti>Minicom</ti>
<ti>Hyperterm</ti>
</tr>
<tr>
<ti>Kermit</ti>
<ti>TeraTerm Pro</ti>
</tr>
<tr>
<ti>Console</ti>
<ti></ti>
</tr>
<tr>
<ti>Seyon</ti>
<ti></ti>
</tr>
</table>
</body>
</section>
<section>
<title>Come si può fare il boot da rete su SPARC per l'installazione?</title>
<body>
<p>
Attualmente Gentoo ha un'immagine per il boot/tftpboot da rete sperimentale accessibile
su un mirror locale Gentoo in experimental/sparc/tftpboot. E' possibile prendere
l'immagine appropriata per il proprio computer SPARC e quindi leggere il Netboot HOWTO
per altre informazioni.
</p>
</body>
</section>
<section>
<title>
Se si ha monitor CRT/LCD collegato a SPARC, e questo seleziona una risoluzione che il
monitor non riesce a tenere al boot del kernel, come si può ottenere un display visibile e/o non distorto?</title>
<body>
<p>
Questo problema è il risultato del supporto framebuffer che il kernel Linux carica al boot, e le opzioni
possibili sui sistemi SPARC.
Si assume che il monitor e scheda video siano compatibili con una risoluzione di
1024x768 e la frequenza di refresh pari a 60Hz.
In OBP, si può settare la risoluzione modificando i settaggi per l'<c>output-device</c>.
Per vedere i settaggi correnti, c'è il comando:
</p>
<pre caption="Visualizzare le impostazioni correnti">
ok <i>printenv output-device</i>
<comment><output-device> <screen> <screen></comment>
</pre>
<p>
Ora, per settare la risoluzione come detto prima, basterà invocare <c>setenv</c> come segue:
</p>
<pre caption="Impostare il display">
ok <i>setenv output-device screen:r1024x768x60</i>
output-device = screen:r1024x768x60
</pre>
<p>
Perchè questo abbia effetto, bisogna resettare la macchina.
</p>
<pre caption="Reset della macchina">
ok <i>reset</i>
</pre>
<p>
Gli utenti che utilizzano la scheda video basata sul chipset ATI Mach64
(Ultra 5/10 e Blade 100/150), dovranno aggiungere queste righe come opzioni
al boot del kernel:
</p>
<pre caption="Aggiunta delle opzioni del kernel al boot">
video=atyfb:1024x768@60
</pre>
<p>
Se si ha SILO, si potrà aggiungere questa stringa alla fine dell'immagine di boot data.
L'esempio seguente è valido se si sta bootando dal LiveCD.
</p>
<pre caption="Avvio da un Gentoo LiveCD">
boot: <i>gentoo video=atyfb:1024x768@60</i>
</pre>
<p>
Se si sta bootando dalla rete, bisognerà aggiungere questa stringa alla fine
della direttiva boot net in OBP come illustrato qui sotto:
</p>
<pre caption="Avvio da rete">
ok <i>boot net video=atyfb:1024x768@60</i>
</pre>
</body>
</section>
<section>
<title>Quali opzioni del kernel devo usare con SPARC?</title>
<body>
<p>
Il più delle volte, le opzioni del kernel di default sono accettabili per il
supporto hardware. Basterà controllare che il supporto per <c>devfs</c> e la voce
<c>virtual memory filesystem</c> siano abilitati nel kernel come spiegato
nell'<uri link="http://www.gentoo.org/doc/it/handbook">Installation Handbook</uri>.
</p>
<p>
Lo sviluppatore Gentoo/SPARC Ciaran McCreesh mantiene una collezione di
files di configurazione del kernel per diversi sistemi SPARC all'indirizzo
<uri>http://dev.gentoo.org/~ciaranm/configs/kernel/</uri>.
E' possibile inviare file di configurazione del kernel per qualsiasi versione del sistema SPARC
e/o kernel non ancora in lista, a <mail link="ciaranm@gentoo.org">ciaranm@gentoo.org</mail>
</p>
</body>
</section>
<section>
<title>Come si abilita il dual boot con Gentoo Linux/SPARC e Solaris?</title>
<body>
<p>
Il dual boot di Gentoo Linux/SPARC e Solaris può essere fatto in due modi.
Entrambi funzionano sia con Gentoo Linux/SPARC e Solaris sullo stesso harddisk o su
due separati. A seguire c'è un esempio del file di configurazione di SILO per ambo i casi.
In questo esempio si assume che:
</p>
<p>
Setup per un solo HardDisk:
</p>
<ul>
<li>Il Drive di boot sia SCSI ID 0</li>
<li>Gentoo boota dalla partitizione 1</li>
<li>Solaris boota dalla paritizione 5</li>
</ul>
<p>
Setup per due HardDisk separati:
</p>
<ul>
<li>Il secondo drive sia SCSI ID 1</li>
<li>Gentoo sia su SCSI ID 0</li>
<li>Solaris sia su SCSI ID 1</li>
<li>boot-device su OBP sia SCSI ID 0</li>
</ul>
<pre caption="Esempio di silo.conf per un'installazione su singolo harddisk">
<comment># Generic config options</comment>
partition = 1
timeout = 50
<comment># Gentoo Linux/SPARC options</comment>
image = /boot/vmlinux
label = linux
root=/dev/sda4
<comment># Solaris options</comment>
other=5
label = Solaris
</pre>
<pre caption="Esempio di silo.conf per un'installazione con due harddisk">
<comment># Generic config options</comment>
parition = 1
timeout = 50
<comment># Gentoo Linux/SPARC options</comment>
image = /boot/vmlinux
label = linux
root=/dev/sda4
<comment># Solaris options</comment>
other = /sbus/espdma/esp/sd@1,0;1
label = solaris
</pre>
</body>
</section>
<section>
<title>Dopo aver installato Gentoo, la macchina non si avvia.
Perchè?</title>
<body>
<p>
Una delle possibili cause è che gli SCSI ID siano già assegnati.
Lo svilupptore Gentoo/SPARC Keith Wesolowski ha provveduto come segue.
</p>
<p>
Linux, normalmente, ordina i device per SCSI ID. Il disco con il numero
minore è <c>sda</c>, quindi <c>sdb</c>, e così via. Nota che <c>devfs</c> permette di
specificare il device tramite SCSI ID, quindi aggiungere device non causa
la rinominazione dei device esistenti, finchè non si usano dei nomi compatibili.
Ci sono diversi modi per risolvere questo problema.
</p>
<p>
In molti dei sistemi sun4c e sun4m, OBP crea un alias "disk" al device con
SCSI ID 3, e "disk0" fino a "disk3" al device con il corrispondente
SCSI ID, se questo succede, capita di avere un disco anzichè un CDROM,
un nastro ecc..
</p>
<p>
Nei sistemi desktop di questi tempi che supportano due dischi SCA
(Aurora Chassis System), il più basso slot viene assegnato a SCSI ID 3, ed
il più alto a SCSI ID 1.
</p>
<p>
Volendo, si può cambiare il PROM alias "disk" per collegare il "disk1"
quindi il comando <c>boot disk</c> farà sì che il sistema faccia il boot
dallo stesso device che Linux chiama <c>sda</c>. Questo appare più costante e normale,
specialmente per utenti con esperienza di PC. Alternativamente, si può
semplicemente mettere il filesystem contenente <path>/boot</path> (che può essere il filesystem
di root o un filesystem diverso) su un device con ID 3 (Linux sdb) e avviare da lì,
questo se si ha un filesystem di root su entrambi <c>sda</c> e <c>sdb</c>, o di fatto qualsiasi
altro disco fissato al sistema.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Hardware</title>
<section>
<title>Gentoo funziona su tutti gli SPARC?</title>
<body>
<p>
Si, quasi, un'eccezione riguarda i portatili bastati SPARc della Tadpole, in particolare i modelli più recenti.
Se si ha un Tadpole funzionante con Gentoo/SPARC, siete pregati di inviare al team SPARC i dettagli della configurazione
e del modello.
</p>
<p>
Lo sviluppatore Gentoo/SPARC Todd Sunderlin ha una lista parziale dello stato dei sistemi
SPARC64 con Gentoo al link
<uri>http://dev.gentoo.org/~todd/sparc64.html</uri>
E' possibile scrivergli con ogni aggiunta o possibili cambiamenti
a <mail link="todd@gentoo.org">todd@gentoo.org</mail>
</p>
<p>
Per aggiungere alla lista i dettagli del tuo modello SPARC64, basta scrivere a <mail link="todd@gentoo.org">todd@gentoo.org</mail> con
le informazioni pertinenti. Generalmente, il supporto per i sistemi SPARC64 è abbastanza
buono da permettere agli utenti di farlo funzionare correttamente in ambienti lavorativi.
</p>
<p>
I sistemi a 32-bit SPARC sono diversi. I sistemi con l'architettura sun4m sono
famosi per un buon funzionamento (554 - 5520) includendo configurazione SMP con l'ultima
versione dei kernel della serie 2.4. I sistemi sun4m che usano HyperSPARC o processori Ross
con una configurazione SMP, avranno un sacco di problemi relativi al kernel. In più non si è
ancora sentito di rapporti di utenti riguardo le Java-station quindi
il loro stato è sconosciuto. I sistemi basati su sun4d attualmente non funzionano con
i kernel della serie 2.4, e i sun4c sono piuttosto instabili.
</p>
<p>
Spesso, i problemi riscontrati nel tentativo di far funzionare Gentoo su un sistema
SPARC a 32-bit, partono dal kernel. Rob Radez (che non ha relazioni con Gentoo)
mantiene una pagin web a <uri>http://osinvestor.com/sparc/</uri> con lo stato
del supporto dei sistemi SPARC per diverse versioni del kernel Linux. Questo può
essere d'aiuto per capire quanto sarà usabile un sistema SPARC sotto SPARC/Linux.
</p>
</body>
</section>
<section>
<title>Quale hardware addizionale è supportato da Gentoo/SPARC?</title>
<body>
<p>
Per una lista dell'hardware addizionale Sun supportato, è possibile consultare la lista
dell'UltraLinux homepage - <uri>http://www.ultralinux.org/faq.html#q_2_2.</uri>
</p>
<p>
Una parte della lista dei dispositivi Sun che al momento NON hanno supporto sotto Gentoo/SPARC,
in generale sono:
</p>
<ul>
<li>SunPCI cards</li>
<li>SBUS or PCI PCMCIA controllers</li>
<li>Lettori di Smart card su alcune workstation Sun Blade</li>
<li>Floppy drive su alcune workstation Sun Blade</li>
</ul>
<p>
Infine, lo sviluppatore Gentoo/SPARC Sven Blumenstein mantiene un lista dell'hardware
PC che è stato testato con i sistemi SPARC64 basati su PCI, all'indirizzo:
<uri>http://dev.gentoo.org/~bazik/hw.php</uri>.
E' possibile comunicare i propri test di hardware PC o non-Sun, semplicemente scrivendo a:
<mail link="bazik@gentoo.org">bazik@gentoo.org</mail> con le informazioni dell'hardware
richieste come nella lista già esistente.
</p>
</body>
</section>
<section>
<title>Come posso riconoscere il tipo di sistema sun?</title>
<body>
<p>
L'UltraLinux FAQ ha la risposta su
<uri>http://www.ultralinux.org/faq.html#q_2_1</uri>
</p>
</body>
</section>
</chapter>
<chapter>
<title>Applicazioni</title>
<section>
<title>Come usare XFree86 per cercare una configurazione funzionante sulla mia Ultra 5/10 o Blade 100/150</title>
<body>
<p>
L'ATI Framebuffer normalmente si aspetta un BIOS basato su PC per settare il
Reference Clock per la velocità della scheda video. Quindi, su architetture non x86,
questo non accade. Allora ecco cosa bisogna fare per settare la velocità del Reference Clock
nel file XF86Config.
</p>
<p>
Nella sezione "Device" del tuo file XF86Config, bisogna aggiungere un riga simile alla seguente:
</p>
<pre caption="Aggiunta a XF86Config">
Option "reference_clock" "28.636 MHz"
</pre>
<p>
Il seguente URL contiene altre informazioni su come settare il Reference Clock:
<uri>http://www.xfree86.org/~dawes/4.3.0/ati5.html#26</uri>. Se aveste problemi
potete provare prima senza una simile configurazione.
</p>
</body>
</section>
<section>
<title>Perchè alcuni package sono masked su Sparc?</title>
<body>
<p>
Le possibilià sono due: o nessuno degli sviluppatori Gentoo/SPARC ha
testato il pacchetto, e/o il pacchetto è attualmente marcato con la ~sparc keyword
(che significa che è in fase di test).
</p>
<p>E' comunque possibile installare uno di quesi pacchetti, bisogna seguire le istruzioni nella
<uri link="http://forums.gentoo.org/viewtopic.php?t=33534"> Portage Masked Packages FAQ </uri>.
</p>
<note>
La FAQ menziona la keyword sparc64, che è invalida.
</note>
</body>
</section>
<section>
<title>Come aiutare a marcare "stable" un pacchetto</title>
<body>
<p>
Per aiutare ad assicurare che un pacchetto sia stabile,
in particolare se è un'applicazione con una piccola utenza base (per esempio net-im/bitlbee),
basta installare il pacchetto e controllare che funzioni per essere sicuri che sia stabile.
Se sembra che lo sia, basta inviare un bug a <uri>http://bugs.gentoo.org</uri>
ed assegnarlo al Gentoo/SPARC team.
</p>
</body>
</section>
<section>
<title>Emerge ha fallito l'installazione di un pacchetto a causa
di una dipendenza mascherata. Come risolvere il problema</title>
<body>
<p>
Questo è un bug ed è bene inviare un bug report a <uri>http://bugs.gentoo.org</uri>
per il team Gentoo/SPARC indicando quale pacchetto si è tentato di emergere,
il messaggio di errore avuto e l'output di <c>emerge --info</c>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Miscellanea</title>
<section>
<title>Come divenire più coinvolti con Gentoo/SPARC.</title>
<body>
<p>
Il modo migliore è entrare nel canale IRC #gentoo-sparc su Freenode IRC (irc.freenode.net).
Qui è dove tutti gli sviluppatori parlano (fra le altre cose) di SPARC .
Più breve di una email, questo è il miglior modo per avere l'attenzione del team.
</p>
<p>
Altrimenti, molti utenti e sviluppatori fanno uso di <uri link="http://forums.gentoo.org/viewforum.php?f=27">Gentoo/SPARC forum</uri>.
Questo è un buon posto per fare domande e vedere quali sono i problemi che saltano fuori, così come parlare di
Gentoo/SPARC.
</p>
<p>
In aggiunta, si possono vedere i bug per Gentoo/SPARC attraverso il <uri link="http://bugs.gentoo.org">Gentoo Bugzilla</uri>.
I bug verranno assegnati o rediretti a sparc@gentoo.org.
</p>
</body>
</section>
<section>
<title>Attualmente ci sono alcuni bug conosciuti con i pacchetti su Gentoo/SPARC?</title>
<body>
<p>
Una lista dei pacchetti con problemi può essere trovata a
<uri>http://dev.gentoo.org/~weeve/problems.html</uri>
</p>
</body>
</section>
</chapter>
<chapter>
<title>Risorse Addizionali</title>
<section>
<body>
<p>
Alcune informazioni sul progetto Gentoo/SPARC.
</p>
<ul>
<li><uri link="http://sparc.gentoo.org">Gentoo/SPARC Project Page</uri></li>
<li>#gentoo-sparc - Official IRC channel on irc.freenode.net</li>
<li><uri link="http://forums.gentoo.org/viewforum.php?f=27">Gentoo/SPARC Forum</uri>
</li>
<li><mail>sparc@gentoo.org</mail> - Gentoo/SPARC team email address
</li>
</ul>
<p>
Qui ci sono alcuni links ad altre informazioni riguardo Gentoo/SPARC in generale.
</p>
<ul>
<li><uri link="http://www.ultralinux.org">UltraLinux Homepage</uri> - Homepage of the SPARC/Linux port</li>
<li><uri link="http://sunsolve.sun.com">Sunsolve</uri> - Grande Risorse per documentazione hardware Sun.</li>
<li><uri link="http://docs.sun.com"> Documentazione Sun </uri> - Altre informazioni hardware e software
per sistemi SPARC, incluse le instruzioni per il velocizzare OBP</li>
<li><uri link="http://www.obsolyte.com">Obsolyate</uri> - Informazioni sui vecchi sistemi SPARC
e links ad altri grandi siti su SPARC.</li>
<li><uri link="http://040.digital-bless.com/texts/Unofficial_Sun_Blade_100_FAQ.htm">Unofficial Sun Blade 100 FAQ</uri> - Risposte a molte domande sul Sun Blade
100.</li>
<li><uri link="http://docs.sun.com/db/coll/216.2">OBP Reference Guide</uri> - Guida Sun all'Open Boot OBP.</li>
</ul>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: quick-samba-howto.xml --]
[-- Type: text/xml; name="quick-samba-howto.xml", Size: 37146 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/it/quick-samba-howto.xml,v 1.4 2005/01/05 13:51:58 mush Exp $ -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link="quick-samba-howto.xml" lang="it">
<title>Gentoo Samba3/CUPS/Clam AV HOWTO</title>
<author title="Autore">
<mail link="daff at dword dot org">Andreas "daff" Ntaflos</mail>
</author>
<author title="Autore">
<mail link="joshua@sungentoo.homeunix.com">Joshua Preston</mail>
</author>
<author title="Traduzione">
<mail link="sasdo@email.it">Enrico Sasdelli</mail>
</author>
<abstract>
Installazione e configurazione di un Server Samba sotto Gentoo per
la condivisione di file e stampanti con scansione virus.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/1.0 -->
<license/>
<version>1.12</version>
<date>2005-08-29</date>
<chapter>
<title>Introduzione all'Howto</title>
<section>
<title>Scopo</title>
<body>
<p>
Questo Howto è pensato per guidare l'utente a passare da una rete con
macchine client che "parlano" lingue diverse, a una rete con macchine
che parlano la stessa lingua. L'obiettivo finale è quello di ottenere
un ambiente di felice coesistenza fra architetture e tecnologie differenti,
frequenti in ambito produttivo.
</p>
<p>
Le direttive di questo Howto forniranno un ottimo passo avanti in una
pacifica coesistenza fra Windows e, virtualmente, tutte le variazioni
di *nix.
</p>
<p>
Questo Howto originalmente è iniziato come una FAQ. Deve essere inteso
come mezzo per esplorare le funzionalità e le potenzialità dei sistemi
Gentoo, del portage e della flessibilità delle USE flags. Come per altri
progetti, è semplice e veloce trovare ciò che manca nel regno Gentoo:
non c'era nessun Howto rigurdante Samba. Gli utenti Gentoo hanno
più richieste degli altri: alte performance, flessibilitàe personalizzazione.
Questo non implica che questo Howto non sia adatto ad altre distribuzioni,
solo che è pensato per funzionare con versioni di Samba altamente
personalizzabili.
</p>
<p>
Verrà descritto come condividere files e stampanti tra macchine
Windows e *nix. Mostrerà anche l'uso di VFS (Virtual File System),
una feature di Samba, per incorporare una protezione dai virus automatica.
Infine, verrà descritto come montare e manipolare le risorse condivise.
</p>
<p>
Ci sono diversi topic che verranno menzionati, ma son fuori dalla
portata di questo Howto. Verranno comunque notificati quando necessario.
</p>
<p>
Questo documento è basato sull'unione di un'eccellente Howto scritto
nel <uri link="http://forums.gentoo.org">Forum Gentoo</uri> da
Andreas "daff" Ntaflos e le conoscenze di Joshua Preston.
Il link alla discussione(inglese) è riportato qui sotto:
</p>
<ul>
<li>
<uri link="http://forums.gentoo.org/viewtopic.php?t=110931">HOWTO
CUPS+Samba: printing from Windows & Linux</uri>
</li>
</ul>
</body>
</section>
<section>
<title>Prima di usare questa guida</title>
<body>
<p>
Ci sono diverse altre guide per configuarare CUPS e/o Samba, è bene leggere
anche alcune di quelle in modo da colmare le lacune lasciate (intenzionalmente)
da questo Howto. Uno di questi documenti è veramente utile e ben scritto
<uri link="/doc/it/printing-howto.xml">Guida alla Stampa in Gentoo</uri>, contiene
configurazioni di stampanti particolari che non sono discusse qui.
</p>
</body>
</section>
<section>
<title>Breve Descrizione</title>
<body>
<p>
La seguente lista contiene gli argomenti trattati in questo Howto:
</p>
<ul>
<li>Sul server Samba:
<ul>
<li>Installazione e configurazione di ClamAV</li>
<li>Installazione e configurazione di Samba</li>
<li>Installazione e configurazione di CUPS</li>
<li>Aggiungerela stampante a CUPS</li>
<li>Aggiungere i driver PS per i client Windows</li>
</ul>
</li>
<li>Sui client Unix:
<ul>
<li>Installazione e configuazione di CUPS</li>
<li>Configurazione di una stampante di default</li>
<li>Mount di una condivisione Samba con Windows</li>
</ul>
</li>
<li>Sul client Windows:
<ul>
<li>Configurazione della stampante</li>
<li>Accesso alle condivisioni Samba</li>
</ul>
</li>
</ul>
</body>
</section>
<section>
<title>Requisiti</title>
<body>
<p>
Ciò che segue è il necessario per seguire l'Howto:
</p>
<ul>
<li>net-fs/samba</li>
<li>app-antivirus/clamav</li>
<li>net-print/cups</li>
<li>net-print/foomatic</li>
<li>net-print/hpijs (per stampanti HP)</li>
<li>Un Kernel a scelta (preferibilmente 2.4.24+ or 2.6.x)</li>
<li>Una stampante (PS o non-PS, possibilmente non troppo recente)</li>
<li>Una rete locale funzionante composta da più di una macchina.</li>
</ul>
<p>
Il pacchetto principale è net-fs/samba, comunque, sarà necessario un kernel
con il supporto a smbfs abilitato, in modo da poter montare una condivisione
Samba o Windows da un altro computer. Verrà fatto l'emerge di CUPS se non
è già installato. Verrà usato anche app-antivirus/clamav, per adattarlo
a lavorare con Samba. Il Gentoo ebuild di samba supporta tutte le tecnologie
di virus scanning quali Sophos, FProt, Fsav, Trend, Icap, Nai, ...
</p>
</body>
</section>
</chapter>
<chapter>
<title>Alcune note prima di installare Samba</title>
<section>
<title>Le flag USE</title>
<body>
<p>
Prima di emergere qualsiasi cosa, è bene controllare le varie flag USE
possibili per Samba.
</p>
<pre caption="Samba ha le seguenti flag USE:">
kerberos mysql xml acl cups ldap pam readline python oav libclamav
</pre>
<p>
Le flag USE descritte qui sotto definiscono cosa includere o escludere
dall'emerge di Samba in base alla tipologia di rete e alle specifiche
richieste dal server.
</p>
<table>
<tr>
<th><b>Flag USE</b></th>
<th>Descrizione</th>
</tr>
<tr>
<th><b>kerberos</b></th>
<ti>
Include il supporto a Kerberos. Il server avrà bisogno di questo se
si ha intenzione di far parte di un dominio esistente o di Active Directory.
Per maggiori informazioni a riguardo, ci sono le note in fondo al documento.
</ti>
</tr>
<tr>
<th><b>mysql</b></th>
<ti>
Questo permetterà a Samba di usare MySQL per le autenticazioni password.
Immagazzinerà ACL, username, password ed altro in un database anzichè in
un singolo file. Samba necessiterà di autenticazioni password, in modo
da agire come un server di convalidazione password o un Primary Domain
Controller (PDC).
</ti>
</tr>
<tr>
<th><b>xml</b></th>
<ti>
La flag xml provvederà a un database per le password che permetterà a Samba
di immagazzinare i dettagli degli account in file XML, per la stessa ragione
della flag mysql.
</ti>
</tr>
<tr>
<th><b>acl</b></th>
<ti>
Abilita l' Access Control Lists, il supporto ACL in Samba, usa un ext2/ext3
patchato o XFS di SGI in modo da funzionare correttamente e di estendere
accessi più dettagliati a file e directory, molto più che il tipico schema *nix
GID/UID.
</ti>
</tr>
<tr>
<th><b>cups</b></th>
<ti>
Questo abilita il supporto al Common Unix Printing System. Questo
provvede un'interfaccia che consente alle stampanti CUPS locali di
essere condivise agli altri sistemi nella rete.
</ti>
</tr>
<tr>
<th><b>ldap</b></th>
<ti>
Abilita il Lightweight Directory Access Protocol (LDAP). Se Samba si
deve aspettare di lavorare con Active Directory, questa flag deve
essere usata. Questo deve essere usato nel caso che Samba necessiti
di fare o fornire il login ad un Server di Dominio o a un Server Active
Directory. La flag kerberos è necessaria per far funzionare propriamente
questa opzione.
</ti>
</tr>
<tr>
<th><b>pam</b></th>
<ti>
Include il supporto per Pluggable Authentication Modules (PAM). Questo
provvede alla possibilità di autenticare utenti sul Server Samba che è
richiesto se gli utenti devono fare il login sul server. La flag kerberos
è raccomandata per quest'opzione.
</ti>
</tr>
<tr>
<th><b>readline</b></th>
<ti>
Collega Samba a libreadline. E' altamente raccomandata e NON deve essere
disattivata.
</ti>
</tr>
<tr>
<th><b>python</b></th>
<ti>
Python bindings API, provvede un API che permette, a chi programma in Python,
di interfacciarsi con Samba.
</ti>
</tr>
<tr>
<th><b>oav</b></th>
<ti>
Provvede un controllo all'accesso delle condivisioni Samba con FRISK
F-Prot Daemon, Kaspersky AntiVirus, OpenAntiVirus.org ScannerDaemon, Sophos Sweep
(SAVI), Symantec CarrierScan e Trend Micro (VSAPI).
</ti>
</tr>
<tr>
<th><b>libclamav</b></th>
<ti>
Abilita ClamAV come virus scanner al posto del demone clamd.
</ti>
</tr>
</table>
<p>
Un po' di cose che è meglio sapere riguardo le flag USE e le diverse
funzioni che Samba include:
</p>
<ul>
<li>
ACL su ext2/3 è implementato attraverso gli Extended Attributes (EA).
Le opzioni del kernel EA e ACL per ext2 e/o ext3 devono essere abilitate
(dipende dal file system che si sta usando, possono essere selezionate entrambe).
</li>
<li>
Dato che le funzioni di Active Directoru, ACL e PDC sono al di là dell'intenzione di
questo Howto, a questi link si possono trovare delle ulteriori informazioni
a loro riguardo:
<ul>
<li><uri>http://www.bluelightning.org/linux/samba_acl_howto/</uri></li>
<li><uri>http://open-projects.linuxcare.com/research-papers/winbind-08162000.html</uri></li>
<li><uri>http://www.wlug.org.nz/HowtoSamba3AndActiveDirectory</uri></li>
</ul>
</li>
</ul>
</body>
</section>
</chapter>
<chapter>
<title>Installazione del Software sul Server</title>
<section>
<title>Emerge di Samba</title>
<body>
<p>
Prima di tutto, bisogna controllare che tutti gli hostname
della rete siano risolti correttamente con un appropriato
file <path>/etc/hosts</path>.
Spesso <c>cupsaddsmb</c> genera errori se gli hostname non puntano
alle macchine corrette.
</p>
<p>
Probabilmente ora si può fare una valutazione di ciò che si ha bisogno
per usare Samba o per le proprie esigenze. In questo Howto si useranno:
</p>
<ul>
<li>oav</li>
<li>cups</li>
<li>readline</li>
<li>pam</li>
</ul>
<p>
Per ottimizzare le performance, dimensione dei binari e tempi di compilazione,
le flag USE sono specificatamente incluse o escluse.
</p>
<pre caption="Emerge Samba">
# <i>echo "net-fs/samba oav readline cups pam" >> /etc/portage/package.use</i>
# <i>emerge net-fs/samba</i>
</pre>
<note>
Le architetture seguenti hanno bisogno di aggiungere <e>~</e> alle loro
<e>KEYWORDS</e>: x86, ppc, sparc, hppa, ia64 e alpha.
</note>
<p>
Questo emergerà sia Samba che CUPS (se CUPS non è già installato).
</p>
</body>
</section>
<section>
<title>Emerging Clam AV</title>
<body>
<p>
Dato che la flag USE <e>oav</e>, provvede solo ad un'interfaccia che
consente l'accesso alla scansione virus, bisogna emergere il virus scanner.
In questo Howto viene usato Clam AV.
</p>
<pre caption="Emerge ClamAV">
# <i>emerge app-antivirus/clamav</i>
</pre>
</body>
</section>
<section>
<title>Emerge di foomatic</title>
<body>
<pre caption="Emerge foomatic">
# <i>emerge net-print/foomatic</i>
</pre>
</body>
</section>
<section>
<title>Emerging di net-print/hpijs</title>
<body>
<p>
Attenzione, questo serve solo se si ha una stampante HP.
</p>
<pre caption="Emerge hpijs">
# <i>emerge net-print/hpijs</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione del Server</title>
<section>
<title>Configurazione di Samba</title>
<body>
<p>
Il file di configurazione principale di Samba è <path>/etc/samba/smb.conf</path>.
E' diviso in sezioni indicate da [nome_sezione]. I commenti cominciano con
# o ; . Un esempio di <path>smb.conf</path> è riportato qui sotto con commenti
e suggerimenti per essere modificato. Se sono necessari ulteriori dettagli,
si faccia riferimento alle manpage per <path>smb.conf</path>, al file d'esempio
<path>smb.conf.example</path>, al sito web di Samba o a uno dei numerosi
libri su Samba.
</p>
<pre caption="Un Esempio di /etc/samba/smb.conf">
[global]
<comment># Sostituire MYWORKGROUPNAME con il proprio workgroup/domain</comment>
workgroup = <comment>MYWORKGROUPNAME</comment>
<comment># Questo serve giusto a far capire che non è Windows..
# %v stampa la versione di Samba</comment>
server string = Samba Server %v
<comment># Se si usa cups, bisogna inserirlo qui</comment>
printcap name = cups
printing = cups
load printers = yes
<comment># Settare un file di log di dimensioni massime di 50K.</comment>
log file = /var/log/samba/log.%m
max log size = 50
<comment># Alcune opzioni per le interfaccie...</comment>
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
<comment># Questo che segue è il binding del Server Samba alla propria
# rete locale
# Per esempio, se eth0 è la propria scheda di rete:</comment>
interfaces = lo <i>eth0</i>
bind interfaces only = yes
<comment># Ora si specifica a chi è permesso accedere alla rete,
# bisogna essere cauti in quanto non si usano password...</comment>
hosts allow = 127.0.0.1 <i>192.168.1.0/24</i>
hosts deny = 0.0.0.0/0
<comment># Altre opzioni sono: USER, DOMAIN, ADS e SERVER
# Quella di default è USER.</comment>
security = share
<comment># Nessuna password, quindi si usano account Guest</comment>
guest account = samba
guest ok = yes
<comment># Ora viene implementato il virus scanner.
# NOTA: ponendo questo nella sezione [Global], si abilita
# lo scan di tutte le condivisioni, si può spostare quanto segue
# in una specifica sezione in modo da attivare lo scan solo su di essa.</comment>
<comment># Per Samba 3.x. Questo abilita ClamAV </comment>
vfs object = vscan-clamav
vscan-clamav: config-file = /etc/samba/vscan-clamav.conf
<comment># Ora vengono configurati i driver per la stampante</comment>
[print$]
comment = Printer Drivers
path = /etc/samba/printer <comment># questo path mantiene la struttura dei driver</comment>
guest ok = yes
browseable = yes
read only = yes
<comment># Se si modifica quanto segue con "NOME_UTENTE,root" si abilita
# l'utente specificato come amministratore delle stampanti.</comment>
write list = <i>root</i>
<comment># Quanto segue imposta la stampante da condividere,
# il nome è completamente arbitrario.</comment>
[NOME_STAMPANTE]
comment = DESCRIZIONE DELLA STAMPANTE
printable = yes
path = /var/spool/samba
public = yes
guest ok = yes
<comment># Anche qui si può modificare con "NOME_UTENTE,root" per abilitare
# l'utente ad amministrare la stampante.</comment>
printer admin = <i>root</i>
<comment># Ora si configura la condivisione delle stampanti.
# Può essere: browseable, printable, public.</comment>
[printers]
comment = All Printers
browseable = no
writable = no
printable = yes
public = yes
guest ok = yes
path = /var/spool/samba
<comment># Anche qui si può modificare con "NOME_UTENTE,root" per abilitare
# l'utente ad amministrare la stampante.</comment>
printer admin = <i>root</i>
<comment># Ora si crea una nuoca condivisione che può essere letta/scritta da
# chiunque. E' simile ad una condivisione pubblica dove chiunque può fare quello che vuole.</comment>
[public]
comment = Public Files
browseable = yes
public = yes
create mode = 0766
guest ok = yes
path = /home/samba/public
</pre>
<warn>
Se si vuole usare un account guest di Samba per fare qualsiasi cosa
riguardo la stampa da client Windows, non bisogna settare <c>guest only = yes</c>
nella sezione [global]. A volte, quando ci si collega da client Windows,
sembra che gli account Guest causino problemi mentre
<c>cupsaddsmb</c> è in funzione. Più avanti si parla di <c>cupsaddsmb</c>
e dei problemi che ci possono essere. Conviene pertanto usare un
account dedicato alla stampa, come <c>printeruser</c> o <c>printer</c>.
Non fa danni e certamente protegge da molti problemi.
</warn>
<warn>
Abilitare ClamAV a controllare i file ad ogni accesso nella sezione
<c>[global]</c>, causerà un forte calo delle performance sul Server Samba.
</warn>
<p>
Ora verranno create le directory richieste per la configurazione minima
di Samba per condividere le stampanti attraverso la rete.
</p>
<pre caption="Creare le directory">
# <i>mkdir /etc/samba/printer</i>
# <i>mkdir /var/spool/samba</i>
# <i>mkdir /home/samba/public</i>
</pre>
<p>
E' richiesto almeno un utente Samba per installare i driver delle
stampanti e per permettere agli utenti di connettersi alle stesse.
Gli utenti devono esistere nel file <path>/etc/passwd</path>.
</p>
<pre caption="Creazione degli Utenti">
# <i>smbpasswd -a root</i>
<comment>Se un altro utente è stato impostato come Amministratore delle stampanti:</comment>
# <i>smbpasswd -a nome_utente</i>
</pre>
<p>
Le password Samba devono essere diverse dalle password in <path>/etc/passwd</path>
</p>
<p>
Si renderà necessario poi aggiornare <path>/etc/nsswitch.conf</path> così che i
sistemi Windows possano essere trovati semplicemente usando NetBIOS:
</p>
<pre caption="Modificare /etc/nsswitch.conf">
# <i>nano -w /etc/nsswitch.conf</i>
<comment>(Modificare la riga hosts:)</comment>
hosts: files dns <i>wins</i>
</pre>
</body>
</section>
<section>
<title>Configurazione di Clam AV</title>
<body>
<p>
Il file di configurazione specifificato in <path>smb.conf</path>
è <path>/etc/samba/vscan-clamav.conf</path>. Mentre queste opzioni sono
settate come default, il file delle azioni sui file infetti deve essere cambiato.
</p>
<pre caption="/etc/samba/vscan-clamav.conf">
[samba-vscan]
<comment>; configurazione a runtime per vscan-samba con
; clamd
; tutte le opzioni sono impostate con i valori di default</comment>
<comment>; Non controllare i file maggiori di X byte. Se X è 0 (default),
; questa opzione è disabilitata e tutti i file vengono controllati.</comment>
max file size = 0
<comment>; Fai un log per ogni accesso a file (yes/no). Se impostato a "yes",
; ogni accesso viene loggato. Se impostato a "no", solo gli accessi a file
; infetti vengono loggati.</comment>
verbose file logging = no
<comment>; se impostato "yes"(default) ogni file viene controllato quando aperto.</comment>
scan on open = yes
<comment>; se impostato "yes"(default) ogni file viene controllato quando chiuso.</comment>
scan on close = yes
<comment>; Se la comunicazione con clamd fallisce, negare l'accesso ai file?
; (default: yes)</comment>
deny access on error = yes
<comment>; Se il demone fallisce con un errore meno rilevante (corruzione del file..)
; l'accesso al file deve essere negato?
; (default: yes)</comment>
deny access on minor error = yes
<comment>; Invio di un messaggio tramite Windows Messenger se viene
; trovato un virus?
; (default: yes)</comment>
send warning message = yes
<comment>; Cosa si vuole fare con un file infetto:
; quarantine: si tenta di spostare il file in una directory di quarantena.
; se impossibile, si cancella il file.
; delete: cancellare il file infetto
; nothing: non fare nulla</comment>
infected file action = <comment>delete</comment>
<comment>; Dove mettere i file infetti? E' bene cambiare la directory secondo
; le proprie esigenze. Notare che deve essere sullo stesso dispositivo della
; condivisione.</comment>
quarantine directory = /tmp
<comment>; Prefisso per i file in quarantena</comment>
quarantine prefix = vir-
<comment>; Se Windows tenta di aprire un file più volte in un tempo veramente
; breve, samba-vscan usa un meccanismo basato sull'ultimo file aperto per
; evitare multiple scansioni sul medesimo file. Questo parametro
; specifica il massimo numero di elementi da ricordare nella lista degli
; ultimi file aperti (default: 100).</comment>
<comment>; un'operazione su un file è invalida dopo N secondi. Dove N
; è il numero di secondi di "vita" dell'ultimo file aperto.
; (Default: 5)</comment>
lru file entry lifetime = 5
<comment>; Nome socket per clamd (default: /var/run/clamd)</comment>
clamd socket name = /tmp/clamd
<comment>; Porta su cui il demone di scan rimarrà in ascolto:</comment>
oav port = 8127
</pre>
<p>
In genere è una buona idea far partire il virus scanner immediatamente.
Bisogna quindi aggiungerlo al runlevel <e>default</e> ed eseguire subito
il servizio <c>clamd</c>. Il servizio ha due processi: freshclam che preleva
le definizioni dei virus da un database aggiornato, mentre clamd è il vero
demone anti-virus. Per prima cosa è bene impostare i percorsi dei file di log.
</p>
<pre caption="Controllare le locazioni dei logfile">
# <i>vim /etc/clamd.conf</i>
<comment>(Controllare la riga: "LogFile /var/log/clamd.log")</comment>
# <i>vim /etc/freshclam.conf</i>
<comment>(Controllare la riga: "UpdateLogFile /var/log/freshclam.log")</comment>
# <i>vim /etc/conf.d/clamd</i>
<comment>(Impostare "START_CLAMD=yes" e "START_FRESHCLAM=yes")</comment>
</pre>
<p>
Ora si lancia il virus scanner.
</p>
<pre caption="Aggiungere clamd all'avvio ed eseguirlo:">
# <i>rc-update add clamd default</i>
# <i>/etc/init.d/clamd start</i>
</pre>
</body>
</section>
<section>
<title>Configurazione di CUPS</title>
<body>
<p>
Questo è un po' più complicato. Il file principale di configurazione di
CUPS è <path>/etc/cups/cupsd.conf</path>. La sua struttura è simile
al file di Apache <path>httpd.conf</path>. Qui di seguito ci sono le
direttive che bisogna cambiare o aggiungere al file originale:
</p>
<pre caption="/etc/cups/cupsd.conf">
ServerName <i>PrintServer</i> <comment># il proprio nome del Server delle Stampanti</comment>
ServerAdmin <i>root@PrintServer</i> <comment># l'utente da contattare per l'amministrazione</comment>
AccessLog /var/log/cups/access_log <comment># probabilmente non necessita di cambiamenti</comment>
ErrorLog /var/log/cups/error_log <comment># nemmeno questo.</comment>
LogLevel debug <comment># solo durante installazione e test. Poi si potrà
# cambiare in 'info'</comment>
MaxClients 100 <comment># numero dei client (attenzione a non esagerare)</comment>
BrowseAddress @IF(<i>eth0</i>) <comment># Questo va cambiato con la propria interfaccia di rete</comment>
<Location />
Order Deny,Allow
Deny From All
Allow From <i>192.168.1.*</i> <comment># indirizzo della rete, 192.168.1.* abiliterà
# l'accesso da qualsiasi host alla rete 192.168.1.0.
# Questo bisogna cambiarlo in base al proprio indirizzo di rete.</comment>
</Location>
<Location /admin>
AuthType Basic
AuthClass System
Allow From <i>192.168.1.*</i> <comment># come sopra, ma per amministrare il sistema.</comment>
Order Deny,Allow
Deny From All
</Location>
</pre>
<p>
E' bene modificare <path>/etc/cups/mime.convs</path> decommentando alcune linee.
I cambiamenti a <path>mime.convs</path> e a <path>mime.types</path> sono necessari
per fare sì che CUPS stampi dei documenti di Microsoft Office.
</p>
<pre caption="/etc/cups/mime.convs">
<comment>(La linea seguente è reperibile verso la fine del file. Va decommentata.)</comment>
application/octet-stream application/vnd.cups-raw 0
</pre>
<p>
Ora si può modificare <path>/etc/cups/mime.types</path> decommentando alcune linee.
</p>
<pre caption="/etc/cups/mime.types">
<comment>(La linea seguente è reperibile verso la fine del file. Va decommentata.)</comment>
application/octet-stream
</pre>
<p>
CUPS deve partire al boot ed essere avviato manualmente subito.
</p>
<pre caption="Impostare il servizio CUPS:" >
<comment>(CUPS al boot)</comment>
# <i>rc-update add cupsd default</i>
<comment>(Per avviare o riavviare CUPS)</comment>
# <i>/etc/init.d/cupsd restart</i>
</pre>
</body>
</section>
<section>
<title>Installare una stampante con e per CUPS</title>
<body>
<p>
Primo, al link <uri link="http://linuxprinting.org">LinuxPrinting.Org</uri> è
possibile trovare e scaricare il corretto file PPD per la propria stampante e CUPS.
Per fare ciò, bisogna cliccare il link "Printer Listings" sulla sinistra,
selezionare la marca ed il modello della stampante quindi cliccare "Show".
Nella pagina che si aprirà bisogna cliccare sul link "reccomended driver" dopo
aver letto le varie note ed informazioni. Infine, nella pagina successiva basta
scaricare il file PPD dopo aver letto le note e l'introduzione. Bisogna nuovamente
selezionare marca e modello della stampante. Può risultare utile leggere
<uri link="http://www.linuxprinting.org/cups-doc.html">CUPS quickstart guide</uri> per ulteriori informazioni.
</p>
<p>
Ora, bisogna copiare il file PPD scaricato in <path>/usr/share/cups/model</path>.
Ed ora si può finalmente installare la stampante.
Questo può essere fatto tramite l'interfaccia web di CUPS o via linea di comando.
L'interfaccia web può essere trovata a <path>http://PrintServer:631</path> una volta
che CUPS è avviato.
</p>
<pre caption="Installazione della stampante via linea di comando">
# <i>lpadmin -p NOME_STAMPANTE -E -v usb:/dev/ultp0 -m PROPRIO_FILE.ppd</i>
</pre>
<p>
Attenzione ad avere l'argomento <c>-p</c> NOME_STAMPANTE uguale a quello
impostato durante la configurazione di Samba. Attenzione anche a mettere
i corretti <c>usb:/dev/usb/DEVICE</c> o <c>parallel:/dev/DEVICE</c> o qualsiasi
altro device usato per la stampante.
</p>
<p>
Ora è possibile accedere alla stampante tramite l'interfaccia web e
stampare una pagina di prova.
</p>
</body>
</section>
<section>
<title>Installare i driver delle stampanti su Windows</title>
<body>
<p>
Ora che le stampanti sono funzionanti, è tempo di installare i driver
per i client Windows. Samba 2.2 introduce questa funzionalità.
Visualizzando il Print Server da Risorse di Rete, cliccare con il
tasto destro del mouse sulla stampante condivisa e selezionare "connetti".
A questo punto verranno scaricati automaticamente i driver sui client connessi
evitando la seccatura di installarli manualmente.
</p>
<p>
Ci sono due set di driver per le stampanti PS. Il primo, Driver Adobe PS,
può essere scaricato da: <uri link="http://www.adobe.com/support/downloads/main.html">Adobe</uri> (PostScript Printer Driver).
Il secondo set contiene i driver CUPS PS, scaricabili dalla <uri link="http://www.cups.org/software.php">Homepage di CUPS</uri>
selezionando "CUPS Driver for Windows" dal menu a tendina.
Non ci dovrebbero essere differenze sostanziali di funzionamento tra i due, ma i
driver Adobe PS necessitano di essere estratti su un sistema Windows
dato che, di fatto, sono in un file binario leggibile da Windows.
Infine la procedura di ricerca e copia dei file corretti è un po'
più seccante.
I driver CUPS dovrebbero avere qualche funzionalità in più rispetto agli
Adobe.
</p>
<p>
Qui verranno usati i driver CUPS per Windows. Il file scaricato
si chiama <path>cups-samba-5.0rc2.tar.gz</path>. Bisogna estrarne i file in
una directory.
</p>
<pre caption="Estrazione dei file e installazione">
# <i>tar -xzf cups-samba-5.0rc2.tar.gz</i>
# <i>cd cups-samba-5.0rc2</i>
<comment>(Usare questo script solo se CUPS si trova in /usr/share/cups)</comment>
# <i>./cups-samba.install</i>
</pre>
<p>
<path>cups-samba.ss</path> è un archivio TAR contente 3 file:
<path>cups5.hlp</path>, <path>cupsdrvr5.dll</path> e
<path>cupsui5.dll</path>. Questi sono i driver.
</p>
<warn>
Lo script <c>cups-samba.install</c> potrebbe non funzionare per tutti i
sistemi *nix (per esempio FreeBSD) perchè quasi tutto ciò che non è
parte del sistema base è installato da qualche parte con il prefisso
<path>/usr/local/</path>. Questo non dovrebbe essere il caso più
frequente nelle installazioni GNU/Linux.
Comunque, se si ha CUPS installato da qualche parte che non sia
<path>/usr/share/cups/</path>, si può seguire l'esempio qui di seguito.
</warn>
<p>
Si suppone che l'installazione di CUPS sia in
<path>/usr/local/share/cups/</path>, e vi si vogliono installare i driver.
E' sufficiente seguire i seguenti passi:
</p>
<pre caption="Installazione manuale dei driver">
# <i>cd /path/you/extracted/the/CUPS-driver/tarball/into</i>
# <i>tar -xf cups-samba.ss</i>
<comment>(questo estrae i file in usr/share/cups/drivers NELLA DIRECTORY CORRENTE)</comment>
# <i>cd usr/share/cups/drivers</i>
<comment>(non togliere / !)</comment>
# <i>cp cups* /usr/local/share/cups/drivers</i>
</pre>
<p>
Ora si può usare lo script <c>cupsaddsmb</c> fornito dalla distribuzione
di CUPS. La man page di questo script è un'utile lettura.
</p>
<pre caption="Eseguire cupsaddsmb">
# <i>cupsaddsmb -H PrintServer -U root -h PrintServer -v NOME_STAMPANTE</i>
<comment>(Al posto di NOME_STAMPANTE si può inserire il parametro "-a",
che esporterà tutte le stampanti conosciute)</comment>
# <i>cupsaddsmb -H PrintServer -U root -h PrintServer -a</i>
</pre>
<warn>
L'esecuzione di questo comando spesso genera alcuni problemi.
E' possibile richiedere aiuto <uri link="http://forums.gentoo.org/viewtopic.php?t=110931">in questo
thread</uri>.
</warn>
<p>
Alcuni errori comuni che possono avvenire:
</p>
<ul>
<li>
L'hostname dato come parametro per <c>-h</c> e <c>-H</c>
(<c>PrintServer</c>) spesso non risolve correttamente il nome
e non identifica il Print Server per l'interazione fra CUPS e Samba.
Se si ha un errore simile a: <b>Warning: No PPD file for printer "NOME_STAMPANTE" -
skipping!</b>, la prima cosa che si può provare è sostituire
<c>PrintServer</c> con <c>localhost</c> e riprovare.
</li>
<li>
Il comando fallisce con un <b>NT_STATUS_UNSUCCESSFUL</b>. Questo messaggio
d'errore è abbastanza comune e può creare diversi problemi. Un tentativo
che si può fare è settare temporaneamente <c>security = user</c>
nel proprio <path>smb.conf</path>.
Una volta terminata l'installazione si può risettare a share o a quello che era prima.
</li>
</ul>
<p>
Tutto ciò installa il corretto albero delle directory in
<path>/etc/samba/printer</path>. Questo dovrebbe essere
<path>/etc/samba/printer/W32X86/2/</path>. Dovrebbe contenere
i 3 file dei driver e il file PPD rinominato come NOME_STAMPANTE.ppd
(il nome con cui si ha installato la stampante).
</p>
<p>
Se non ci sono stati errori o altre complicazioni, i driver delle stampanti
sono stati installati.
</p>
</body>
</section>
<section>
<title>Terminare la Configurazione</title>
<body>
<p>
Infine, configurazione delle directory.
</p>
<pre caption="Ultimi cambiamenti necessari:">
# <i>mkdir /home/samba</i>
# <i>mkdir /home/samba/public</i>
# <i>chmod 755 /home/samba</i>
# <i>chmod 755 /home/samba/public</i>
</pre>
</body>
</section>
<section>
<title>Provare la configurazione di Samba</title>
<body>
<p>
Per controllare che il file di configurazione sia formattato correttamente
e che tutte le sue opzioni hanno la giusta sintassi, si usi il comando
<c>testparm</c>.
</p>
<pre caption="Eseguire testparm">
<comment>(Di default testparm controlla /etc/samba/smb.conf)</comment>
# <i>/usr/bin/testparm</i>
Load smb config files from /etc/samba/smb.conf
Processing section "[printers]"
Global parameter guest account found in service section!
Processing section "[public]"
Global parameter guest account found in service section!
Loaded services file OK.
Server role: ROLE_STANDALONE
Press enter to see a dump of your service definitions
...
...
</pre>
</body>
</section>
<section>
<title>Avviare il servizio Samba</title>
<body>
<p>
Aggiunta di samba al runlevel di default ed immediata esecuzione.
</p>
<pre caption="Aggiunta di Samba all'avvio e prima esecuzione">
# <i>rc-update add samba default</i>
# <i>/etc/init.d/samba start</i>
</pre>
</body>
</section>
<section>
<title>Controllo dei propri servizi</title>
<body>
<p>
A questo punto è buona cosa controllre i propri log e controllare
le condivisioni impostate con Samba: <c>smbclient</c>.
</p>
<pre caption="Controllo delle risorse condivise con Samba">
# <i>smbclient -L localhost</i>
Password:
<comment>(Comparirà una lunga lista di servizi)</comment>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione dei Client</title>
<section>
<title>Configurazione delle stampanti con un client *nix.</title>
<body>
<p>
Indipendentemente dalle variazioni o dalla distribuzione, l'unica cosa
di cui si ha bisogno è CUPS che va quindi installato.
</p>
<pre caption="Configurazione di un sistema Gentoo">
# <i>emerge cups</i>
# <i>nano -w /etc/cups/client.conf</i>
ServerName <i>PrintServer</i> <comment># il nome del server</comment>
</pre>
<p>
Questo dovrebbe bastare. Non serve nient'altro.
</p>
<p>
Se si ha una sola stampante, quella sarà quella di default. Se invece
il server dovrà gestire più stampanti, l'amministratore dovrà definirne una
di default sul server. Per impostarne una propria stampante di default differente
da quella sul server, bisogna usare il comando <c>lpoptions</c>.
</p>
<pre caption="Impostare la propria stampante di default">
<comment>(Lista delle stampanti disponibili)</comment>
# <i>lpstat -a</i>
<comment>(Esempio di output)</comment>
HPDeskJet930C accepting requests since Jan 01 00:00
laser accepting requests since Jan 01 00:00
<comment>(Define HPDeskJet950C come stampante di default)</comment>
# <i>lpoptions -d HPDeskJet930C</i>
</pre>
<pre caption="Printing in *nix">
<comment>(Specificare la stampante da usare)</comment>
# <i>lp -d HPDeskJet930C foo.txt</i>
<comment>(Usare la stampante di default)</comment>
# <i>lp foo.ps </i>
</pre>
<p>
Per gestire le stampanti e i loro lavori nella coda di stampa, basta digitare
<c>http://printserver:631</c> nel browser di un client, e si accederà ad una
comoda interfaccia web. Bisogna cambiare <c>printserver</c> con il nome della
<e>macchina</e> su cui gira il server di stampa, non il nome dato al server cups
se si hanno usati due nomi differenti.
</p>
</body>
</section>
<section>
<title>Montare una condivisione Samba o Windows in GNU/Linux</title>
<body>
<p>
Ora bisogna configurare il kernel per supportare smbfs. Si assume di avere almeno
un kernel compilato per controllare che ci siano tutte le opzioni necessarie.
Per semplicità si imposteranno a "modulo" le varie voci.
</p>
<pre caption="Opzioni del kernel (nel file .config)" >
CONFIG_SMB_FS=m
CONFIG_SMB_UNIX=y
</pre>
<p>
Quindi eseguire l'installazione dei moduli per installarli.
Eseguire il comando seguente per caricarli:
</p>
<pre caption="Caricare i moduli del kernel">
# <i>modprobe smbfs</i>
</pre>
<p>
Una volta che il modulo è caricato, è possibile montare una risorsa condivisa
di Samba o Windows. Per questo si usa <c>mount</c> come segue:
</p>
<pre caption="Montare una condivisione Samba o Windows">
<comment>(La sintassi per montare una risorsa condivisa è:
mount -t smbfs [-o username=xxx,password=xxx] //server/share /mnt/point
Se non si stanno usando password, non è necessario inserire il parametro)</comment>
# <i>mount -t smbfs //PrintServer/public /mnt/public</i>
<comment>(Se la password è richiesta)</comment>
# <i>mount -t smbfs -o username=USERNAME,password=PASSWORD //PrintServer/public /mnt/public</i>
</pre>
<p>
Una volta montato vi si potrà accedere come se fosse una risorsa locale.
</p>
</body>
</section>
<section>
<title>Configurazione delle stampanti remote su client Windows NT/2000/XP</title>
<body>
<p>
E' giusto un punta-e-clicca. Visualizzare <path>\\PrintServer</path> da Risorse di Rete,
cliccare con il tasto destro del mouse sulla stampante e selezionare "connetti".
Questo scaricherà automaticamente i driver su Windows ed ora ogni applicazione
(come Word o Acrobat) potrà vedere le stampanti condivise ed utilizzarle.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Note Finali</title>
<section>
<body>
<p>
Bene, ora tutto è ultimato con un sistema di stampanti remote e condivise
funzionante ed esente da virus per sistemi sia *nix che Windows!
</p>
</body>
</section>
</chapter>
<chapter>
<title>Link e Risorse</title>
<section>
<title>Link</title>
<body>
<p>
Alcuni links che possono essere d'aiuto nelle impostazioni, configurazioni
e nei problemi riguardanti l'installazione:
</p>
<ul>
<li><uri link="http://www.cups.org/">CUPS Homepage</uri></li>
<li><uri link="http://www.samba.org/">Samba Homepage</uri></li>
<li><uri link="http://linuxprinting.org/">LinuxPrinting dot Org</uri></li>
<li>
<uri link="http://www.linuxprinting.org/kpfeifle/SambaPrintHOWTO/">Kurt
Pfeifle's Samba Print HOWTO</uri> (
Questo Howto contiene davvero <e>TUTTO</e> ciò che è scritto qui, più molte informazioni
riguardo a CUPS e Samba e in genere alle reti di stampanti. Veramente molto interessante
e dettagliato)
</li>
<li><uri link="http://www.freebsddiary.org/cups.php">FreeBSD Diary's CUPS Topic</uri></li>
</ul>
</body>
</section>
<section>
<title>Risoluzione dei Problemi</title>
<body>
<p>
<uri link="http://www.linuxprinting.org/kpfeifle/SambaPrintHOWTO/Samba-HOWTO-Collection-3.0-PrintingChapter-11th-draft.html#37">Questa Pagina</uri>
è presa dal manuale "Printing Support in Samba 3.0" di Kurt Pfeifle.
Contiene molti trucchi e segreti di Samba. Prima di chiedere, è bene
darci un'occhiata, magari la soluzione è proprio lì.
</p>
</body>
</section>
</chapter>
</guide>
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] aggiornamenti
@ 2005-07-19 16:36 micron
2005-07-20 22:35 ` Stefano Rossi
0 siblings, 1 reply; 39+ messages in thread
From: micron @ 2005-07-19 16:36 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 365 bytes --]
Scusate il ritardo ma sono stato parecchio preso dall'università e dal
lavoro...
file: diskless howto
versione: 1.13
revisione: 1.17
file: macos-guide
versione: 1.6
revisione: 1.8
ciauz
micron
--
|§ micron<- ICQ #118796665
|§ GPG Key:
|§ ~ Keyserver: pgp.mit.edu
|§ ~ KeyID: 6D632BED
~ "Progress is merely a realisation of utopias" ~
[-- Attachment #2: diskless-howto.xml --]
[-- Type: text/xml, Size: 51663 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/diskless-howto.xml,v 1.17 2005/06/01 15:43:47 neysx Exp $ -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link="/doc/it/diskless-howto.xml" lang="it">
<title>Postazioni diskless usando Gentoo Linux</title>
<author title="Ricerca">
<mail link="ma53@drexel.edu">Michael Andrews</mail>
</author>
<author title="Redazione">
<mail link="unsolo@sysrq.no">Kristian Jerpetjoen</mail>
</author>
<author title="Revisione">
<mail link="swift@gentoo.org">Sven Vermeulen</mail>
</author>
<author title="Revisione">
<mail link="neysx@gentoo.org">Xavier Neys</mail>
</author>
<author title="Traduzione">
<mail link="micron@madlab.it">Flavio Castelli</mail>
</author>
<abstract>
Questo HOWTO illustra la realizzazione di una rete diskless tramite l'uso di Gentoo Linux
</abstract>
<license/>
<version>1.13</version>
<date>2005-06-01</date>
<chapter>
<title>Introduzione</title>
<section>
<title>Prefazione</title>
<body>
<p>
Questo HOWTO intende illustrare la creazione di una rete formata da postazioni <e>diskless</e>,
basate su Gentoo Linux. Nella rete sono presenti svariate guide che si occupano di questo argomento, purtroppo la maggior parte risultano complicate. Invece questa guida intende essere il più semplice possibile, in modo da aiutare anche le persone che sono alle prime armi con Linux.
</p>
</body>
</section>
<section>
<title>Cosa è un PC diskless?</title>
<body>
<p>
Una postazione diskless è un comune computer sprovvisto delle consuete periferiche di avvio quali: dischi fissi, lettori
floppy e lettori di cdrom. La postazione diskless esegue la procedura d'avvio tramite la scheda di rete, pertanto è richiesta la presenza di un server che le fornisca lo spazio fisico su cui salvare i propri dati. D'ora in avanti ci riferiremo al server con il termine di <e>master</e>, mentre con il termine <e>slave</e> si fa riferimento alla postazione diskless. Come detto in precedenza lo slave esegue la procedura d'avvio tramite la propria scheda di rete, per poterlo fare è necessario avere una scheda di rete che supporti i protocolli PXE o Etherboot. Per sapere se la propria scheda di rete sia tra quelle compatibili consultate la lista presente sul sito <uri link="http://www.etherboot.org">Etherboot.org</uri>. La maggior parte delle schede di rete (comprese quelle
integrate sulle schede madri) di recente produzione supporta PXE.
</p>
</body>
</section>
<section>
<title>Prima di iniziare</title>
<body>
<p>
Sul PC master dovrebbe essere installato Gentoo Linux e dovrebbe esserci abbastanza spazio libero per contenere
anche l'intero file system degli slave. Inoltre è necessario controllare d'avere due schede di rete sul pc master, una collegata ad internet e l'altra collegata alla rete locale.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione del master e degli slave</title>
<section>
<title>Cosa è il kernel</title>
<body>
<note>
Se si desidera utilizzare le proprie postazioni all'interno di un cluster openMosix è necessario controllare di utilizzare un
kernel con applicate le patch necessarie ad openMosix. L'ebuild relativo si può trovare all'interno del portage, nel
percorso <path>sys-kernel/openmosix-sources</path>. Per compilare un kernel funzionante con openMosix è consigliata la lettura dell'<uri link="openmosix-howto.xml">openMosix HOWTO</uri>
</note>
<p>
Il kernel è il cuore del sistema operativo, è un programma che permette a tutti i programmi presenti di interfacciarsi
con l'hardware della propria macchina. Quando un computer è avviato il BIOS legge delle istruzioni presenti in un
settore riservato del disco fisso; queste istruzioni non sono altro che il boot loader, il quale si preoccupa di caricare
il kernel. In seguito sarà il kernel a gestire tutti i processi in esecuzione.
</p>
<p>
Per ulteriori informazioni sul kernel e su come configurarlo è consigliata la lettura di <uri link="http://www.tldp.org/HOWTO/Kernel-HOWTO.html">
questa</uri> guida.
</p>
</body>
</section>
<section>
<title>Configurazione del kernel della postazione master</title>
<body>
<p>
Il kernel della postazione master non ha limiti di dimensione, sono solo richieste alcune opzioni.
Per attivarle occorre entrare nel menu di configurazione del kernel tramite i seguenti comandi:
</p>
<pre caption="Configurare il kernel del master">
# <i>cd /usr/src/linux</i>
# <i>make menuconfig</i>
</pre>
<p>
A questo punto si presenta un'interfaccia grafica: si tratta di un'alternativa più
rapida rispetto alla modifica a mano del file <path>/usr/src/linux/.config</path>. Se il proprio attuale kernel è funzionante è consigliabile farne una copia da tenere al sicuro. Per farlo digitare, all'uscita dell'interfaccia grafica, i
seguenti comandi:
</p>
<pre caption="Fare una copia della configurazione del kernel del master">
# <i>cp .config .config_funzionante</i>
</pre>
<p>
Entrare nei seguenti sotto-menu e controllate che le opzioni elencate siano impostate come compilate staticamente (e <e>NON</e> come dei moduli). Le opzioni elencate di seguito sono relative ad un kernel della serie 2.6.10. Nel caso
si desideri utilizzare un kernel differente il listato seguente potrebbe variare leggermente. Accertarsi d'avere selezionato le voci indicate di seguito:
</p>
<pre caption="Opzioni per il kernel del master">
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Device Drivers --->
Networking options --->
<*> Packet socket
<*> Unix domain sockets
[*] TCP/IP networking
[*] IP: multicasting
[ ] Network packet filtering (replaces ipchains)
File systems --->
Network File Systems --->
<*> NFS server support
[*] Provide NFSv3 server support
<comment>
Se si intende accedere a internet tramite il master e avere un firewall sicuro è consigliabile attivare il supporto a iptables.
</comment>
[*] Network packet filtering (replaces ipchains)
IP: Netfilter Configuration --->
<*> Connection tracking (required for masq/NAT)
<*> IP tables support (required for filtering/masq/NAT)
</pre>
<p>
Se si desidera utilizzare il packet filtering è possibile compilare le sue sotto-opzioni modularmente.
Per configurare correttamente il proprio firewall è consigliata la lettura del capitolo numero 12 della <uri
link="http://www.gentoo.org/doc/it/gentoo-security.xml#doc_chap12">Guida Gentoo alla sicurezza</uri>.
</p>
<note>
Queste opzioni del kernel sono da intendersi come un'aggiunta alle vostre attuali opzioni, esse non intendono
rimpiazzare completamente la propria configurazione del kernel.
</note>
<p>
Dopo aver riconfigurato il kernel del master è necessario procedere alla sua compilazione:
</p>
<pre caption="Ricompilare il kernel del master ed i suoi moduli">
# <i>make && make modules_install</i>
<comment>(Accertarsi che /boot sia montata prima di copiarvi i file)</comment>
# <i>cp arch/i386/boot/bzImage /boot/bzImage-master</i>
# <i>cp System.map /boot/System.map-master</i>
</pre>
<p>
Infine aggiungere una nuova voce per il nuovo kernel all'interno di
<path>lilo.conf</path> o di <path>grub.conf</path>, a seconda del proprio bootloader.
Ora che il nuovo file bzImage è stato copiato nella directory <path>/boot</path> è possibile riavviare il sistema per attivare le nuove modifiche.
</p>
</body>
</section>
<section>
<title>Configurare il kernel degli slave</title>
<body>
<p>
E' consigliabile compilare il kernel degli slave senza moduli, dato che la presenza dei moduli renderebbe la procedura
d'avvio remoto difficoltosa. Inoltre il kernel degli slave deve essere il più piccolo e compatto possibile, in modo da
essere efficiente al momento dell'avvio. Si compili il kernel degli slave nello stesso percorso in cui abbiamo
compilato quello del master.
</p>
<p>
Per evitare confusione e inutili sprechi di tempo è consigliabile fare una copia della configurazione del kernel del
master. Digitare semplicemente:
</p>
<pre caption="Fare un bakup della configurazione del kernel del master">
# <i>cp /usr/src/linux/.config /usr/src/linux/.config_master</i>
</pre>
<p>
Si procede ora alla configurazione del kernel degli slave nello stesso modo con cui è stato configurato quello del master.
Se si desidera lavorare su una configurazione "pulita" (ovvero senza avere le opzioni selezionate precedentemente per
il master) è possibile recuperare il file <path>/usr/src/linux/.config</path> iniziale digitando:
</p>
<pre caption="Ripristinare il .config di default">
# <i>cd /usr/src/linux</i>
# <i>cp .config_master .config</i>
</pre>
<p>
Ora è possibile lanciare nuovamente l'interfaccia grafica di configurazione del kernel digitando:
</p>
<pre caption="Configurare il kernel dello slave">
# <i>cd /usr/src/linux</i>
# <i>make menuconfig</i>
</pre>
<p>
Accertarsi d'avere selezionato le seguenti voci come compilate staticamente e <e>NON</e> come moduli:
</p>
<pre caption="Opzioni obbligatorie del kernel dello slave">
Code maturity level options --->
[*] Prompt for development and/or incomplete code/drivers
Device Drivers --->
[*] Networking support
Networking options --->
<*> Packet socket
<*> Unix domain sockets
[*] TCP/IP networking
[*] IP: multicasting
[*] IP: kernel level autoconfiguration
[*] IP: DHCP support (NEW)
File systems --->
Network File Systems --->
<*> file system support
[*] Provide NFSv3 client support
[*] Root file system on NFS
</pre>
<note>
Un'alternativa all'uso di un server dhcp è la creazione di un server BOOTP.
</note>
<impo>
E' importante che i driver della scheda di rete siano compilati staticamente (e non come un modulo) all'interno
del kernel degli slave. Ad ogni modo l'uso dei moduli generalmente non dovrebbe rappresentare un problema.
</impo>
<p>
Ora non resta altro che compilare il kernel dello slave. In questa fase è opportuno prestare molta attenzione controllando
che non siano sovrascritti e/o eliminati i moduli compilati precedentemente per il master (sempre se presenti).
</p>
<pre caption="Compilare il kernel dello slave">
# <i>cd /usr/src/linux</i>
# <i>make</i>
</pre>
<p>
Ora creare una directory sul master per contenere i file si sistema richiesti dallo slave. E' possibile scegliere il percorso che
si preferisce, ad esempio questo: <path>/diskless</path>. Ora copiare il file bzImage dello slave all'interno
della directory <path>/diskless</path>:
</p>
<note>
Nel caso in cui si stia lavorando con architetture differenti potrebbe essere utile salvare ogni file di configurazione del
kernel come <path>.config_arch</path>. Fare la medesima cosa con le immagini del kernel: salvarle all'interno di
<path>/diskless</path> come <path>bzImage_arch</path>.
</note>
<pre caption="Copiare il kernel dello slave">
# <i>mkdir /diskless</i>
# <i>cp /usr/src/linux/arch/i386/boot/bzImage /diskless</i>
</pre>
</body>
</section>
<section>
<title>Configurare il file system iniziale dello slave</title>
<body>
<p>
Il file system del master e dello slave possono essere modificati a proprio piacimento, al momento è interessante avere un file system iniziale con le giuste configurazioni ed i punti di mount esatti. Per prima cosa è necessario creare
all'interno di <path>/diskless</path> una directory per la prima postazione slave. Ogni slave ha bisogno della sua
directory di root (<path>/</path>) riservata, infatti la condivisione di alcuni file di sistema potrebbe causare problemi
con i permessi e soprattutto gravi crash. E' possibile chiamare queste directory come si preferisce ma, per motivi pratici, è consigliabile usare l'indirizzo ip dello slave (dato che essi sono unici e non danno luogo a confusioni). Per esempio,
nel caso in cui il primo slave avesse il seguente ip <c>192.168.1.21</c>:
</p>
<pre caption="Creazione della directory remota di root per uno slave">
# <i>mkdir /diskless/192.168.1.21</i>
</pre>
<p>
Molti file presenti in <path>/etc</path> devono essere modificati per potere funzionare sullo slave. Copiare la directory
<path>/etc</path> del master all'interno della directory di root dello slave:
</p>
<pre caption="Creazione di /etc per lo slave">
# <i>cp -r /etc /diskless/192.168.1.21/etc</i>
</pre>
<p>
Il filesystem non è ancora pronto, ci sono ancora da creare diversi punti di mount e directory. Per crearli digitare:
</p>
<pre caption="Creazione dei punti di mount e delle directory dello slave">
# <i>mkdir /diskless/192.168.1.21/home</i>
# <i>mkdir /diskless/192.168.1.21/dev</i>
# <i>mkdir /diskless/192.168.1.21/proc</i>
# <i>mkdir /diskless/192.168.1.21/tmp</i>
# <i>mkdir /diskless/192.168.1.21/mnt</i>
# <i>chmod a+w /diskless/192.168.1.21/tmp</i>
# <i>mkdir /diskless/192.168.1.21/mnt/.initd</i>
# <i>mkdir /diskless/192.168.1.21/root</i>
# <i>mkdir /diskless/192.168.1.21/var</i>
# <i>mkdir /diskless/192.168.1.21/var/empty</i>
# <i>mkdir /diskless/192.168.1.21/var/lock</i>
# <i>mkdir /diskless/192.168.1.21/var/log</i>
# <i>mkdir /diskless/192.168.1.21/var/run</i>
# <i>mkdir /diskless/192.168.1.21/var/spool</i>
# <i>mkdir /diskless/192.168.1.21/usr</i>
# <i>mkdir /diskless/192.168.1.21/opt</i>
<comment>(solo per openMosix)</comment>
# <i>mkdir /diskless/192.168.1.21/mfs</i>
</pre>
<p>
La maggior parte delle directory create precedentemente dovrebbero essere familiari. Directory quali
<path>/dev</path> o <path>/proc</path> vengono popolate all'avvio dello slave, le restanti sono montate in
seguito. E' necessario anche editare il file <path>/diskless/192.168.1.21/etc/hostname</path> per riflettere l'hostname dello
slave. I file binario, le librerie ed i restanti file vengono inseriti più avanti, prima dell'avvio dello slave.
</p>
<p>
Anche se la directory <path>/dev</path> sarà popolata successivamente da <c>udev</c>, è comunque necessario creare il device <path>console</path>. Altrimenti si avrà il messaggio d'errore: "unable to open initial console".
</p>
<pre caption="Creazione del device console in /dev">
# <i>mknod /diskless/192.168.1.21/dev/console c 5 1</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione del server DHCP</title>
<section>
<title>A proposito del server DHCP</title>
<body>
<p>
La sigla DHCP significa: Dynamic Host Configuration Protocol. Il server DHCP è il primo computer con cui gli slave
comunicano all'avvio. Lo scopo principale del server DHCP è l'assegnazione degli indirizzi
IP. Volendo, il server DHCP può assegnare gli indirizzi IP in base all'indirizzo MAC della scheda di rete dello slave.
Non appena lo slave ottiene un indirizzo IP il server DHCP gli fornisce le indicazioni su dove trovare il suo file system
iniziale ed il suo kernel.
</p>
</body>
</section>
<section>
<title>Prima di iniziare</title>
<body>
<p>
Prima di iniziare è meglio controllare il funzionamento di alcune cose. Per prima cosa controlliamo la connessione di
rete:
</p>
<pre caption="Controllo della configurazione di rete">
# <i>ifconfig eth0 enable multicast</i>
# <i>ifconfig -a</i>
</pre>
<p>
E' opportuno controllare che il dispositivo <e>eth0</e> sia funzionante. Dovrebbe apparire circa così:
</p>
<pre caption="Un dispositivo eth0 funzionante">
eth0 Link encap:Ethernet HWaddr 00:E0:83:16:2F:D6
inet addr:192.168.1.1 Bcast:192.168.1.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:26460491 errors:0 dropped:0 overruns:2 frame:0
TX packets:32903198 errors:0 dropped:0 overruns:0 carrier:1
collisions:0 txqueuelen:100
RX bytes:2483502568 (2368.4 Mb) TX bytes:1411984950 (1346.5 Mb)
Interrupt:18 Base address:0x1800
</pre>
<p>
E' importante che appaia la voce <e>MULTICAST</e>, se non compare è necessario ricompilare il proprio kernel attivando il supporto a multicast.
</p>
</body>
</section>
<section>
<title>Installazione del server DHCP</title>
<body>
<p>
Se la rete non ha ancora un server DHCP è necessario crearne uno:
</p>
<pre caption="Installazione del server dhcp">
# <i>emerge dhcp</i>
</pre>
<p>
Invece se la rete ha già un server DHCP non c'è da fare altro che configurarlo in maniera da supportare il protocollo PXE.
</p>
</body>
</section>
<section>
<title>Configurazione del server DHCP</title>
<body>
<p>
Dovrete modificare solamente il file <path>/etc/dhcp/dhcpd.conf</path> prima d'avviare il vostro server. Potete
semplicemente copiare il file di configurazione d'esempio, modificandolo in seguito:
</p>
<pre caption="Modificare il file di configurazione del server dhcp">
# <i>cp /etc/dhcp/dhcpd.conf.sample /etc/dhcp/dhcpd.conf</i>
# <i>nano -w /etc/dhcp/dhcpd.conf</i>
</pre>
<p>
Si tratta di un file indentato che dovrebbe apparire così:
</p>
<pre caption="File dhcpd.conf d'esempio">
<comment># opzioni globali</comment>
ddns-update-style none;
shared-network LOCAL-NET {
<comment># opzioni di rete condivise</comment>
subnet 192.168.1.0 netmask 255.255.255.0 {
<comment> # opzioni relative alle varie subnet</comment>
host slave{
<comment> # opzioni relative ad uno specifico host</comment>
}
group {
<comment> # opzioni relative ad un determinato gruppo</comment>
}
}
}
</pre>
<p>
Il blocco d'<c>opzioni di rete condivise</c> è facoltativo e dovrebbe essere usato per tutti gli IP che si desidera
assegnare alla stessa tipologia di rete. Si deve dichiarare almeno una <c>subnet</c>, mentre il blocco d'opzioni
relativo al <c>gruppo</c> è opzionale e consente di raggruppare le opzioni tra i vari elementi. Un buon esempio per il file
<path>dhcpd.conf</path> è questo:
</p>
<pre caption="Esempio del file dhcpd.conf">
# DHCP configuration file for DHCP ISC 3.0
ddns-update-style none;
# Definizione delle opzioni relative a PXE
# Code 1: Indirizzo IP multicast del server di boot
# Code 2: Porta UDP che il client dovrebbe monitorare per le risposte MTFTP
# Code 3: Porta UDP su cui il server MTFTP è in attesa delle richieste MTFTP
# Code 4: Numero di secondi di inattività prima che il client inizi un nuovo trasferimento MTFTP
# Code 5: Numero di secondi di inattività prima che il client provi a riavviare un trasferimento MTFTP
option space PXE;
option PXE.mtftp-ip code 1 = ip-address;
option PXE.mtftp-cport code 2 = unsigned integer 16;
option PXE.mtftp-sport code 3 = unsigned integer 16;
option PXE.mtftp-tmout code 4 = unsigned integer 8;
option PXE.mtftp-delay code 5 = unsigned integer 8;
option PXE.discovery-control code 6 = unsigned integer 8;
option PXE.discovery-mcast-addr code 7 = ip-address;
subnet 192.168.1.0 netmask 255.255.255.0 {
class "pxeclients" {
match if substring (option vendor-class-identifier, 0, 9) = "PXEClient";
option vendor-class-identifier "PXEClient";
vendor-option-space PXE;
# Deve essere indicata almeno una delle opzioni PXE relative alla propria scheda di rete, solo così
# le schede dei client capiscono che c'è un server compatibile PXE. E' necessario mettere il
# valore 0.0.0.0 alla variabile MCAST IP, in questo modo i client capiscono che non c'è un
# server TFPT multicast (il valore 0.0.0.0 indica l'assenza dell'host).
option PXE.mtftp-ip 0.0.0.0;
# Questo è il nome del file che la scheda di rete del client deve scaricare.
filename "pxelinux.0";
# Questo è l'indirizzo del server presso il quale è possibile scaricare il file.
<comment># Utilizzare l'indirizzo IP del master</comment>
next-server 192.168.1.1;
}
<comment># Se si sta utilizzando etherboot senza una specifica immagine</comment>
class "etherboot" {
if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {
filename "/diskless/vmlinuz";
}
}
pool {
max-lease-time 86400;
default-lease-time 86400;
<comment># Questa opzione evita che dei pc non autorizzati ottengano un IP</comment>
deny unknown clients;
}
host slave21 {
<comment># Utilizzare l'indirizzo MAC dello slave</comment>
hardware ethernet 00:40:63:C2:CA:C9;
<comment># Fornire allo slave un indirizzo IP statico</comment>
fixed-address 192.168.1.21;
server-name "master";
<comment># Se necessario indicare l'indirizzo IP del vostro gateway</comment>
option routers 192.168.1.1;
<comment># Se necessario indicare l'indirizzo IP del vostro server DNS</comment>
option domain-name-servers 192.168.1.1;
option domain-name "mydomain.com";
<comment># Utilizzare l'hostname dello slave</comment>
option host-name "slave21";
<comment># Etherboot e pxe eseguono l'avvio con una specifica immagine</comment>
option root-path "/diskless/192.168.1.21";
if substring (option vendor-class-identifier, 0, 9) = "Etherboot" {
filename "/vmlinuz_arch";
} else if substring (option vendor-class-identifier, 0,9) ="PXEClient" {
filename "/pxelinux.0";
}
}
}
</pre>
<note>
Nulla impedisce di utilizzare insieme l'avvio tramite PXE e quello tramite Etherboot.
Il codice illustrato precedentemente è soltanto un esempio.
Nel caso incontriate problemi è raccomandata la consultazione della documentazione di DHCPd.
</note>
<p>
L'indirizzo IP in indicato dopo la voce <c>next-server</c> sarà richiesto nel file indicato alla voce <c>filename</c>
Questo indirizzo IP dovrebbe essere quello del server tftp, che solitamente è in esecuzione sul master. Il nome del file
indicato nella vece <c>filename</c> ha come percorso relativo <path>/diskless</path> (questo dipende dalle
impostazioni relative al server tftp, impostazioni che analizzeremo successivamente). All'interno del blocco di opzioni
della voce <c>host</c> alla voce <c>hardware ethernet</c> si specifica un indirizzo MAC, alla voce <c>fixed-address</c>
si indica un indirizzo IP da assegnare staticamente all'indirizzo MAC indicato in precedenza. E' consigliabile
fare uso anche della voce <c>host-name</c>, la quale non indica altro che l'hostname di un particolare slave. Per
ulteriori informazioni è consigliabile la lettura dell'ottima pagina man di <path>dhcpd.conf</path>, ci sono infatti molte
altre opzioni che vanno oltre gli scopi di questa guida. E' possibile leggere la pagina man digitando:
</p>
<pre caption="Leggere la pagina man di dhcpd.conf">
# <i>man dhcpd.conf</i>
</pre>
</body>
</section>
<section>
<title>Avviare il server DHCP</title>
<body>
<p>
Prima di lanciare lo script d'avvio del server dhcp modificare il file <path>/etc/conf.d/dhcp</path> in maniera che
assomigli a questo:
</p>
<pre caption="Esempio del file /etc/conf.d/dhcp">
IFACE="eth0"
<comment># inserire altre eventuali opzioni</comment>
</pre>
<p>
La variabile <c>IFACE</c> corrisponde al dispositivo di rete su cui il server DHCP resta in ascolto, in questo caso
<c>eth0</c>. Nel caso di complesse tipologie di rete, con più dispositivi di rete, potrebbe essere necessario
aggiungere più valori alla variabile <c>IFACE</c>. Per avviare il server dhcp digitare:
</p>
<pre caption="Avviare il server dhcp sul master">
# <i>/etc/init.d/dhcp start</i>
</pre>
<p>
Per avviare il server dhcp fin dall'avvio del master digitare:
</p>
<pre caption="Avviare il server dhcp all'avvio del master">
# <i>rc-update add dhcp default</i>
</pre>
</body>
</section>
<section>
<title>Possibili problemi con il server DHCP</title>
<body>
<p>
E' possibile verificare l'avvio di una postazione remota leggendo il file <path>/var/log/syslog.log</path>.
Se la postazione esegue con successo la procedura di boot, verso la fine del file <path>syslog.log</path> si dovrebbe
avere delle linee come queste:
</p>
<pre caption="Possibili linee create nel file di log dal server dhcp">
DHCPDISCOVER from 00:00:00:00:00:00 via eth0
DHCPOFFER on 192.168.1.21 to 00:00:00:00:00:00 via eth0
DHCPREQUEST for 192.168.1.21 from 00:00:00:00:00:00 via eth0
DHCPACK on 192.168.1.21 to 00:00:00:00:00:00 via eth0
</pre>
<note>
Da questo file di log è possibile anche scoprire gli indirizzi MAC degli slave.
</note>
<p>
Nel caso in cui si ottenga il seguente messaggio esistono degli errori all'interno del file di configurazione, ma il server
continua comunque a funzionare correttamente in broadcast.
</p>
<pre caption="Possibile errore del server dhpc">
no free leases on subnet LOCAL-NET
</pre>
<p>
Ogni volta che sono fatte delle modifiche alla configurazione è necessario riavviare il server dhcp.
Per riavviarlo digitare:
</p>
<pre caption="Riavviare il server dhcp sul master">
# <i>/etc/init.d/dhcpd restart</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Configurare il server TFTP e l'avvio tramite PXE e/o Etherboot </title>
<section>
<title>A proposito del server TFTP</title>
<body>
<p>
La sigla TFTP significa Trivial File Transfer Protocol.
Il server TFTP ha la funzione di fornire agli slave il loro kernel ed il loro filesystem iniziale.
Tutti i kernel ed i filesystem degli slave saranno conservati sul server TFTP, è quindi una buona idea avviare il
server TFTP sul master.
</p>
</body>
</section>
<section>
<title>Installare il server TFTP</title>
<body>
<p>
E' consigliabile utilizzare l'ebuild <c>tftp-hpa</c>. Si tratta di un'implementazione scritta dall'autore di SYSLINUX che
funziona molto bene con PXE. Per installarlo digitare:
</p>
<pre caption="Installazione del server tfp">
# <i>emerge tftp-hpa</i>
</pre>
</body>
</section>
<section>
<title>Configurare il server TFTP</title>
<body>
<p>
Modificare il file <path>/etc/conf.d/in.tftpd</path>. All'interno si deve specificare, con la
variabile <c>INTFTPD_PATH</c>, il percorso della directory di root del server tftp e, nella variabile
<c>INTFTPD_OPTS</c>, le opzioni con cui avviare il server tftp. Il file dovrebbe essere simile a quello riportato
di seguito:
</p>
<pre caption="Esempio del file /etc/conf.d/in.tftpd">
INTFTPD_PATH="/diskless"
INTFTPD_OPTS="-l -v -s ${INTFTPD_PATH}"
</pre>
<p>
L'opzione <c>-l</c> indica che il server resta in ascolto senza richiedere l'avvio di inetd. L'opzione <c>-v</c>
indica che il server scrive nei file di log molte informazioni in più rispetto al solito.
L'opzione <c>-s /diskless</c> specifica la directory di root del vostro server tftp.
</p>
</body>
</section>
<section>
<title>Avviare il server TFTP</title>
<body>
<p>
Per avviare il server tftp digitate:
</p>
<pre caption="Avviare il server tftp sul master">
# <i>/etc/init.d/in.tftpd start</i>
</pre>
<p>
In questo modo il server tftp viene avviato usando le opzioni specificate in <path>/etc/conf.d/in.tftpd</path>.
Se si desidera avviare il server tftp ad ogni avvio del master digitate:
</p>
<pre caption="Avviare automaticamente il server tftp all'avvio">
# <i>rc-update add in.tftpd default</i>
</pre>
</body>
</section>
<section>
<title>A proposito di PXELINUX</title>
<body>
<p>
E' possibile saltare questa sezione se si ha intenzione di utilizzare solamente Etherboot.
PXELINUX è un bootloader di rete, equivalente a LILO o GRUB, che fa uso di un server TFTP.
Sostanzialmente è un insieme di istruzioni che spiegano al pc dove reperire il proprio kernel ed il proprio filesystem.
Come tutti i bootloader anche PXELINUX permette il passaggio di parametri all'avvio del kernel.
</p>
</body>
</section>
<section>
<title>Prima di iniziare</title>
<body>
<p>
E' necessario procurarsi il file <path>pxelinux.0</path> che è contenuto nel pacchetto <c>SYSLINUX</c> (il cui
autore è H. Peter Anvin). E' possibile installare questo pacchetto digitando:
</p>
<pre caption="Installare syslinux">
# <i>emerge syslinux</i>
</pre>
</body>
</section>
<section>
<title>Configurare PXELINUX</title>
<body>
<note>
Non è richiesto Etherboot
</note>
<p>
Prima d'avviare il server tftp si deve configurare pxelinux. Per prima cosa copiare il binario di pxelinux
all'interno della directory <path>/diskless</path>:
</p>
<pre caption="Configurare il bootloader remoto">
# <i>cp /usr/lib/syslinux/pxelinux.0 /diskless</i>
# <i>mkdir /diskless/pxelinux.cfg</i>
# <i>touch /diskless/pxelinux.cfg/default</i>
</pre>
<p>
Questo crea una configurazione di default per il bootloader. L'eseguibile <path>pxelinux.0</path> andrà a cercare,
all'interno della directory in cui è contenuto il file <path>pxelinux.cfg</path>, un file il cui nome sia l'equivalente in
esadecimale dell'indirizzo IP del client. Nel caso in cui non trovi il file allora ne cerca un altro il cui nome è identico al precedente, senza però l'ultimo gruppo di numeri sulla destra (i numeri sono separati tra di loro da un punto); continua a ripetere questa operazione fino a quando non ci sono più punti all'interno del nome del file da
cercare. A partire dalla versione 2.05 syslinux per prima cosa cerca un file il cui nome deriva dall'indirizzo mac. Se non è trovato nessun file allora è eseguita la procedura di scoperta descritta precedentemente. Se non è trovato nessun file allora è usato il file <path>default</path>.
</p>
<pre caption="Sequenza di file cercati da PXE all'interno di pxelinux.cfg/">
<comment>(Lo 01 iniziale indica un'interfaccia Ethernet, i byte successivi coincidono con l'indirizzo MAC dello slave.</comment>
01-00-40-63-c2-ca-c9
<comment>(IP assegnati in esadecimale)</comment>
C0A80115
C0A8011
C0A801
C0A80
C0A8
C0A
C0
C
default
</pre>
<note>
Tutti i caratteri sono minuscoli.
</note>
<p>
Si analizzi ora il file <path>default</path>:
</p>
<pre caption="Esempio del file pxelinux.cfg/default">
DEFAULT /bzImage
APPEND ip=dhcp root=/dev/nfs nfsroot=192.168.1.1:/diskless/192.168.1.21
</pre>
<p>
Alla variabile <c>DEFAULT</c> corrisponde il percorso completo dell'immagine del kernel compilata precedentemente
per lo slave. Nella variabile <c>APPEND</c> sono specificati gli argomenti da passare al kernel al momento del
caricamento. Dato che è stato compilato il kernel dello slave con il supporto a <c>NFS_ROOT_SUPPORT</c>, allora
qui si specifica il percorso del file system remoto. Il primo IP è quello del master, mentre il secondo è la directory
creata all'interno di <path>/diskless</path> per contenere il file system iniziale dello slave.
</p>
</body>
</section>
<section>
<title>A proposito di Etherboot</title>
<body>
<note>
E' possibile evitare l'uso di Etherboot se si ha intenzione di usare PXE.
</note>
<p>
Etherboot carica l'immagine del kernel da un server TFTP. Così come PXE, anche Etherboot è equivalente a LILO o
GRUB. Il programma <c>mknbi</c> permette di creare varie immagini d'avvio.
</p>
</body>
</section>
<section>
<title>Prima di iniziare</title>
<body>
<p>
E' necessario installare il pacchetto <c>mknbi</c>, al suo interno si trova tutto il necessario per creare immagini
del kernel utili per il boot da remoto. Questo programma crea un'immagine del kernel preconfigurata a partire dal kernel originale.
</p>
<pre caption="Installare mknbi">
# <i>emerge mknbi</i>
</pre>
</body>
</section>
<section>
<title>Configurare Etherboot</title>
<body>
<p>
In questa sezione si crea una semplice immagine d'avvio di etherboot. Dato che il server dhcp fornisce ai client il
percorso della loro directory di root (è stata specificata all'interno del <path>dhcp.conf</path> con l'opzione
<c>option root-path</c>) in questo momento non si deve indicarla. Per ulteriori informazioni è consigliabile la lettura della man page di mknbi:
</p>
<pre caption="Lettura della man page di mknbi">
# <i>man mknbi</i>
</pre>
<p>
Si procede ora alla creazione delle immagini d'avvio. In questa fase si creano delle immagini d'avvio in ELF in grado di
fornire al kernel le informazioni relative al dhcp ed al percorso del filesystem remoto; inoltre si forza il kernel a cercare nella rete un server dhcp.
</p>
<pre caption="Creazione delle immagini netboot">
# <i>mkelf-linux -ip=dhcp /diskless/bzImage > /diskless/vmlinuz </i>
</pre>
<note>
Per le immagini relative ad una determinata architettura è necessario specificare <c>bzImage_arch</c> e
<c>vmlinuz_arch</c>.
</note>
</body>
</section>
<section>
<title>Problemi comuni con l'avvio tramite rete</title>
<body>
<p>
Ci sono un paio di modi per individuare gli errori che si verificano durante la fase d'avvio remoto. Per prima cosa
è possibile utilizzare un programma chiamato <c>tcpdump</c>. Per installarlo digitare:
</p>
<pre caption="Installing tcpdump">
# <i>emerge tcpdump</i>
</pre>
<p>
Ora è possibile controllare il traffico della vostra rete, accertandosi che le iterazioni client/server funzionino a dovere.
Se non si riesce a vedere il traffico tra i due host dovete controllare un paio di cose. Per primo verificare che i due
host siano collegati fisicamente in maniera corretta, e che il cavo di rete non sia danneggiato. Se il client/server
non riceve le richieste destinate ad una certa porta allora verificare la presenza di eventuali firewall e la loro
configurazione. Per leggere il traffico tra due pc digitare:
</p>
<pre caption="Monitorare il traffico tra il client ed il server usando tcpdump">
# <i>tcpdump host </i><comment>client_ip</comment><i> and </i><comment>server_ip</comment>
</pre>
<p>
E' possibile utilizzare <c>tcpdump</c> per visualizzare il traffico relativo ad una particolare porta. Per ascoltare il traffico
sulla porta di tftp digitare:
</p>
<pre caption="Visualizzare il traffico diretto alla porta del server tftp">
# <i>tcpdump port 69</i>
</pre>
<p>
Un errore molto comune è il seguente: "PXE-E32: TFTP open time-out". Solitamente è dovuto alle regole di alcuni
firewall. Se si sta usando <c>TCPwrappers</c> vi consigliamo di controllare i file <path>/etc/hosts.allow</path> e
<path>etc/hosts.deny</path> controllando che siano impostati correttamente. Ricordare che al client dove essere
consentito di connettersi al server.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Configurare il server NFS</title>
<section>
<title>A proposito del server NFS</title>
<body>
<p>
NFS significa Network File System. Il server NFS viene utilizzato per fornire lo spazio di lavoro agli slave. Il server NFS può essere configurato in vari modi, ma questi esulano dagli intenti di questa guida.
</p>
</body>
</section>
<section>
<title>A proposito di Portmapper</title>
<body>
<p>
Molti servizi dei client e dei server non sono in ascolto su una determinata porta, ma si affidano alle RPCs (Remote
Procedure Calls). Quando il servizio è inizializzato si mette in ascolto su una porta a caso e poi registra questa porta
tramite l'uso di Portmapper. NFS si affida alle RPCs e pertanto Portmapper deve essere in esecuzione prima
del suo avvio.
</p>
</body>
</section>
<section>
<title>Prima di iniziare</title>
<body>
<p>
Il server NFS richiede delle opzioni abilitate all'interno del kernel, nel caso non siano selezionate è necessario
ricompilare il kernel del master. Per controllare rapidamente la selezione di queste opzioni digitare:
</p>
<pre caption="Verificare il supporto di NFS all'interno del kernel del master">
# <i>grep NFS /usr/src/linux/.config_master</i>
</pre>
<p>
Se il kernel è stato configurato correttamente si dovrebbe avere un risultato simile al seguente:
</p>
<pre caption="Kernel configurato con il supporto a NFS">
CONFIG_PACKET=y
# CONFIG_PACKET_MMAP is not set
# CONFIG_NETFILTER is not set
CONFIG_NFS_FS=y
CONFIG_NFS_V3=y
# CONFIG_NFS_V4 is not set
# CONFIG_NFS_DIRECTIO is not set
CONFIG_NFSD=y
CONFIG_NFSD_V3=y
# CONFIG_NFSD_V4 is not set
# CONFIG_NFSD_TCP is not set
</pre>
</body>
</section>
<section>
<title>Installare il server NFS</title>
<body>
<p>
Per installare il pacchetto contenente i programmi di NFS digitare:
</p>
<pre caption="Installare le nfs-utils">
# <i>emerge nfs-utils</i>
</pre>
<p>
Questo pacchetto installa i programmi richiesti per un corretto funzionamento di NFS, preoccupandosi di risolvere
tutte le loro dipendenze.
</p>
</body>
</section>
<section>
<title>Configurare il server NFS</title>
<body>
<p>
I principali file da configurare sono:
</p>
<pre caption="File di configurazione di Nfs">
/etc/exports
/diskless/192.168.1.21/etc/fstab
/etc/conf.d/nfs
</pre>
<p>
All'interno del file <path>/etc/exports</path> sono specificate le directory da condividere, come condividerle e a chi
condividerle. Il file fstab dello slave viene modificato in maniera tale da montare il filesystem che il
master condivide.
</p>
<p>
Una configurazione tipica del file <path>/etc/exports</path> del master dovrebbe apparire così:
</p>
<pre caption="Esempio del file /etc/exports del master">
<comment># aggiungete un linea come questa per ogni slave</comment>
/diskless/192.168.1.21 192.168.1.21(sync,rw,no_root_squash,no_all_squash)
<comment># comune a tutti gli slave</comment>
/opt 192.168.1.0/24(sync,ro,no_root_squash,no_all_squash)
/usr 192.168.1.0/24(sync,ro,no_root_squash,no_all_squash)
/home 192.168.1.0/24(sync,rw,no_root_squash,no_all_squash)
<comment># se si desidera avere dei log comuni</comment>
/var/log 192.168.1.21(sync,rw,no_root_squash,no_all_squash)
</pre>
<p>
Il primo campo indica la directory da esportare, quello successivo indica a chi e come condividerla..
Il secondo campo può essere diviso in due parti: nella prima si indica chi può accedere alla condivisione, nel secondo campo si indicano i suoi permessi sulla directory. I permessi possono essere di sola lettura(<c>ro</c>), lettura e scrittura (<c>rw</c>). Gli attributi <c>no_root_squash</c> e <c>no_all_squash</c> sono importanti per le nostre postazioni remote in quanto evitano crash e perdite di dati durante le operazioni di lettura e scrittura.
Il file <path>/diskless/192.168.1.21/etc/fstab</path> dello slave dovrebbe essere simile al seguente:
</p>
<pre caption="Esempio del file fstab di uno slave">
<comment># queste voci sono essenziali</comment>
master:/diskless/192.168.1.21 / nfs sync,hard,intr,rw,nolock,rsize=8192,wsize=8192 0 0
master:/opt /opt nfs sync,hard,intr,ro,nolock,rsize=8192,wsize=8192 0 0
master:/usr /usr nfs sync,hard,intr,ro,nolock,rsize=8192,wsize=8192 0 0
master:/home /home nfs sync,hard,intr,rw,nolock,rsize=8192,wsize=8192 0 0
none /proc proc defaults 0 0
<comment># voci utili ma opzionali</comment>
master:/var/log /var/log nfs hard,intr,rw 0 0
<comment>(solo se si sta configurando un cluster openMosix)</comment>
none /mfs mfs dfsa=1 0 0
</pre>
<p>
Nell'esempio la variabile <e>master</e> è semplicemente l'hostname del master, oppure il suo indirizzo IP.
Il primo campo indica la directory che deve essere montata, il secondo campo indica il punto in cui montarla.
Il terzo campo indica il filesystem da utilizzare, questo deve essere NFS per ogni punto di mount NFS. Il quarto campo
indica varie opzioni che saranno usate durante il mount (per approfondimenti consultare le pagine man di mount(1)).
Molti utenti hanno riscontrato difficoltà usando dei punti di mount soft, pertanto sono stati usati solo punti di mount hard.
Per ottimizzare il vostro sistema si consiglia di leggere le varie opzioni applicabili a <path>/etc/fstab</path>.
</p>
<p>
L'ultimo file da modificare è <path>/etc/conf.d/nfs</path>. In questo file sono specificate alcune opzioni che sono usate
all'avvio di nfs. Dovrebbe essere simile al seguente:
</p>
<pre caption="Esempio del file /etc/conf.d/nfs presente sul master">
# Config file for /etc/init.d/nfs
# Number of servers to be started up by default
RPCNFSDCOUNT=8
# Options to pass to rpc.mountd
RPCMOUNTDOPTS=""
</pre>
<p>
E' necessario cambiare il parametro <c>RPCNFSDCOUNT</c> inserendo il numero di postazioni remote che sono presenti
nella propria rete.
</p>
</body>
</section>
<section>
<title>Avviare il server NFS</title>
<body>
<p>
Per avviare il server nfs utilizzare lo script situato in
<path>/etc/init.d</path>. Basta digitare:
</p>
<pre caption="Avviare il server nfs">
# <i>/etc/init.d/nfs start</i>
</pre>
<p>
Per avviare il server nfs all'avvio del master digitare:
</p>
<pre caption="Avviare il server nfs all'avvio del master">
# <i>rc-update add nfs default</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Completare il filesystem dello slave</title>
<section>
<title>Copiare i file mancanti</title>
<body>
<p>
A questo punto è possibile sincronizzare il filesytem dello slave con quello del master fornendo i binari necessari, ma mantendo
i file propri dello slave.
</p>
<pre caption="Creazione del filesystem dello slave">
# <i>rsync -avz /bin /diskless/192.168.1.21</i>
# <i>rsync -avz /sbin /diskless/192.168.1.21</i>
# <i>rsync -avz /lib /diskless/192.168.1.21</i>
</pre>
<note>
E' stato usato il comando <c>rsync -avz</c> al posto di <c>cp</c> per mantenere i collegamenti simbolici ed i
permessi dei file copiati.
</note>
</body>
</section>
<section>
<title>Script di inizializzazione</title>
<body>
<p>
Gli script di base cercano di lanciare <e>checkroot</e>, ciò ovviamente non ha alcun senso per il slave.
Per risolvere questo problema è possibile modificare lo script di avvio <path>/diskless/192.168.1.21/sbin/rc</path>,
questa però è una soluzione pericolosa e molto difficile; inoltre dopo ogni sincronizzazione del filesystem dello slave
sarebbe necessario ripetere questa operazione. Esiste però un trucco: avere un file <path>/fastboot</path> all'avvio del proprio
sistema. Questo file indica a <e>checkroot</e> di non compiere alcun controllo all'avvio. Purtroppo <e>checkroot</e>
cancella il file <path>/fastboot</path> al termine della procedura d'avvio, si deve quindi ricreare questo file prima
dello spegnimento/riavvio dello slave. Basta digitare i seguenti comandi:
</p>
<pre caption="Evitare che gli script d'avvio compiano un controllo sul filesystem">
<comment>(Si crea il file /fastboot per il prossimo avvio)</comment>
# <i>touch /diskless/192.168.1.21/fastboot</i>
<comment>(Si crea il file /fastboot ad ogni avvio)</comment>
# <i>echo "touch /fastboot" >> /diskless/192.168.1.21/etc/conf.d/local.start</i>
</pre>
<p>
Dato che i filesystem remoti devono essere smontati il più tardi possibile bisogna modificare il file <path>/etc/init.d/netmount</path> nel seguente modo:
</p>
<pre caption="Modificare /etc/init.d/netmount">
depend() {
<i>before *</i>
</pre>
<note>
La versione 1.11.* e successive di baselayout non necessitano di questa modifica.
</note>
<p>
Se si sta usando un file system live, non bisogna dimenticarsi di eseguire <c>depscan.sh</c> per risolvere le dipendenze dei servizi. Si possono ignorare tranquillamente gli eventuali messaggi d'avvertimento relativi alle collisioni con /etc/init.d/checkroot. Questo è possibile perchè checkroot è disabilitato dal file fastboot creato nel paragrafo precedente.
</p>
<p>
A questo punto si è liberi d'aggiungere tutti gli script d'avvio che si desidera all'interno di
<path>/diskless/192.168.1.21/etc/runlevel</path>; aggiungere tutti quelli che si desidera che siano
avviati sulla propria postazione remota.
</p>
<warn>
<e>NON utilizzare</e> il comando <c>rc-update</c> per rimuovere o aggiungere gli script dal runlevel dello slave mentre si è
collegati sul master. Infatti questo provocherebbe un cambiamento al runlevel del master e non dello slave. Si deve
creare i collegamenti a mano, oppure collegarsi allo slave fisicamente (tramite tastiera e monitor) oppure da remoto (per esempio tramite ssh).
</warn>
<pre caption="Tipici runlevel di uno slave">
/diskless/192.168.1.21/etc/runlevels/:
total 16
drwxr-xr-x 2 root root 4096 2003-11-09 15:27 boot
drwxr-xr-x 2 root root 4096 2003-10-01 21:10 default
drwxr-xr-x 2 root root 4096 2003-03-13 19:05 nonetwork
drwxr-xr-x 2 root root 4096 2003-02-23 12:26 single
/diskless/192.168.1.21/etc/runlevels/boot:
total 0
lrwxrwxrwx 1 root root 20 2003-10-18 17:28 bootmisc -> /etc/init.d/bootmisc
lrwxrwxrwx 1 root root 19 2003-10-18 17:28 checkfs -> /etc/init.d/checkfs
lrwxrwxrwx 1 root root 17 2003-10-18 17:28 clock -> /etc/init.d/clock
lrwxrwxrwx 1 root root 23 2003-10-18 17:28 consolefont -> /etc/init.d/consolefont
lrwxrwxrwx 1 root root 20 2003-10-18 17:28 hostname -> /etc/init.d/hostname
lrwxrwxrwx 1 root root 19 2003-10-18 17:28 keymaps -> /etc/init.d/keymaps
lrwxrwxrwx 1 root root 22 2003-10-18 17:28 localmount -> /etc/init.d/localmount
lrwxrwxrwx 1 root root 18 2003-10-18 17:28 net.lo -> /etc/init.d/net.lo
lrwxrwxrwx 1 root root 20 2003-10-18 17:28 netmount -> /etc/init.d/netmount
lrwxrwxrwx 1 root root 19 2003-10-18 17:28 portmap -> /etc/init.d/portmap
lrwxrwxrwx 1 root root 21 2003-10-18 17:28 rmnologin -> /etc/init.d/rmnologin
lrwxrwxrwx 1 root root 18 2003-10-18 17:28 serial -> /etc/init.d/serial
lrwxrwxrwx 1 root root 19 2003-10-18 17:28 urandom -> /etc/init.d/urandom
/diskless/192.168.1.21/etc/runlevels/default:
total 0
lrwxrwxrwx 1 root root 17 2003-10-18 17:28 clock -> /etc/init.d/clock
lrwxrwxrwx 1 root root 19 2003-10-18 17:28 distccd -> /etc/init.d/distccd
lrwxrwxrwx 1 root root 17 2003-10-18 17:28 local -> /etc/init.d/local
lrwxrwxrwx 1 root root 19 2003-10-18 17:28 metalog -> /etc/init.d/metalog
lrwxrwxrwx 1 root root 22 2003-10-18 17:28 ntp-client -> /etc/init.d/ntp-client
lrwxrwxrwx 1 root root 16 2003-10-18 17:28 ntpd -> /etc/init.d/ntpd
lrwxrwxrwx 1 root root 16 2003-10-18 17:28 sshd -> /etc/init.d/sshd
lrwxrwxrwx 1 root root 17 2003-10-18 17:28 vcron -> /etc/init.d/vcron
/diskless/192.168.1.21/etc/runlevels/nonetwork:
total 0
lrwxrwxrwx 1 root root 17 2003-10-18 17:28 local -> /etc/init.d/local
/diskless/192.168.1.21/etc/runlevels/single:
total 0
</pre>
<p>
Questa è la fine, è ora di avviare il proprio slave.
In bocca al lupo!
</p>
</body>
</section>
<!--
<section>
<title>An alternative : ClusterNFS</title>
<body>
<warn>
This is mentioned only because a reviewer of this document is using this
solution. Be aware that Gentoo <e>does not</e> support ClusterNFS. It is not in
portage and requires changes to a baselayout init script. <b>Use at your own
risks</b>.
</warn>
<p>
If you don't fancy having a distinct root for each slave because it needs some
maintenance when upgrading files from the master directories, you could share
the same root across all nodes, master and slaves included. This means all your
machines need to be compatible because you will have only one set of binaries.
You also need to be aware that this might have security issues because all of
your master root will be exported through NFS.
</p>
<p>
If you still want to try out this alternative, visit the ClusterNFS <uri
link="http://clusternfs.sourceforge.net/">home page</uri>, download the
software and read the doc.
</p>
<p>
To make it short, all files are shared and the files that need to be different
between master and all slaves are copied to <path>file$$CLIENT$$</path>. When a
slave requests <path>file</path>, ClusterNFS will notice the existence of
<path>file$$CLIENT$$</path> and send it instead. Files that need to be
different on each node are copied to <path>file$$IP=192.168.1.21$$</path>.
The same applies to directories.
</p>
<p>
Very shortly, this is what differs from the installation procedure described
above:
</p>
<ul>
<li>You do not need NFS server support in your master kernel</li>
<li>Install ClusterNFS <e>after</e> you emerge nfs-utils</li>
<li>Make slave copies of files and directories as described below</li>
<li>Do not create a root dir for each node</li>
<li>Export only / in your <path>/etc/exports</path> file</li>
<li>
Only mount / via NFS in the slave <path>/etc/fstab$$CLIENT$$</path> file
</li>
<li>Edit <path>/etc/init.d/nfs</path> as described below</li>
<li>
Edit <path>/etc/conf.d/local.start$$CLIENT$$</path> as described below
</li>
</ul>
<pre caption="Files that need to be different between master and slaves">
/etc/conf.d/local.start$$CLIENT$$
/etc/conf.d/local.stop$$CLIENT$$<comment> (Probably empty)</comment>
/etc/crontab$$CLIENT$$<comment> (Probably empty, master takes care of chores)</comment>
/etc/exports$$CLIENT$$<comment> (Empty, slaves do not export NFS mounts)</comment>
/etc/fstab$$CLIENT$$
/etc/hostname$$IP=192.168.1.21$$<comment> (Name your slaves)</comment>
/etc/mtab$$IP=192.168.1.21$$
/etc/runlevels$$CLIENT$$<comment> (Clean separation between master and slave boot scripts)</comment>
/fastboot$$CLIENT$$
/tmp$$IP=192.168.1.21$$
/var$$IP=192.168.1.21$$<comment> (Create subdirs as in /var)</comment>
</pre>
<pre caption="Editing /etc/init.d/nfs">
ebegin "Starting NFS daemon"
start-stop-daemon - -start - -quiet - -exec \
<comment># Add - -translate-names option</comment>
$nfsd - - - -translate-names
eend $? "Error starting NFS daemon"
# Check if we support NFSv3
ebegin "Starting NFS mountd"
<comment># Comment the following two lines (ClusterNFS only knows NFS v2)</comment>
# rpcinfo -u localhost nfs 3 &>/dev/null || \
# RPCMOUNTDOPTS="$RPCMOUNTDOPTS - -no-nfs-version 3"
start-stop-daemon - -start - -quiet - -exec \
$mountd - - $RPCMOUNTDOPTS 1>&2
eend $? "Error starting NFS mountd"
</pre>
<pre caption="Editing /etc/conf.d/local.start$$CLIENT$$">
<comment>(Add this line)</comment>
touch /fastboot\$\$CLIENT\$\$
</pre>
</body>
</section>
-->
</chapter>
</guide>
[-- Attachment #3: macos-guide.xml --]
[-- Type: text/xml, Size: 17924 bytes --]
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/macos-guide.xml,v 1.8 2005/06/21 01:25:32 smithj Exp $ -->
<guide link="/doc/en/macos-guide.xml">
<title>Guida all'installazione ed all'uso di Gentoo per Mac OS X</title>
<author title="Author, Editor">
<mail link="alexander@gentoo.org">Alexander Plank</mail>
</author>
<author title="Author, Editor">
<mail link="gongloo@gentoo.org">Hasan Khalil</mail>
</author>
<author title="Author">
<mail link="pat2man@comcast.net">Patrick Tescher</mail>
</author>
<author title="Author">
<mail link="clement@varaldi.org">Clément Varaldi</mail>
</author>
<author title="Editor">
<mail link="robin.perkins@internode.on.net">Robin Perkins</mail>
</author>
<author title="Traduzione">
<mail link="micron@madlab.it">Flavio Castelli</mail>
</author>
<abstract>
Questa guida illustra i passaggi necessari all'installazione ed all'uso del portage all'interno di Mac OS X.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<license/>
<version>1.6</version>
<date>2005-06-20</date>
<chapter>
<title>Installazione</title>
<section>
<title>Requisiti di sistema</title>
<body>
<p>
Per installare Gentoo per Mac OS X si richiesti i seguenti programmi:
</p>
<ul>
<li>Mac OS 10.3 o seguenti</li>
<li>XCode Tools 1.2 o seguenti</li>
</ul>
<note>
Il programma XCode Tools può essere scaricato dall'<uri link="https://connect.apple.com">Apple Developer Connection</uri>, previa registrazione gratuita.
</note>
<impo>
Si consiglia <e>caldamente</e> d'installare l'X11 SDK contenuto in XCode.
</impo>
</body>
</section>
<section>
<title>Il programma d'installazione</title>
<body>
<p>
Per prima cosa è necessario scaricare il <uri
link="http://www.metadistribution.org/macos">programma d'installazione di Gentoo per Mac OS X</uri>. Una volta terminato il download si dovrà fare doppio clic sull'icona del file dmg appena scaricato. In questo modo i suoi contenuti saranno mostrati all'interno di una finestra di finder e sarà visibile l'icona del programma d'installazione. Cliccare quindi sull'icona del programma d'installazione e seguire le istruzioni che compariranno sullo schermo.
</p>
</body>
</section>
<section>
<title>Terminal.app</title>
<body>
<p>
Dopo che il programma d'installazione avrà completato il suo lavoro è necessario eseguire il programma Terminal.app (o un qualsiasi emulatore di terminale). Se Terminal.app è già in esecuzione sarà opportuno aprire una nuova shell/finestra affinchè siano trovati i programmi appena installati.
</p>
<warn>
L'uso di una shell diversa dalla bash non è attualmente supportato, molto probabilemente essa non funzionerà . Per cambiare la shell predefinita usata da Terminal.app è necessario seguire il seguente percorso: Terminal->Preferences (nella barra del menu), selezionare l'opzione "Execute this command" e impostare come valore <c>/bin/bash</c>.
</warn>
</body>
</section>
<section>
<title>Aggiornare il Portage</title>
<body>
<p>
E' indispensabile mantenere aggiornate le informazioni relative ai programmi forniti dal portage; esse sono contenute all'interno di una struttura (chiamata portage-tree) posta all'interno della directory <path>/usr/portage</path>. Queste informazioni indicano al portage i programmi disponibili e le loro modalità d'installazione. Per essere sempre aggiornati sugli ultimi programmi disponibili è quindi importante mantenere sincronizzato il portage-tree.
</p>
<p>
Per continuare l'installazione è necessario ottenere i privilegi di root.
Per farlo basta essere un amministratore del computer ed eseguire sudo.
</p>
<pre caption="Acquisire i privilegi di root">
$ <i>sudo su</i>
Password:
</pre>
<p>
Per essere sicuri d'avere le ultime informazioni sui programmi disponibili sarà necessario sincronizzare il portage-tree con quello messo a disposizione da uno dei server di gentoo.
</p>
<pre caption="Aggiornamento del portage">
# <i>emerge --sync</i>
</pre>
</body>
</section>
<section>
<title>Configurazione</title>
<body>
<p>
Per prima cosa si deve indicare al portage la versione di OSX che è in uso. Il portage usa i file contenuti in <path>/etc/make.profile</path> per determinare quali programmi siano già forniti da Mac OS X, quali siano masked per la versione di OSX in esecuzione e per conoscere le opzioni di configurazione di default. Basterà scegliere uno dei profili forniti dal programma d'installazione creando il collegamento simbolico <path>/etc/make.profile</path> che punterà ad un profilo pre-costruito.
Questa operazione è facile quanto l'esecuzione dello script di bootstrap.
</p>
<pre caption="Esecuzione dello script di bootstrap">
# <i>sh /usr/portage/scripts/bootstrap-macos.sh</i>
</pre>
<p>
Per collegare il file di profilo manualmente si digiti il seguente comando, precisando il profilo che più si adatta al sistema.
</p>
<pre caption="Creare un link simbolico al profilo per Jaguar/Panther">
# <i>ln -s /usr/portage/profiles/default-darwin/macos/10.3 /etc/make.profile</i>
</pre>
<pre caption="Creare un link simbolico al profilo per Tiger">
# <i>ln -s /usr/portage/profiles/default-darwin/macos/10.4 /etc/make.profile</i>
</pre>
<note>
Degli utenti esperti possono anche azzardarsi a configurare ulteriormente il portage modificando le opzioni contenute in <path>/etc/make.conf</path>. Tutto ciò è altamente sconsigliato per gli utenti di livello medio.
</note>
</body>
</section>
<section>
<title>Installare i programmi di sistema</title>
<body>
<p>
A questo punto è necessario fare un emerge dei programmi di sistema. In questo modo saranno installati i programmi che permetteranno al portage di funzionare correttamente.
</p>
<pre caption="Installare il sistema">
# <i>emerge system</i>
</pre>
<p>
Ora Gentoo per Mac OS X dovrebbe essere pronto per l'uso.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Installare applicazioni usando il Portage</title>
<section>
<title>Installare applicazioni</title>
<body>
<p>
Per installare un programma presente nel portage si deve semplicemente fare il suo emerge.
Il portage si preoccuperà di risolvere tutte le dipendenze richieste dal programma. In conclusione l'unica cosa da sapere è il nome del programma.
</p>
<pre caption="Installare Lynx">
# <i>emerge lynx</i>
</pre>
</body>
</section>
<section>
<title>Pacchetti masked</title>
<body>
<p>
Sarà possibile installare una qualsiasi combinazione di programmi che siano già stati testati ed aggiornati per macos. Attualmente solo un piccolo numero di programmi non sono masked. Se l'ebuild di un programma non ha ancora la parola chiave ppc-macos aggiunta si otterrà un messaggio simile a questo:
</p>
<pre caption="Esempio di un programma masked">
# <i>emerge -p cowsay</i>
These are the packages that I would merge, in order:
Calculating dependencies
!! all ebuilds that could satisfy "cowsay" have been masked.
!! possible candidates are:
- games-misc/cowsay-3.03 (masked by: missing keyword)
</pre>
</body>
</section>
<section>
<title>Testare dei programmi</title>
<body>
<p>
E' possibile ignorare lo stato di masked di un programma, controllando di persona se è in grado di funzionare. Si sconsiglia agli utenti medi di eseguire queste operazioni, sono invece raccomandate alle persone che intendono aiutare gli sviluppatori testando personalmente dei programmi masked.
Per farlo si deve semplicemente aggiungere la parola chiave "ppc-macos" all'interno dell'ebuild del programma. Per aggiungere la parola chiave "ppc-macos" ad un ebuild basta usare il comando 'ekeyword', fornito all'iterno del pacchetto 'gentoolkit-dev'.
</p>
<pre caption="Installare gentoolkit-dev">
# <i>emerge gentoolkit-dev</i>
</pre>
<pre caption="Aggiungere la parola chiave ppc-macos a un ebuild">
# <i>cd /usr/portage/games-misc/cowsay</i>
# <i>ekeyword ppc-macos cowsay-3.03.ebuild</i>
# <i>ebuid cowsay-3.03.ebuild digest</i>
</pre>
<p>
Se il programma si compila e funziona correttamente è buona norma segnalarlo su <uri link="http://bugs.gentoo.org">Gentoo Bugzilla</uri> (previa registrazione gratuita). La procedura consiste nell'apertura di un bug, assegnandolo al <mail link="osx@gentoo.org">team di sviluppo di Gentoo per Mac OS X</mail>. Nel caso in cui il programma non funzionasse si consiglia comunque di seguire la medesima procedura, specificando gli errori riscontrati (solitamente si ottengono molti messaggi d'errore, si consiglia di copiare tutto il testo a partire dalla prima segnalazione d'errore).
</p>
<p>
Per la maggior parte dei programmi il cui funzionamento richiede X11 è necessario installare il pacchetto di sviluppo di X11. Se non lo si vuole installare durante la procedura d'installazione di XCode si può comunque effettuare l'operazione in seguito: esso è infatti installabile facendo doppio clic sul file <path>X11SDK.pkg</path> contenuto nella directory <path>Packages</path> del cdrom di XCode. Non è ancora possibile fare un emerge del portage usando il relativo ebuild. Per l'installazione di programmi che dipendono dal portage (come gentoolkit) è presente un <uri link="#portage-dep">metodo</uri> per aggirare il problema.
</p>
<warn>
La keyword "macos" è obsoleta e ne è sconsigliato l'uso.
</warn>
</body>
</section>
<section>
<title>Programmi già installati</title>
<body>
<p>
Nel caso sia trovato un programmi già installato da Mac OS X si consiglia di segnalare il fatto aprendo un bug su <uri link="http://bugs.gentoo.org">Gentoo Bugzilla</uri> (previa registrazione gratuita). Sul proprio sistema è possibile aggiungere il nome del programma a <path>/etc/portage/package.provided</path>, in questo modo il portage realizza che il programma è già installato.
</p>
<pre caption="Aggiungere un programma a package.provided">
# <i>mkdir -p /etc/portage/profile/</i>
# <i>echo cat-name/package-x.y.z >> /etc/portage/profile/package.provided</i>
</pre>
<note>
Per vedere un elenco dei programmi che sono già installati dalla propria versione di Mac OS X si può consultare il file <path>/etc/make.profile/package.provided</path>.
</note>
<warn>
La modifica di <path>/etc/make.profile/package.provided</path> non è consigliata, dato che il file è sovrascritto ogni volta che si aggiorna il portage-tree (usando il comando 'emerge --sync').
</warn>
</body>
</section>
</chapter>
<chapter>
<title>Usare il CVS</title>
<section>
<title>Problemi con i file system HFS</title>
<body>
<p>
Gli script nel CVS hanno problemi con i file system che non fanno distinzioni tra maiuscole e minuscole (detti quindi case insensive, l'opposto del case sensity). Si consiglia quindi di creare un file immagine con un file system case sentity in cui provare il portage tree del CVS (si consiglia di riservagli almeno 750 Mb di spazio). Per creare questa immagine di file system si può usare uno dei seguenti comandi:
</p>
<pre caption="Creazione di un file immagine con file system UFS case-sensitive">
<comment>(Sostituire 'gentoo-cvs.dmg' con il nome del file desiderato,</comment>
<comment>e 'Gentoo-CVS' con il nome del volume desiderato.)</comment>
$ <i>hdiutil create -size 750m gentoo-cvs.dmg -volname Gentoo-CVS -fs UFS</i>
</pre>
<pre caption="Creazione di un file immagine con file system HFS+ case-sensitive">
<comment>(Sostituire 'gentoo-cvs.dmg' con il nome del file desiderato,</comment>
<comment>e 'Gentoo-CVS' con il nome del volume desiderato.)</comment>
$ <i>hdiutil create -size 750m gentoo-cvs.dmg -volname Gentoo-CVS -fs HFSX</i>
</pre>
<warn>
Per gli sviluppatori: repoman non funzionerà se ci sono degli spazi ne percorso del portage tree, non è consigliato l'uso di spazi nel nome del volume dell'immagine del CVS.
</warn>
</body>
</section>
</chapter>
<chapter>
<title>Disinstallazione</title>
<section>
<title>Script di disinstallazione</title>
<body>
<p>
Per disinstallare Gentoo per Mac OS X si può usare uno <uri link="http://dev.gentoo.org/~alexander/files/uninstall.pl">script di disinstallazione</uri> che permette di scegliere se rimuovere o meno i programmi installati con il portage di Gentoo per MacOs.
</p>
<pre caption="Uninstalling Gentoo for Mac OS X">
# <i>sudo perl uninstall.pl</i>
</pre>
<note>
Per eseguire lo script di disinstallazione sono richiesti i privilegi di root.
</note>
</body>
</section>
</chapter>
<chapter>
<title>Programmi disponibili</title>
<section>
<title>Panoramica</title>
<body>
<p>
Ci sono molti modi per vedere la lista dei programmi che sono stati marcati con la parola chiave 'ppc-macos', e che sono quindi considerati stabili su Mac OS X. Dato che lo sviluppo del portage per Mac OS X è molto attivo si consiglia di controllare frequentemente questa lista.
</p>
</body>
</section>
<section>
<title>Ebuild recenti per Gentoo Mac OS X</title>
<body>
<p>
Presso il sito <uri link="http://packages.gentoo.org/archs/ppc-macos/stable/">Gentoo Linux
Fresh Mac OS X Ebuilds</uri> (che è fa parte del sito ufficiale <uri link="http://packages.gentoo.org">Fresh Gentoo Ebuilds</uri>) si possono trovare svariate informazioni. Sono infatti disponibili, oltre alle informazioni di ogni ebuild, uno strumento di ricerca (con vari filtri applicabili) ed un <uri link="http://packages.gentoo.org/archs/ppc-macos/stable/gentoo_simple.rss">servizio RSS</uri> che riporta gli ultimi ebuild disponibili (una lista dei possibili file RSS è disponibile presso <uri link="http://packages.gentoo.org/feeds">Fresh Gentoo Ebuilds Feeds List</uri>).
</p>
</body>
</section>
<section>
<title>Gentoo-Portage.com</title>
<body>
<p>
<uri link="http://www.gentoo-portage.com">Gentoo-Portage.com</uri> è un sito non ufficiale che fornisce informazioni relative al portage tree (proprio come <uri link="http://packages.gentoo.org">Fresh Gentoo Ebuilds</uri>), ma soprattutto mostra informazioni ancora più dettagliate per ogni pacchetto (come tutte le sue dipendenze).
</p>
</body>
</section>
</chapter>
<chapter>
<title>Caratteristiche avanzate e problematiche</title>
<section>
<title>Protezione delle collisioni</title>
<body>
<p>
Gentoo per Mac OS X fornisce automaticamente una protezione dalle collisioni che evita al portage di sovrascrivere i file che non ha creato. Questa caratteristica può essere disattivata con la variabile d'ambiente <c>FEATURES="-collision-protect"</c>.
</p>
<pre caption="Consentire al portage di sovrascrivere file appartenenti a Mac OS X">
# <i>FEATURES="-collision-protect" emerge autoconf</i>
</pre>
<warn>
Disattivare la protezione alle collisioni è <e>molto pericoloso</e> e può portare al non funzionamento dell'intero sistema.
</warn>
</body>
</section>
<section>
<title>emerge: command not found</title>
<body>
<p>
Il programma d'installazione di Gentoo per Mac OS X aggiorna il file <path>/etc/profile</path> aggiungendo <path>/usr/lib/portage/bin</path> alla variabile d'ambiente <c>PATH</c>. Per potere digitare <c>emerge ...</c> è necessario digitare <path>source /etc/profile</path> oppure, più semplicemente, uscire dalla shell e rientrarvi. Solo in questi modi sarà possibile eseguire tutti i programmi basilari del portage.
</p>
</body>
</section>
<section>
<title>Errori con <library>.a</title>
<body>
<p>
Mentre si installano i file di <path><library>.a</path>, è eseguito runlib per garantire che tutti i riferimenti alla libreria siano nel percorso appropriato. Quando un ebuild esegue il <c>make install</c>, tutti i files sono installati in <path>/var/tmp/portage<package>/image</path> piuttosto che nel file system principale (livefs). Questo significa che le librerie installate da un programma fanno riferimento a dei percorsi sbagliati. Questo problema sussiste solo con il kernel darwin e con i sui file <path><library>.a</path>, attualmente il team di Gentoo per Mac OS X sta cercando una soluzione al problema.
</p>
<p>
Secondo la politica di sviluppo di Gentoo per Mac OS X, gli ebuild che installano librerie devono essere analizzati accuratamente prima di ricevere la parola chiave 'ppc-macos'. La maggior parte delle volte se una libreria non funziona ciò è dovuto a dei percorsi di riferimento errati. Per gli utenti più esperti ed intraprendenti c'è un piccolo trucco che risolve il problema: il comando <c>ranlib</c>. Esso infatti si preoccupa di sistemare, tra le altre cose, anche i riferimenti errati illustrati precedentemente.
</p>
<pre caption="Usare ranlib per fare funzionare una libreria corrotta">
<comment>(Sostituire '/usr/lib/libjpeg.a' con la libreria corrotta)</comment>
# <i>ranlib /usr/lib/libjpeg.a</i>
</pre>
</body>
</section>
<section id="portage-dep">
<title>Le dipendenze del portage</title>
<body>
<p>
Alcuni programmi per essere installati richiedono la presenza del portage. Attualmente c'è un problema che impedisce al portage di riconoscersi come programma installato. Mentre il team di sviluppo di Gentoo per Mac OS X lavora per risolvere questo problema, c'è una soluzione temporanea. Infatti è possibile fare l'emerge di un programma senza installare le sue dipendenze; questo permette quindi di risolvere il problema indicato precedentemente. Si tratta però di un'operazione sconsigliata per qualsiasi altra dipendenza che non sia il portage.
</p>
<pre caption="Ignorare le dipendenze durante un emerge">
# <i>emerge --nodeps gentoolkit</i>
</pre>
</body>
</section>
</chapter>
</guide>
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2005-07-19 15:43 Enrico Morelli
2005-07-20 22:05 ` Stefano Rossi
0 siblings, 1 reply; 39+ messages in thread
From: Enrico Morelli @ 2005-07-19 15:43 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 750 bytes --]
Doc Ver Rev
---------------------------------------------
devfs-guide 0.5 1.11
faq 3.06 1.95
ldap-howto 0.18.2 1.27
ati-faq 1.0.73 1.30
hb-portage-files 1.6 1.9
--
-------------------------------------------------------------------
(o_
(o_ //\ Coltivate Linux che tanto Windows si pianta da solo.
(/)_ V_/_
+------------------------------------------------------------------+
| ENRICO MORELLI | email: morelli@CERM.UNIFI.IT |
| * * * * | phone: +39 055 4574269 |
| University of Florence | fax : +39 055 4574253 |
| CERM - via Sacconi, 6 - 50019 Sesto Fiorentino (FI) - ITALY |
+------------------------------------------------------------------+
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: devfs-guide.xml --]
[-- Type: text/xml; name="devfs-guide.xml", Size: 19309 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/devfs-guide.html">
<title>Device File System Guide</title>
<author title="Autore">
<mail link="swift@gentoo.org">Sven Vermeulen</mail>
</author>
<author title="Revisione">
<mail link="seemant@gentoo.org">Seemant Kulleen</mail>
</author>
<author title="Traduzione">
<mail link="emorelli@gentoo.it">Enrico Morelli</mail>
</author>
<abstract>
In questo documento troverete informazioni su cos'è
devfs e sul suo utilizzo .
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license />
<version>0.5</version>
<date>18 Luglio 2005</date>
<chapter>
<title>Cos'è devfs?</title>
<section>
<title>I (bei?) vecchi tempi</title>
<body>
<warn> devfs è <e>obsoleto</e> e potrà essere rimosso dall'albero 2.6
del kernel stabile. Utenti di kernel 2.6 sono avvisati di passare a udev. Per
maggiori informazioni fare riferimento alla <uri link="/doc/it/udev-guide.xml">Guida Gentoo a udev</uri>
</warn>
<p>
Implementazioni tradizionali di Linux provvedono ai loro
utenti un percorso astratto dei dispositivi, chiamato <path>/dev</path>.
In questa directory, gli utenti possono trovare i <e>device nodes</e>,
file speciali che rappresentano le periferiche presenti nei
loro sistemi. Per intenderci, <path>/dev/hda</path> rappresenta
la prima periferica IDE del nostro sistema. Attraverso questi
file di periferica, gli utenti possono creare programmi che interagiscono
con l'hardware come se fosse un file regolare invece che attraverso
speciali API.
</p>
<p>
I file di periferica sono suddivisi in due gruppi chiamati
periferiche a <e>caratteri</e> (character devices) e periferiche a <e>blocchi</e> (block devices). Il primo gruppo racchiude l'hardware la cui
scrittura/lettura non è bufferizzata. Il secondo gruppo, quindi,
racchiude invece l'hardware la cui scrittura/lettura è bufferizzata.
Le periferiche di ambedue i gruppi possono leggere un carattere alla volta o
in blocchi. Per questo, la nomenclatura potrebbe confondere ed infatti
non è corretta.
</p>
<p>
Se date un'occhiata a certi file di periferica, potreste trovare
qualcosa del genere:
</p>
<pre caption = "Controllare le informazioni di un file di periferica">
# <i>ls -l /dev/hda</i>
brw-rw---- 1 root disk 3, 0 Jul 5 2000 /dev/hda
</pre>
<p>
Nell'esempio precedente abbiamo visto che <path>/dev/hda</path>
è una periferica a blocchi (block device). Rivestono molta
importanza i due numeri speciali assegnati al file di periferica:
<b>3,0</b>. Questa coppia di numeri è chiamata
<e>major-minor</e> ed è usata dal kernel per mappare un
file di periferica al dispositivo reale. Il major corrisponde a
certi dispositivi mentre il minor a sotto dispositivi.
</p>
<p>
Due esempi sono <path>/dev/hda4</path> e <path>/dev/tty5</path>.
Il primo file di periferica corrisponde alla quarta partizione della
prima periferica IDE. La sua coppia major-minor è <path>3, 4</path>.
In altre parole, il minor corrisponde alla partizione dove il
major corrisponde alla periferica. Il secondo esempio ha <path>4, 5</path> come coppia major-minor.
In questo caso, il major corrisponde ad un terminal driver, mentre
il minor corrisponde al numero del terminale (in questo caso, al
quinto terminale).
</p>
</body>
</section>
<section>
<title>I problemi</title>
<body>
<p>
Se fate un rapido controllo in <path>/dev</path>, troverete
che sono listate non solo le vostre periferiche, ma <e>tutte</e>
le possibili periferiche voi possiate immaginare. In altre parole,
sono presenti file di periferica anche per i dispositivi
non presenti sul vostro sistema.
Il controllo di un numero così elevato di gruppi di periferiche è quanto mai
difficoltoso. Immaginate di dover cambiare i permessi di tutti i
file di periferica che hanno un corrispondente dispositivo sul vostro sistema,
e lasciare il resto invariato.
</p>
<p>
Quando aggiungete nuovo hardware al vostro sistema che non ha
un file di periferica per il nuovo dispositivo, dovrete crearne uno. Utenti esperti sanno che
questo può essere fatto con <c>./MAKEDEV</c> all'interno
della directory <path>/dev</path>, ma dovete conoscere quale dispositivo creare.
</p>
<p>
Quando avete programmi che interagiscono con hardware usando
i file di periferica, non potete avere la partizione principale montata
in sola lettura, mentre non c'è ulteriore necessità di averla
montata in lettura-scrittura. E non potete avere <path>/dev</path>
su una partizione separata, dato che <c>mount</c> necessita
di <path>/dev</path> per montare le partizioni.
</p>
</body>
</section>
<section>
<title>Le soluzioni</title>
<body>
<p>
Come potete immaginare, gli sviluppatori del kernel hanno
trovato un certo numero di soluzioni ai summenzionati problemi.
Comunque molte di queste presentano altri difetti come descritto in
<uri>http://www.atnf.csiro.au/people/rgooch/linux/docs/devfs.html#faq-why</uri>.
Non faremo una panoramica su queste implementazioni, ma ci
focalizzeremo su quella che è diventata parte dei sorgenti
ufficiali del kernel: devfs.
</p>
</body>
</section>
<section>
<title>devfs vince completamente</title>
<body>
<p>
devfs risolve tutti i problemi elencati. Provvede solo
le periferiche esistenti, aggiunge nuovi nodi quando trova
nuove periferiche e rende possibile montare il root
filesystem in sola lettura. Risolve anche altri problemi
che non abbiamo discusso perché di minore interesse per
gli utenti.
</p>
<p>
Inoltre, con devfs non dobbiamo preoccuparci della
coppia major/minor. E' ancora supportata (per
compatibilità all'indietro), ma non è necessaria.
Questo rende possibile per Linux il supporto di
ancora più periferiche, dato che non ci sono più
limiti (i numeri hanno sempre dei confini :)
</p>
<p>
Anche devfs ha i propri problemi che per gli utenti finali
non sono realmente visibili, ma lo sono per i manutentori
del kernel. E per loro sono talmente gravi che hanno marcato
devfs come <e>obsoleto</e> in favore di <uri link="udev-guide.xml">udev</uri>
che Gentoo supporta e usa come default su molte architetture a partire dalla
release 2005.0 usando kernel della serie 2.6.
</p>
<p>
Per avere maggiori informazioni sul perché devfs è marcato come obsoleto,
potete leggere queste
<uri link="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ">udev
FAQ</uri> e il documento <uri
link="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs">udev contro devfs</uri>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Navigare attraverso l'albero dei device</title>
<section>
<title>Directory</title>
<body>
<p>
Una delle prime cose che potreste notare è che devfs usa
directory per raggruppare insieme le periferiche.
Questo migliora la leggibilità dato che tutte le periferiche
dello stesso tipo occupano la stessa directory.
</p>
<p>
Per intenderci, tutte le periferiche IDE sono all'interno
della directory <path>/dev/ide/</path>, così come tutte
le periferiche SCSI sono in <path>/dev/scsi/</path>.
Dischi SCSI e IDE sono visti nello stesso modo, il che
significa che entrambe hanno la stessa struttura di
sottodirectory.
</p>
<p>
Dischi IDE e SCSI sono controllati da un adattatore
(integrato su scheda madre o su schede separate),
chiamato <e>host</e>.
Ogni adattatore può avere diversi canali. Un canale
è chiamato <e>bus</e>. Su ogni canale, è possibile
avere diversi ID. Ogni ID identifica un disco.
Questo ID è chiamato <e>target</e>. Alcuni device
SCSI possono avere lun multipli (<e>Logial Unit Numbers</e>),
device che possono controllare multipli media simultaneamente
(hi-end tapedrive). Voi avrete principalmente
un singolo lun, <path>lun0/</path>.
</p>
<p>
Così, mentre prima avevamo <path>/dev/hda4</path>, ora
abbiamo <path>/dev/ide/host0/bus0/target0/lun0/part4</path>.
Questo è molto più semplice... no, non discutete con me...
<e>è</e> semplice...
</p>
<note>
Potete anche usare una nomenclatura più Unix-like per
gli hard disk, come <path>c0b0t0u0p2</path>. Possono
essere trovati in <path>/dev/ide/hd</path>, <path>/dev/scsi/hd</path>, ecc.
</note>
<p>
Per darvi un'idea delle directory, questa è una lista
delle directory che ho sul mio portatile:
</p>
<pre caption = "Directory in /dev">
cdroms/ cpu/ discs/ floppy/
ide/ input/ loop/ misc/
netlink/ printers/ pts/ pty/
scsi/ sg/ shm/ sound/
sr/ usb/ vc/ vcc/
</pre>
</body>
</section>
<section>
<title>Compatibilità all'indietro usando devfs</title>
<body>
<p>
Usare questo nuovo schema sembra divertente, ma alcuni tools
e programmi continuano ad usare il vecchio schema.
Per assicurare la compatibilità è stato creato <c>devfsd</c>.
Questo daemon crea link simbolici con i vecchi nomi che puntano
ai nuovi file di periferica.
</p>
<pre caption = "Link simbolico">
$ <i>ls -l /dev/hda4</i>
lr-xr-xr-x 1 root root 33 Aug 25 12:08 /dev/hda4 -> ide/host0/bus0/target0/lun0/part4
</pre>
<p>
Con <c>devfsd</c>, potete anche configurare i permessi, creare
nuovi device file, definire azioni, ecc. Tutto questo è descritto
nel prossimo capitolo.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Amministrare l'albero dei dispositivi</title>
<section>
<title>Riavvio di devfsd</title>
<body>
<p>
Quando modificate il file <path>/etc/devfsd.conf</path>,
e volete forzare queste modifiche nel vostro sistema,
non dovete riavviare la macchina. A seconda delle vostre
necessità, potete usare uno dei seguenti segnali:
</p>
<p>
<b>SIGHUP</b> forzerà <c>devfsd</c> a rileggere il file
di configurazione, ricaricare gli oggetti condivisi e generare
il REGISTER degli eventi per ogni nodo in vita
nell'albero dei dispositivi.
</p>
<p>
<b>SIGUSR1</b> come il precedente, ma non verrà rigenerato
il REGISTER degli eventi.
</p>
<p>
Per inviare un segnale, usate semplicemente <c>kill</c>
o <c>killall</c>:
</p>
<pre caption = "Inviare un segnale SIGHUP a devfsd">
# <i>kill -s SIGHUP `pidof devfsd`</i>
<comment>o</comment>
# <i>killall -s SIGHUP devfsd</i>
</pre>
</body>
</section>
<section>
<title>Rimuovere la compatibilità attraverso i symlink</title>
<body>
<warn>
Attualmente, Gentoo non può vivere senza la compatibilità
attraverso i symlink.
</warn>
<p>
Se volete rimuovere la compatibilità ottenuta con la creazione
dei numerosi symlink in <path>/dev</path> dal vostro
sistema Gentoo (dato che Gentoo attiva la compatibilità di default),
editate <path>/etc/devfsd.conf</path> e rimuovete le seguenti
due righe:
</p>
<pre caption = "/etc/devfsd.conf per la compatibilità all'indietro">
<comment># Commentate le due righr che seguono per rimuovere i link simbolici</comment>
REGISTER .* MKOLDCOMPAT
UNREGISTER .* RMOLDCOMPAT
</pre>
<p>
Dovrete quindi riavviare il vostro sistema per rendere attive
le modifiche.
</p>
</body>
</section>
<section>
<title>Rimuovere la funzionalità di auto caricamento</title>
<body>
<p>
Quando caricate un modulo, devfs creerà automaticamente un
file di periferica. Se non volete questo comportamento, rimuovete
la seguente riga da <path>/etc/devfsd.conf</path>:
</p>
<pre caption = "/etc/devfsd.conf, funzionalità autoload">
LOOKUP .* MODLOAD
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Punti riguardanti i permessi</title>
<section>
<title>Impostare/cambiare i permessi con devfsd</title>
<body>
<note>
Queste istruzioni sono valide finché pam_console è disabilitato
in
<path>/etc/pam.d/system-auth</path>. Se pam_console viene abilitato,
PAM ha l'ultima parola sui permessi.
</note>
<p>
Se realmente volete impostare i permessi attraverso
<path>/etc/devfsd.conf</path>, usate la sintassi
del seguente esempio:
</p>
<pre caption = "Permessi in /etc/devfsd.conf">
REGISTER ^cdroms/.* PERMISSIONS root.cdrom 0660
</pre>
<p>
Il secondo campo è il gruppo di dispositivi, partendo da <path>/dev</path>.
E' un'espressione regolare attraverso la quale potete
selezionare diversi file di periferica con una sola regola.
</p>
<p>
Il quarto campo è il proprietario del file di periferica.
Il quinto campo contiene i permessi del file di periferica.
</p>
</body>
</section>
<section>
<title>Impostare i permessi manualmente e farli salvare a devfsd</title>
<body>
<p>
Questo è ciò che Gentoo fa di default: se
cambiate proprietario (con <c>chown</c>) e permessi
(con <c>chmod</c>) di alcuni file di periferica, <c>devfsd</c>
salverà le informazioni in modo tale da renderle persistenti
ad ogni riavvio del sistema. Questo perché il file <path>/etc/devfsd.conf</path>
contiene le seguenti righe:
</p>
<pre caption = "/etc/devfsd.conf per il salvataggio dei permessi">
REGISTER ^pt[sy]/.* IGNORE
CHANGE ^pt[sy]/.* IGNORE
CREATE ^pt[sy]/.* IGNORE
DELETE ^pt[sy] IGNORE
REGISTER ^log IGNORE
CHANGE ^log IGNORE
CREATE ^log IGNORE
DELETE ^log IGNORE
REGISTER .* COPY /lib/dev-state/$devname $devpath
CHANGE .* COPY $devpath /lib/dev-state/$devname
CREATE .* COPY $devpath /lib/dev-state/$devname
DELETE .* CFUNCTION GLOBAL unlink
/lib/dev-state/$devname
RESTORE /lib/dev-state
</pre>
<p>
In altre parole, le modifiche ai file di periferica sono copiate
in <path>/lib/dev-state</path> non appena avviene il cambiamento
e ripristinate in <path>/dev</path> all'avvio
del sistema.
</p>
<p>
Un'altra possibilità è di montare <path>/lib/dev-state</path>
in <path>/dev</path> al momento dell'avvio. Per fare questo
dovete essere sicuri che devfs non venga montato automaticamente
(il che significa che dovrete ricompilare il kernel) e
che esista <path>/dev/console</path>.
Quindi, da qualche parte all'inizio degli script di avvio
del vostro sistema, dovete mettere:
</p>
<pre caption = "Montare /lib/dev-state in /dev">
mount --bind /dev /lib/dev-state
mount -t devfs none /dev
devfsd /dev
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Risorse</title>
<section>
<body>
<p>
Per maggiori informazioni su devfs, controllate le seguenti
risorse.
</p>
<p>
Le manpage di devfsd.conf spiegano la sintassi
del file <path>/etc/devfsd.conf</path>.
Per vederle, digitate <c>man devfsd.conf</c>.
</p>
<p>
Le <uri link="http://www.atnf.csiro.au/people/rgooch/linux/docs/devfs.html">devfs FAQ</uri> spiegano tutto ciò che riguarda devfs.
Contengono anche informazioni sulla struttura interna
dei devfs e come i driver possono supportare devfs.
</p>
<p>
Su <uri link="http://www.linuxjournal.com">LinuxJournal</uri>
c'è un interessante articolo su <uri
link="http://www.linuxjournal.com/article.php?sid=6035">devfs for
Management and Administration</uri>.
</p>
<p>
Daniel Robbins ha scritto una serie di articoli per
IBM's DeveloperWorks sui filesystem avanzati.
Tre di questi riguardano devfs:
</p>
<ul>
<li><uri
link="http://www-106.ibm.com/developerworks/linux/library/l-fs4/">Introduction
to devfs</uri></li>
<li><uri
link="http://www-106.ibm.com/developerworks/linux/library/l-fs5/">Setting
up devfs</uri></li>
<li><uri
link="http://www-106.ibm.com/developerworks/linux/library/l-fs6/">Implementing
devfs</uri></li>
</ul>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: faq.xml --]
[-- Type: text/xml; name="faq.xml", Size: 31825 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/it/faq.xml" lang="it">
<title>Gentoo Linux risposte a domande frequenti</title>
<author title="Autore"><mail link="drobbins@gentoo.org">Daniel Robbins</mail></author>
<author title="Revisione">Colin Morey</author>
<author title="Redazione"><mail link="zhen@gentoo.org">John P. Davis</mail></author>
<author title="Redazione"><mail link="stocke2@gentoo.org">Eric Stockbridge</mail></author>
<author title="Redazione"><mail link="zhware@gentoo.org">Stoyan Zhekov</mail></author>
<author title="Redazione"><mail link="carl@gentoo.org">Carl Anderson</mail></author>
<author title="Redazione"><mail link="peesh@gentoo.org">Jorge Paulo</mail></author>
<author title="Redazione"><mail link="swift@gentoo.org">Sven Vermeulen</mail></author>
<author title="Redazione">
<mail link="bennyc@gentoo.org">Benny Chuang</mail>
</author>
<author title="Redazione">
<mail link="smithj@gentoo.org">Jonathan Smith</mail>
</author>
<author title="Traduzione"><mail link="emorelli@gentoo.it">Enrico Morelli</mail></author>
<abstract>
Queste FAQ sono una collezione di domande e risposte
estratte dalla mailing list gentoo-dev e dal canale IRC.
Se avete altre domande (o risposte!) da aggiungere, contattate
l'autore o un membro del gruppo documentazione.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<license/>
<version>3.0.6</version>
<date>14 Luglio 2005</date>
<chapter>
<title>Domande sulle caratteristiche</title>
<section>
<title>Per iniziare</title>
<body>
<p>
Facciamo notare che le risposte a molte di queste domande si trovano nella documentazione ufficiale di Gentoo. Questa è semplicemente una lista delle domande che vengono poste più frequentemente. Si prega di leggere la documentazione e/o le pagine
di manuale per ottenere una maggiore comprensione di come funzionano Gentoo e
GNU/Linux, e per avere le risposte alle domande che non si trovano in questa guida.
</p>
<ul>
<li><uri link="#pronunciation">Qual è la pronuncia Gentoo, e cosa significa?</uri></li>
<li><uri link="#differences">Cosa rende Gentoo differente?</uri></li>
</ul>
</body>
</section>
<section>
<title>Installazione</title>
<body>
<ul>
<li><uri link="#optimizations">Il sistema sembra instabile usando ottimizzazioni come
"-O9 -ffast-math -fomit-frame-pointer".</uri></li>
<li><uri link="#password">Come cambiare la password di root (e di fatto per ogni altro utente)</uri></li>
<li><uri link="#useradd">Come aggiungere un utente</uri></li>
<li><uri link="#su">Come può un utente diventare (su [switch user]) root</uri></li>
<li><uri link="#devfs">Come disabilitare devfs</uri></li>
<li><uri link="#upgrade">Aggiornare Gentoo da una release ad un'altra senza reinstallare</uri></li>
<li><uri link="#bootrescue">Il kernel non si avvia in modo appropriato</uri></li>
<li><uri link="#proxy">Cosa fare se il proxy richiede un'autenticazione</uri></li>
<li>
<uri link="#isoburning">Come masterizzare un file ISO</uri>
</li>
<li>
<uri link="#cpus">Quale CD/Stage usare per la propria CPU</uri>
</li>
</ul>
</body>
</section>
<section>
<title>Amministrazione dei pacchetti</title>
<body>
<ul>
<li><uri link="#ebuild">Qual è il formato dei pacchetti</uri></li>
<li><uri link="#configure">Eseguire autonomamente il passo ./configure nella compilazione di un pacchetto</uri></li>
<li><uri link="#firewall">Usare emerge da una rete protetta da un firewall</uri></li>
<li><uri link="#nosync">Cosa fare se rsync non funziona</uri></li>
<li><uri link="#manualdownload">Per connessioni lente: scaricare i sorgenti e aggiungerli in seguito al sistema</uri></li>
<li><uri link="#distfiles">I sorgenti .tar.gz del software installato rimangono
in /usr/portage/distfiles usando spazio prezioso. E' sicuro cancellare questi files?</uri></li>
<li><uri link="#tmpportage">Cosa c'è in /var/tmp/portage. E' sicuro cancellare i file e le directory in /var/tmp/portage?</uri></li>
</ul>
</body>
</section>
<section>
<title>Utilizzo</title>
<body>
<ul>
<li><uri link="#intkeyboard">Configurare un International Keyboard Layout.</uri></li>
<li><uri link="#rootdns">La risoluzione dei nomi (DNS) funziona solo per l'utente root.</uri></li>
<li><uri link="#crontab">Usare crontab con un utente non root.</uri></li>
<li><uri link="#numlock">Come avere numlock attivo ad ogni avvio del computer.</uri></li>
<li><uri link="#clear">Come avere il terminale pulito dopo ogni operazione di logout</uri></li>
<li>
<uri link="#suinx">Non si riescono ad eseguire applicazioni X come root dopo un comado su.
</uri>
</li>
</ul>
</body>
</section>
<section>
<title>Manutenzione</title>
<body>
<ul>
<li><uri link="#filecorruption">Come risolvere un problema di corruzione su filesystem ReiserFS.</uri></li>
</ul>
</body>
</section>
<section>
<title>Sviluppo</title>
<body>
<ul>
<li><uri link="#reportbugs">Come riportare un bug.</uri></li>
<li><uri link="#releases">Quanto spesso cambiano le release.</uri></li>
<li><uri link="#beeping">Lo speaker del computer suona come impazzito. Come disabilitare i beep da console.</uri></li>
</ul>
</body>
</section>
<section>
<title>Risorse</title>
<body>
<ul>
<li><uri link="#resources">Dove trovare maggiori informazioni su Gentoo Linux.</uri></li>
<li><uri link="#buycd">Come acquistare un CD di Gentoo Linux.</uri></li>
<li><uri link="#help">Non ho trovato una risposta alla mia domanda.</uri></li>
</ul>
</body>
</section>
</chapter>
<chapter>
<title>Per iniziare</title>
<section id="pronunciation">
<title>Significato di Gentoo e pronuncia</title>
<body>
<p>
<e>Gentoo</e> è un piccolo e veloce
pinguino, la pronuncia è "gen-too" (la "g"
in "gentoo" è morbida come in "gentile").
Il nome scientifico del pinguino è <e>Pygoscelis papua</e>, e
il nome Gentoo gli è stato dato dagli abitanti delle Isole
Falkland (Isole Malvinas).
</p>
</body>
</section>
<section id="differences">
<title>Cosa rende Gentoo differente</title>
<body>
<p>
Gentoo usa un sistema di porting BSD-like chiamato
<uri link="/proj/en/portage">Portage</uri>.
Il Portage è un sistema per la gestione di pacchetti
software che permette una grande flessibilità
per l'installazione e la manutenzione di un sistema Gentoo.
Fornisce inoltre, il supporto per opzioni da utilizzare
in fase di compilazione dei pacchetti attraverso
<uri link="/doc/it/handbook/handbook.xml?part=2&chap=2">flag USE</uri>,
dipendenze condizionali, pre-installazioni, installazioni sicure
(attraverso sandboxing) e disinstallazione di software, profili di sistema,
<uri link="/doc/it/handbook/handbook.xml?part=3&chap=2#doc_chap1">
protezione dei file di configurazione </uri> e diverse altre
<uri link="/doc/it/handbook/handbook.xml?part=2&chap=1">caratteristiche.</uri>
</p>
<p>
Con Gentoo è possibile costruire un intero sistema dai sorgenti
usando ottimizzazioni predefinite. L'utente ha inoltre il controllo
completo su quali pacchetti installare e quali no.
Gentoo fornisce anche numerose scelte sul tipo di installazione
così da far avere il sistema che più soddisfa le esigenze
dell'utente. Ecco perché Gentoo è chiamata <e>meta distribuzione</e>.
</p>
<p>
Gentoo ha un attivo e rapido sviluppo. Non solo gli <e>ebuild</e>
(il formato dei pacchetti di Gentoo) ma anche l'intera distribuzione
viene migliorata e aggiornata molto rapidamente.
Patch per i pacchetti sono velocemente integrate nell'albero principale,
la documentazione è aggiornata su base giornaliera, nuove caratteristiche
sono aggiunte frequentemente al portage, le release si succedono
velocemente.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Installazione</title>
<section id="optimizations">
<title>Si nota una certa instabilità usando ottimizzazioni come
"-O9 -ffast-math -fomit-frame-pointer".</title>
<body>
<p>
L'uso di ottimizzazioni maggiori di <c>-O3</c> non devono essere
usate, dato che non sono supportate dalla versione corrente di gcc.
Ottimizzazioni molto aggressive causano qualche volta, l'indirizzamento
del codice assembler in punti dove non farà più la stessa cosa.
</p>
<p>Prima di riportare un bug, compilare usando CFLAGS posto a <c>-O2 -march=<your_arch></c>.
</p>
</body>
</section>
<section id="password">
<title>Come cambiare la password di root (e di fatto ad ogni altro utente)</title>
<body>
<p>
Usare <c>passwd</c> per cambiare la password dell'utente attualmente in uso. Come utente root è possibile cambiare la password di qualsiasi utente usando il comando <c>passwd username</c>.
Per conoscere ulteriori opzioni, usare il comando <c>man passwd</c>.
</p>
</body>
</section>
<section id="useradd">
<title>Come aggiungere un utente</title>
<body>
<p>
Il comando <c>adduser username</c> aggiungerà un utente chiamato "username". Comunque, questo metodo non darà all'utente molti dei privilegi
che si desidera, per questo è preferibile il seguente comando:
</p>
<pre caption="Usare useradd">
# <i>useradd -m -G users,audio,wheel username</i>
</pre>
<p>
Questo comando creerà un utente chiamato "username",
L'opzione <c>audio</c> aggiungerà l'utente al gruppo <c>audio</c>
dandogli la possibilità
di usare le periferiche collegate al suono, L'opzione <c>wheel</c> aggiungerà l'utente al gruppo <c>wheel</c>
permettendogli di eseguire il comando <c>su</c> per ottenere i privilegi dell'utente <c>root</c>.
</p>
<p>
E' possibile anche installare <c>superadduser</c> usando <c>emerge superadduser</c> e quindi digitare <c>superadduser gentoo</c> per aggiungere
un utente chiamato gentoo. Basta seguire le istruzioni date
da <c>superadduser</c>.
</p>
</body>
</section>
<section id="su">
<title>Come può un utente diventare root</title>
<body>
<p>
Per ragioni di sicurezza, gli utenti possono diventare
(o usare il comando <c>su</c>) root solo facendo parte del gruppo
<e>wheel</e>. Per aggiungere uno <c>username</c> al gruppo <e>wheel</e>
eseguite il seguente comando come root:
</p>
<pre caption="Aggiungere un utente al gruppo wheel">
# <i>gpasswd -a username wheel</i>
</pre>
</body>
</section>
<section id="devfs">
<title>Come disabilitare devfs</title>
<body>
<p>
Per funzionare correttamente, Gentoo richiede il supporto nel kernel di devfs o udev. Con l'avvento della serie stabile 2.6 del kernel su molte architetture, viene raccomandato udev.
Si raccomanda la lettura della
<uri link="/doc/it/udev-guide.xml">Guida a udev</uri> per informazioni su come configurare udev.
</p>
</body>
</section>
<section id="upgrade">
<title>Aggiornare Gentoo da una release ad un'altra senza reinstallare</title>
<body>
<p>
Di fatto non ci sono differenze tra le varie release dopo l'installazione.
Gentoo 1.4 e successive sono basate sulle <c>glibc-2.3.x</c>.
Per questo eseguendo il comando <c>emerge --sync; emerge -uDN world</c>,
si allineerà rapidamente l'intero sistema all'ultima release di Gentoo.
La vera differenza tra le varie release stà solo nella
fase di installazione e nei pacchetti precompilati.
Si legga la <uri link="/doc/it/gentoo-upgrading.xml">Guida all'aggiornamento</uri> per maggiori informazioni sui profili e sul ruolo che rivestono nell'aggiornamento.
</p>
</body>
</section>
<section id="bootrescue">
<title>Il kernel non si avvia in modo appropriato</title>
<body>
<p>
Non è necessario rifare ogni passo dell'installazione, ma solo
quelli associati al kernel. Supponiamo si aver installato
Gentoo in <path>/dev/hda1</path> (/boot) e <path>/dev/hda3</path> (/) con
<path>/dev/hda2</path> come swap space:
</p>
<pre caption="Riconfigurazione del kernel">
<comment>Avviare dal LiveCD e aspettare il prompt</comment>
<comment>Quindi montare tutte le partizioni:</comment>
# <i>mount /dev/hda3 /mnt/gentoo</i>
# <i>mount /dev/hda1 /mnt/gentoo/boot</i>
# <i>swapon /dev/hda2</i>
# <i>mount -t proc none /mnt/gentoo/proc</i>
<comment>Fare il chroot e configurare il kernel</comment>
# <i>chroot /mnt/gentoo /bin/bash</i>
# <i>env-update && source /etc/profile</i>
# <i>cd /usr/src/linux</i>
# <i>make menuconfig</i>
<comment>Ora (de)selezioniamo quello che (de)selezionato in modo errato al
</comment>
<comment>tentativo precedente. Uscire salvando la configurazione corrente
e ricompilare il kernel:</comment>
# <i>make && make modules_install</i>
<comment>Copiare il nuovo bzImage sovrascrivendo la versione precedente:</comment>
# <i>cp arch/i386/boot/bzImage /boot</i>
<comment>Se usate LILO, rieseguire lilo -- gli utenti GRUB dovrebbe saltare questo passo:</comment>
# <i>/sbin/lilo</i>
<comment>Uscire dal chroot e riavviare.</comment>
# <i>exit</i>
# <i>umount /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo</i>
# <i>reboot</i>
</pre>
<p>
Se d'altra parte il problema è legato alla configurazione del bootloader,
seguire gli stessi passi, ma invece di configurare/compilare il kernel
occorre riconfigurare il bootloader (la ricompilazione non
è necessaria).
</p>
</body>
</section>
<section id="proxy">
<title>Il proxy richiede un'autenticazione</title>
<body>
<p>
Per automatizzare il procedimento, occorre definirlo in
<path>/etc/make.conf</path>:
</p>
<pre caption = "/etc/make.conf">
HTTP_PROXY="http://username:password@yourproxybox.org:portnumber"
FTP_PROXY="ftp://username:password@yourproxybox.org:portnumber"
RSYNC_PROXY="rsync://username:password@yourproxybox.server:portnumber"
</pre>
</body>
</section>
<section id="isoburning">
<title>Come masterizzare un file ISO</title>
<body>
<p>
Sarà necessario masterizzare il file nella cosiddetta modalità <e>raw</e>. Questo significa che <e>non</e> si dovrebbe mettere il file sul CD, ma interpretare
il file come un intero CD.
</p>
<p>
Ci sono molti strumenti per masterizzare CD e coprirli tutti diventerebbe un problema infinito. Per cui verrano esaminati alcuni degli strumenti più popolari.
</p>
<ul>
<li>
Usando EasyCD Creator selezionare <c>File</c>, <c>Record CD from CD image</c> e cambiare <c>Files of type</c> in <c>ISO image file</c>.
Collocare il file ISO e cliccare su <c>Open</c>.
Al termine, cliccare su <c>Start recording</c> per masterizzare
l'immagine ISO.
</li>
<li>
Usando Nero Burning ROM, cancellare il wizard che appare automaticamente e selezionare <c>Burn Image</c> dal menu <c>File</c>. Selezionare
l'immagine da masterizzare e cliccare su <c>Open</c>.
Al termine cliccare sul pulsante <c>Burn</c> e l'immagine verrà
scritta sul CD.
</li>
<li>
Usando cdrecord, digitare semplicemente <c>cdrecord dev=/dev/hdc</c>
(sostituire a <path>/dev/hdc</path> il percorso della periferica
che identifica il masterizzatore) seguito dal percorso del file ISO.
</li>
<li>
Usando K3B, selezionare <c>Tools</c> > <c>CD</c> > <c>Burn CD Image</c>.
Al termine collocate il file ISO all'interno dell'area 'Image to Burn' e cliccare su <c>Start</c>.
</li>
<li>
Usando Mac OS X Panther, lanciare <c>Disk Utility</c> da
<path>Applications/Utilities</path>, selezionare <c>Open</c> dal menu
<c>Images</c>, selezionare l'immagine montata nella finestra principale
e selezionare <c>Burn</c> nel menu <c>Images</c>.
</li>
<li>
Usando Mac OS X Jaguar, lanciare <c>Disk Copy</c> da
<path>Applications/Utilities</path>, selezionare <c>Burn Image</c>
dal menu <c>File</c>, selezionare la ISO e cliccare il pulsante <c>Burn</c>.
</li>
</ul>
</body>
</section>
<section id="cpus">
<title>Quale CD/Stage usare per la propria CPU</title>
<body>
<p>
Prima di tutto occorre conoscere la CPU in uso. Supponiamo sia un Pentium-M.
Ci sarà bisogno di sapere che CPU è, le istruzioni corrette, la compatibilità. Per questo, consultare il sito web del produttore della CPU, o
<uri link="http://www.google.com">Google</uri>.
</p>
<p>
Se non si è sicuri, utilizzare un file CD/stage "inferiore", per esempio
uno per i686 o anche uno per x86 generico (o l'equivalente alla vostra architettura).
Questo darà la certezza che il sistema funzionerà anche se non sarà veloce
come con l'uso di ottimizzazioni.
</p>
<p>
Se si sta partendo da uno Stage 1, si noti che esistono molte più opzioni
di quelle usate da Gentoo per costruire gli stage binari.
Si legga la <uri
link="http://gcc.gnu.org/onlinedocs/gcc-3.4.4/gcc/i386-and-x86_002d64-Options.html#i386-and-x86_002d64-Options">guida a gcc</uri> per la configurazione
di <c>-march</c>.
</body>
</section>
</chapter>
<chapter>
<title>Amministrazione dei Pacchetti</title>
<section id="ebuilds">
<title>Formato dei pacchetti</title>
<body>
<p>
I pacchetti non vengono "memorizzati" come entità indipendenti. Gentoo, invece, fornisce un
set di script che possono risolvere dipendenze, scaricare codice sorgente e compilare una versione del pacchetto per soddisfare le necessità dell'utente.
Generalmente si costruiscono pacchetti binari solo per le release e gli snapshot. L'<uri link="/proj/en/devrel/handbook/handbook.xml?part=2&chap=1">Ebuild HowTo </uri> fornisce i dettagli sul contenuto di uno script ebuild.
</p>
<p>
Per complete release ISO, viene creata un'intera suite di pacchetti in formato
binario <c>.tbz2</c> (compatibile con <c>tar.bz2</c>
con meta-informazioni attaccate alla fine del file.) Questi possono essere usati per installare una versione funzionante del
pacchetto (non completemante ottimizzato) in modo veloce ed efficiente.
</p>
<p>
E' possibile creare RPMs (Redhat package manager files) usando il portage
di Gentoo, ma non è ancora possibile usare RPMs esistenti per installare pacchetti.
</p>
</body>
</section>
<section id="configure">
<title>Eseguire autonomamente il passo ./configure nella compilazione di un pacchetto</title>
<body>
<p>
E' possibile ma non è banale e quindi non è raccomandato.
Dato che il metodo per farlo richiede una buona comprensione del portage
e dei suoi comandi, si raccomanda invece di modificare l'ebuild per fare
ciò che si vuole e porlo nel portage overlay (esiste per questo).
Questo è il metodo <e>milgiore</e> per manutenere e riutilizzare facilmente dei pacchetti. Leggere l'<uri
link="/proj/en/devrel/handbook/handbook.xml?part=2&chap=1">Ebuild HowTo</uri> per maggiori informazioni.
</p>
</body>
</section>
<section id="firewall">
<title>Usare emerge in una rete protetta da un firewall</title>
<body>
<p>
Leggere le domande relative a <uri link="#proxy">proxy</uri>, <uri link="#nosync">rsync</uri> e <uri link="#manualdownload">scaricare i file sorgente manualmente</uri>.
</p>
</body>
</section>
<section id="nosync">
<title>Cosa fare se rsync non funziona</title>
<body>
<p>
Se siete all'interno di un'area protetta da un firewall che non
permette di utilizzare rsync, si può usare
<c>emerge-webrsync</c> che scaricherà ed
installerà un'istantanea del Portage
attraverso una normale connessione HTTP.
Leggere la sezione <uri link="#proxy">proxy</uri> di questo documento per informazioni su come scaricare i file sorgente e gli snapshot del portage attraverso un proxy.
</p>
<pre caption="Usare emerge-webrsync">
~# emerge-webrsync</pre>
</body>
</section>
<section id="manualdownload">
<title>Per connessioni lente: scaricare i sorgenti e aggiungerli in seguito al sistema
</title>
<body>
<p>
Eseguire <c>emerge --pretend package</c>
in modo da vedere quali programmi devono essere installati.
Per avere la lista dei sorgenti per questi pacchetti ed il
sito dai quali scaricarli, usare <c>emerge -fp package</c>.
Scaricare i sorgenti e metterli su un supporto qualsiasi.
Copiare quindi i sorgenti in <path>/usr/portage/distfiles</path>
ed eseguire <c>emerge package</c>. Questo è, comunque, un processo noioso.
</p>
</body>
</section>
<section id="distfiles">
<title>I tarball dei sorgenti del software installato rimangono
in /usr/portage/distfiles usando spazio prezioso. E' sicuro cancellare questi files?</title>
<body>
<p>
La cancellazione di questi file non avrà un impatto negativo sulle performance.
Comunque, potrebbe essere saggio mantenere le versioni più recenti dei file;
spesso
alcuni ebuild sono rilasciati per la stessa versione di un software specifico.
Se avete cancellato l'archivio e aggiornato il software esso dovrà essere scaricato nuovamente da internet.
Ci sono programmi <uri link="http://forums.gentoo.org/viewtopic-t-337074.html">sviluppati da utenti</uri> per ripulire tutto eccetto le versioni più recenti dei file sorgente. Si noti che questi programmi, sebben funzionanti, <e>non</e> sono mantenuti ufficialmente. L'uso è a proprio rischio e pericolo.
</p>
</body>
</section>
<section id="tmpportage">
<title>Cosa c'è in /var/tmp/portage E' sicuro cancellare i file
e le directory in /var/tmp/portage?</title>
<body>
<p>
Dusante la compilazione, Gentoo salva i sorgenti del pacchetto in
<path>/var/tmp/portage</path>. Questi file e directory vengono di solito rimossi dopo un merge avvenuto con successo, ma qualche volta questo può non accadere. Non ci sono problemi a cancellare tutti il contenuto di questa directory <e>se</e> emerge non è in esecuzione. Solo per sicurezza, eseguire
sempre <c>pgrep emerge</c> prima di cancellare questa directory.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Utilizzo</title>
<section id="intkeyboard">
<title>Configurare un layout internazionale per
la tastiera</title>
<body>
<p>
Modificare la variabile <c>KEYMAP</c>
in <path>/etc/conf.d/keymaps</path>.
Quindi riavviare il computer
o far ripartire lo script keymaps
come segue:
</p>
<pre caption="Riavviare keymaps">
# <i>/etc/init.d/keymaps restart</i>.
</pre>
</body>
</section>
<section id="rootdns">
<title>La risoluzione dei nomi in DNS funziona
solo per root.</title>
<body>
<p>
Il file <path>/etc/resolv.conf</path>
ha diritti sbagliati; cambiare i permessi come segue:
</p>
<pre caption="Cambiare i permessi di /etc/resolv.conf"># <i>chmod 0644 /etc/resolv.conf</i></pre>
</body>
</section>
<section id="crontab">
<title>Usare crontab con un utente non root</title>
<body>
<p>
Aggiungere l'utente al gruppo <c>cron</c>.
</p>
</body>
</section>
<section id="numlock">
<title>Avere il numlock attivo ad ogni riavvio</title>
<body>
<p>
Lavorando da linea di comando, occorre solo eseguire
<c>rc-update add numlock default && /etc/init.d/numlock start</c>.
</p>
<p>
Ogni ambiente grafico fornisce strumenti differenti per queste operazioni,
controllare la sezione di aiuto o i manuali online per un'eventuale assistenza.
</p>
</body>
</section>
<section id="clear">
<title>Avere il terminale pulito ad ogni logout</title>
<body>
<p>
Per avere il terminale pulito, aggiungere <c>clear</c> a
<path>~/.bash_logout</path> del vostro username.
</p>
<pre caption = "Ripulire il terminale durante il logout">
$ <i>echo clear >> ~/.bash_logout</i></pre>
<p>
Per rendere la modifica disponibile ad ogni nuovo utente, eseguire lo stesso comando per
<path>/etc/skel/.bash_logout</path>:
</p>
<pre caption = "Pulire il terminale di ogni nuovo utente al logout">
# <i>echo clear >> /etc/skel/.bash_logout</i></pre>
</body>
</section>
<section id="suinx">
<title>Non si riescono ad eseguire applicazioni come root dopo un comando su.</title>
<body>
<p>
Questo problema sembra presentarsi con login grafici. Utenti che
usano X partendo da <c>startx</c> non hanno questo problema.
Il problema è un
<uri link="http://bugs.gentoo.org/show_bug.cgi?id=14560">bug</uri> nelle PAM di Gentoo. La soluzione è comunque semplice, basta aggiungere la seguente
linea a
<path>/etc/profile</path>.
</p>
<pre caption="Export XAUTHORITY">
export XAUTHORITY="${HOME}/.Xauthority"
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Manutenzione</title>
<section id="filecorruption">
<title>Come risolvere un problema di corruzione su filesystem ReiserFS</title>
<body>
<p>
Se la partizione
ReiserFS è corrotta, provare a
fare il boot dal CD di installazione di Gentoo ed
eseguire <c>reiserfsck --rebuild-tree</c> sul
filesystem corrotto.
Questo dovrebbe rendere nuovamente consistente il
filesystem, anche se è possibile la perdita di qualche
file o directory a causa della corruzione.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Sviluppo</title>
<section id="reportbugs">
<title>Come segnalare un bug</title>
<body>
<p>
Usare il Bugzilla bug tracker
all'indirizzo <uri>http://bugs.gentoo.org</uri>, se non si è sicuri che il problema si un bug, potete visitare <c>#gentoo</c>
sul network IRC <uri link="http://www.freenode.net"> Freenode</uri>.
</p>
</body>
</section>
<section id="releases">
<title>Quanto spesso cambiano le release</title>
<body>
<p>
I pacchetti di Gentoo vengono aggiornati velocemente dopo che l'autore
principale rilascia nuovo codice. Come per il rilascio di nuovi stage/profili/ISO, controllare la pagina <uri link="/proj/en/releng">Release Engineering Project</uri>.
L'annuncio di nuove release viene fatto
sulla mailing-list <uri link="/main/en/lists.xml">gentoo-announce</uri>. Leggere la domanda sull'<uri link="#upgrade">aggiornamento</uri> per maggiori informazioni.
</p>
</body>
</section>
<section id="beeping">
<title>Lo speaker del computer suona come impazzito durante la compilazione di Mozilla. Come disabilitare i beep da console</title>
<body>
<p>
I beep della console possono essere disabilitati
usando setterm, come segue:
</p>
<pre caption="Uso di setterm"># <i>setterm -blength 0</i>
</pre>
<p>
Per disabilitare i suoni ad ogni riavvio
inserire il suddetto comando nel file <path>/etc/conf.d/local.start</path>. Comunque questo disabilita il suono
solo per il terminale corrente. Per disabilitare
il suono di tutti i terminali, filtrare
l'output del comando sul terminale desiderato,
come segue:
</p>
<pre caption="Usare setterm (bis)"># <i>setterm -blength 0 > /dev/vc/1</i>
</pre>
<p>
Sostituire a /dev/vc/1 il terminale su
cui disabilitare i suoni.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Risorse</title>
<section id="resources">
<title>Dove trovare maggiori informazioni su Gentoo Linux</title>
<body>
<p>
La documentazione ufficiale di Gentoo può
essere trovata su <uri>http://docs.gentoo.org</uri>.
</p>
</body>
</section>
<section id="buycd">
<title>Come acquistare un CD di Gentoo Linux</title>
<body>
<p>
I CD di installazione per tutte le architetture supportate sono disponibili su <uri link="http://www.cafepress.com/officialgentoo/">Gentoo Store</uri>.
Comprando un CD dallo store darete anche un supporto al
nostro sviluppo. Per questo, se possibile, considerate l'acquisto dal nostro
store :-)
</p>
<p>
Potete anche trovare una lista di rivenditori dei CD sulla pagina
<uri link = "http://www.gentoo.org/main/en/where.xml">Get Gentoo!</uri>
</p>
</body>
</section>
<section id="help">
<title>Non ho trovato risposta alla mia domanda</title>
<body>
<p>
Un buon inizio è navigare tra i vari documenti presenti
sul <uri link="/doc/it/index.xml">sito</uri>, oltre alle
mailing list di Gentoo Linux delle quali
c'è una lista su <uri link="http://www.google.com">Google</uri>.
Per ricercare
all'interno delle Gentoo list, digitando
solo "lists.gentoo.org qualcosa" per
' ricercare "qualcosa" all'interno delle mailing list
di Gentoo.
Se tutto questo non vi dà la risposta,
venite a trovarci sul nostro canale irc <c>#gentoo</c> su <uri>irc.freenode.net</uri>.
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: ldap-howto.xml --]
[-- Type: text/xml; name="ldap-howto.xml", Size: 19317 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/it/ldap-howto.xml">
<title>Gentoo Guide all'autenticazione OpenLDAP </title>
<author title="Autore">
<mail link="sj7trunks@pendulus.net">Benjamin Coles</mail>
</author>
<author title="Revisore">
<mail link="swift@gentoo.org">Sven Vermeulen</mail>
</author>
<author title="Revisore">
<mail link="tseng@gentoo.org">Brandon Hale</mail>
</author>
<author title="Revisore">
<mail link="bennyc@gentoo.org">Benny Chuang</mail>
</author>
<author title="Traduttore">
<mail link="emorelli@gentoo.it">Enrico Morelli</mail>
</author>
<author title="Traduttore">Team Italiano</author>
<abstract>
Questa guida introduce le basi di LDAP e mostra come configurare
OpenLDAP allo scopo di autenticare un gruppo di computer Gentoo.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.5 -->
<license />
<version>0.18.2</version>
<date>10 Giugno 2005</date>
<chapter>
<title>Iniziare con OpenLDAP</title>
<section>
<title>Cos'è LDAP?</title>
<body>
<p>
LDAP è l'acronimo di <e>Lightweight Directory Access Protocol</e>.
Basato su X.500, comprende molte delle sue funzioni primarie,
ma non include molte delle funzioni esoteriche che X.500 possiede.
Ma cos'è questo X.500 e cosa centra con LDAP?
</p>
<p>
Nel concetto OSI, l'X.500 è un modello per i Directory Service.
Contiene le definizioni per i namespace ed i protocolli
per la ricerca e l'aggiornamento delle directory.
Comunque, X.500 è stato trovato essere eccessivo in molte
situazioni. Entriamo in LDAP. Come l'X.500, provvede
un modello data/namespace per le directory ed anche un protocollo.
Comunque, LDAP è progettato per essere eseguito direttamente
al di sopra dello stack TCP/IP. Si pensi a LDAP come una
versione più snella di X.500.
</p>
</body>
</section>
<section>
<title>Cos'è una directory</title>
<body>
<p>
Una directory è un database specializzato progettato
per frequenti richieste ma infrequenti aggiornamenti.
Al contrario di database generali, non contiene
il supporto per transazioni o funzionalità di roll-back.
Le directory sono facilmente replicabili per incrementarne
la disponibilità e l'affidabilità. Quando le directory vengono
replicate, sono permesse inconsistenze temporanee finché
non divengono eventualmente sincronizzate.
</p>
</body>
</section>
<section>
<title>Come sono strutturate le informazioni</title>
<body>
<p>
Tutte le informazioni all'interno di una directory
sono strutturate gerarchicamente. Inoltre, se si vogliono
inserire dati dentro una directory, la directory
deve sapere come memorizzare questi dati all'interno
di un albero. Si veda l'esempio di una finta compagnia
e ad un albero stile Internet:
</p>
<pre caption = "Struttura organizzativa di GenFic, una compagnia finta di Gentoo">
dc: com
|
dc: genfic <comment>(Organisation)</comment>
/ \
ou: people servers <comment>(Organisational Units)</comment>
/ \ ..
uid: .. jhon <comment>(OU-specific data)</comment>
</pre>
<p>
Dato che non sono stati introdotti dati nel database in questo
schema ascii, ogni nodo di questo albero deve essere definito.
Per dare un nome ad ogni nodo, LDAP usa un naming scheme.
Molte distribuzioni LDAP (incluso OpenLDAP) contengono già
un certo numero di schemi predefiniti (generalmente approvati),
come inetorgperson, uno schema frequentemente usato
per definire utenti.
</p>
<p>
Utenti interessati sono incoraggiati a leggere la
<uri link="http://www.openldap.org/doc/admin21/">OpenLDAP Admin Guide</uri>.
</p>
</body>
</section>
<section>
<title>Per cosa si usa LDAP</title>
<body>
<p>
LDAP può essere usato per vari scopi. Questo documento si focalizza
sulla gestione centralizzata degli utenti, mantenendo tutti gli
account utente in una singola collocazione LDAP (il che non significa
che sia alloggiato su un singolo server, LDAP supporta scalabilità e
ridondanza), sono comunque raggiungibili anche altri obiettivi usando LDAP.
</p>
<ul>
<li>Infrastruttura per chiavi pubbliche</li>
<li>Calendari condivisi</li>
<li>Rubriche condivise</li>
<li>Depositi per DHCP, DNS, ...</li>
<li>
Direttive di classe per la configurazione di sistemi (tenendo traccia
delle configurazioni di vari server)
</li>
<li>...</li>
</ul>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione di OpenLDAP</title>
<section>
<title>Configurazione iniziale</title>
<body>
<note>
In questo documento si userà l'indirizzo genfic.com come
esempio. Si dovrà naturalmente cambiarlo per adattarlo allo scopo da raggiungere.
Comunque, ci si assicuri che il nodo iniziale sia il top level di un dominio
ufficiale (net, com, cc, be, it, ...).
</note>
<p>
Prima di tutto occorre installare tutti i componenti necessari
sul proprio server:
</p>
<pre caption="Installazione di OpenLDAP">
# <i>emerge openldap pam_ldap nss_ldap migrationtools</i>
# <i>chown ldap:ldap /var/lib/openldap-ldbm /var/lib/openldap-data /var/lib/openldap-slurp</i>
</pre>
<p>
Editare <path>/etc/openldap/slapd.conf</path> e aggiungere
ciò che segue a destra di <c>core.schema</c>:
</p>
<pre caption="/etc/openldap/slapd.conf">
<comment># Includere i data schemes necessari</comment>
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
<comment># Usare md5 per fare l'hash delle password</comment>
password-hash {md5}
<comment># Definire le proprietà SSL e TLS (opzionale)</comment>
TLSCertificateFile /etc/ssl/ldap.pem
TLSCertificateKeyFile /etc/openldap/ssl/ldap.pem
TLSCACertificateFile /etc/ssl/ldap.pem
<comment>Più avanti nel file...</comment>
database ldbm
suffix "dc=genfic,dc=com"
rootdn "cn=Manager,dc=genfic,dc=com"
rootpw <i>{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==</i>
directory /var/lib/openldap-ldbm
index objectClass eq
<comment>
Si può avere una password cryptata come quella sopra, con slappasswd -h {Md5}</comment>
</pre>
<p>
Editare il file di configurazione di LDAP:
</p>
<pre caption="/etc/openldap/ldap.conf">
# <i>nano -w /etc/openldap/ldap.conf</i>
<comment>Aggiungere...</comment>
BASE dc=genfic, dc=com
URI ldaps://auth.genfic.com:636/
TLS_REQCERT allow
</pre>
<p>
Si generi ora un certificato SSL per rendere
sicura la directory. Occorre rispondere alle domande che si ricevono
nel miglior modo possibile. Alla richiesta del <e>Common Name</e>, si inserisca
il nome che i client useranno quando contatteranno il server.
Di solito è il domainname completo del server (p.e. <path>auth.genfic.com</path>).
</p>
<pre caption="Generazione di un certificato SSL">
# <i>cd /etc/ssl</i>
# <i>openssl req -config /etc/ssl/openssl.cnf -new -x509 -nodes -out \
ldap.pem -keyout /etc/openldap/ssl/ldap.pem -days 999999</i>
</pre>
<p>
Editare ora <path>/etc/conf.d/slapd</path> e aggiungere ciò che
segue, scommentando le linee esistenti:
</p>
<pre caption="/etc/conf.d/slapd">
OPTS="-h 'ldaps:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"
</pre>
<p>
Far partire slapd:
</p>
<pre caption = "Avvio di SLAPd">
# <i>/etc/init.d/slapd start</i>
</pre>
<p>
Si può fare un test col seguente comando:
</p>
<pre caption = "Testare il demone SLAPd">
# <i>ldapsearch -D "cn=Manager,dc=genfic,dc=com" -W</i>
</pre>
<p>
Se si riceve un errore, provare ad aggiungere <c>-d 255</c>
per incermentare la verbosità e risolvere il problema.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Migrare dati esistenti</title>
<section>
<title>Migrare account utente</title>
<body>
<p>
Si migreranno ora gli account utente. Aprire
<path>/usr/share/migrationtools/migrate_common.ph</path>
ed editare ciò che segue:
</p>
<pre caption="/usr/share/migrationtools/migrate_common.ph">
$DEFAULT_BASE = "dc=genfic,dc=com";
$EXTENDED_SCHEMA = 1;
<comment># Commentate queste linee a meno che non abbiate un mail sheme caricato</comment>
<comment>#$DEFAULT_MAIL_DOMAIN = "genfic.com";</comment>
<comment>#$DEFAULT_MAIL_HOST = "mail.genfic.com";</comment>
</pre>
<p>
Eseguire quindi gli script per la migrazione:
</p>
<pre caption="Esecuzione dei migration script">
# <i>export ETC_SHADOW=/etc/shadow</i>
# <i>cd /usr/share/migrationtools</i>
# <i>./migrate_base.pl > /tmp/base.ldif</i>
# <i>./migrate_group.pl /etc/group /tmp/group.ldif</i>
# <i>./migrate_hosts.pl /etc/hosts /tmp/hosts.ldif</i>
# <i>./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif</i>
</pre>
<p>
Questi ultimi passi migrano i file specificati nei file ldif
letti da LDAP. Aggiungere quindi i file alla directory:
</p>
<pre caption="Importare i dati nella directory">
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/base.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/group.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/passwd.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/hosts.ldif</i>
</pre>
<p>
Se si raggiunge un errore nei file ldif, si può riprendere da dove
si è terminato usando <c>ldapadd -c</c>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione del client</title>
<section>
<title>Configurazione di PAM</title>
<body>
<p>
Il primo passo è di configurare PAM per permettere l'autorizzazione
LDAP. Installare
<c>net-libs/pam_ldap</c> per fornire il supporto dell'autorizzazione
LDAP a PAM e
<c>net-libs/nss_ldap</c> in modo tale che il sistema
possa far fronte ai server LDAP per informazioni aggiuntive
(usate da <path>nsswitch.conf</path>).
</p>
<pre caption="Installare pam_ldap e nss_ldap">
# <i>emerge pam_ldap nss_ldap</i>
</pre>
<p>
Editare <path>/etc/pam.d/system-auth</path> in modo tale che assomigli a quello che segue:
</p>
<pre caption="/etc/pam.d/system-auth">
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok shadow
auth sufficient /lib/security/pam_ldap.so use_first_pass
auth required /lib/security/pam_deny.so
account sufficient /lib/security/pam_unix.so
account sufficient /lib/security/pam_ldap.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok use_authtok shadow md5
password sufficient /lib/security/pam_ldap.so use_authtok
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0
session optional /lib/security/pam_ldap.so
</pre>
<!-- Questo dovrebbe funzionare, vedere #87930
<note>
Se il login su questi sistemi usando ssh non funziona, provare a interscambiare
le due righe <c>auth sufficient</c>. Comunque, con questo interscambio, alcuni tool come <c>su</c> si
rifiuteranno di funzionare correttamente.
</note>
-->
<p>
Cambiare <path>/etc/ldap.conf</path> in modo da avere:
</p>
<pre caption="/etc/ldap.conf">
<comment>#host 127.0.0.1</comment>
<comment>#base dc=padl,dc=com</comment>
ssl start_tls
ssl on
suffix "dc=genfic,dc=com"
<comment>#rootbinddn uid=root,ou=People,dc=genfic,dc=com</comment>
uri ldaps://auth.genfic.com/
pam_password exop
ldap_version 3
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid
nss_base_passwd ou=People,dc=genfic,dc=com
nss_base_shadow ou=People,dc=genfic,dc=com
nss_base_group ou=Group,dc=genfic,dc=com
nss_base_hosts ou=Hosts,dc=genfic,dc=com
scope one
</pre>
<p>
Copiare quindi il file <path>ldap.conf</path> dal server ai client in modo che siano consapevoli dell'ambiente LDAP:
</p>
<pre caption="Copiare l'OpenLDAP ldap.conf">
<comment>(Sostituire a ldap-server il nome del proprio LDAP )</comment>
# <i>scp ldap-server:/etc/openldap/ldap.conf /etc/openldap</i>
</pre>
<p>
<p>
Si configurino infine i propri client in modo che
controllino il LDAP per gli account di sistema:
</p>
<pre caption="/etc/nsswitch.conf">
passwd: files ldap
group: files ldap
shadow: files ldap
</pre>
<p>
Per testare le modifiche, digitare:
</p>
<pre caption="Test LDAP Auth">
# <i>getent passwd|grep 0:0</i>
<comment>Si dovrebbero ricevere due righe di risposta:</comment>
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
</pre>
<p>
Se si nota che una delle linee poste nel proprio
<path>/etc/ldap.conf</path> era commentata
(la linea <c>rootbinddn</c>), non c'è da preoccuparsi, non ce n'è
bisogno a meno che non si voglia cambiare la
password degli utenti come superuser. In questo caso c'è
bisogno di mettere in chiaro la password di root
in <path>/etc/ldap.secret</path>. Questo è
<brite>PERICOLOSO</brite> e si dovrebbe cambiare l'accesso
del file in 600. Quello che faccio io è di lasciare questo
file in bianco e quando ho bisogno di cambiare la password
a qualcuno che è sia in ldap che in <path>/etc/passwd</path>,
metto la password di root nel file suddetto per 10 secondi mentre
cambio la password dell'utente e quindi la rimuovo subito
dopo che ho terminato.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Configurazioni per LDAP Server Security</title>
<section>
<title>Permessi OpenLDAP</title>
<body>
<p>
Se si dà un'occhiata a <path>/etc/openldap/slapd.conf</path>
si può notare che è possibile specificare le ACL (o permessi)
di quali dati gli utenti possono leggere e/o scrivere:
</p>
<pre caption="/etc/openldap/slapd.conf">
access to attrs="userPassword"
by dn="uid=root,ou=people,dc=genfic,dc=com" write
by dn="uid=John, ou=People,dc=genfic,dc=com" write
by anonymous auth
by self write
by * none
access to *
by dn="uid=root,ou=People,dc=genfic,dc=com" write
</pre>
<p>
Questo dà l'accesso a tutto ciò che un utente può modificare.
Se questa è un'informazione proprietaria, se ne ha l'accesso in scrittura; se l'informazione
è di un altro utente, la si può leggere; utenti anonimi devono
inviare login e password per avere l'accesso. Ci sono
quattro livelli, partendo dal più basso al più alto:
<c>auth search read write</c>.
</p>
<p>
La prossima ACL è leggermente più sicura, blocca infatti
ad un utente normale la lettura delle password shadow
di altri utenti:
</p>
<pre caption="/etc/openldap/slapd.conf">
access to dn=".*,dc=genfic,dc=com" attr="userPassword"
by dn="uid=root,ou=people,dc=genfic,dc=com" write
by dn="uid=John, ou=People,dc=genfic,dc=com" write
by anonymous auth
by self write
by * search
access to *
by dn="uid=root,ou=People,dc=genfic,dc=com" write
by * read
</pre>
<p>
Questo esempio dà a root e John l'accesso in
lettura/scrittura/ricerca in tutto l'albero
sotto <path>dc=genfic,dc=com</path>.
Questo permette agli utenti di cambiare le proprie
<path>userPassword</path>. Così per come finisce
la dichiarazione del filtro ognuno ha la possibilità
di ricercare ma non di leggere i risultati di tale ricerca.
Si possono avere acl multiple ma le regole vengono processate
dal basso verso l'alto, così quelle iniziali dovrebbero essere
quelle più restrittive.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Lavorare con OpenLDAP</title>
<section>
<title>Manutenzione delle directory</title>
<body>
<p>
Si può iniziare ad usare le directory per autenticare gli utenti
in apache/proftpd/qmail/samba. Si possono amministrare con Webmin,
che provvede un'interfaccia veramente facile. Si può anche
usare gq o directory_administrator.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Riconoscimenti</title>
<section>
<body>
<p>
Si ringrazia Matt Heler per averci prestato il
suo computer per gli scopi di questa guida. Grazie anche
agli amici in #ldap @ irc.freenode.net
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: ati-faq.xml --]
[-- Type: text/xml; name="ati-faq.xml", Size: 6035 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/it/ati-faq.xml" lang="it">
<title>Gentoo Linux ATi FAQ</title>
<author title="Autore"><mail link="lu_zero@gentoo.org">
Luca Barbato</mail>
</author>
<author title="Editore"><mail link="peesh@gentoo.org">
Jorge Paulo</mail>
</author>
<author title="Editore"><mail link="blubber@gentoo.org">
Tiemo Kieft</mail>
</author>
<author title="Traduttore"><mail link="myzelf@omnidea.it">
Gilberto De Faveri</mail>
</author>
<author title="Traduttore"><mail link="gentoo-dev@gentoo.it">
Enrico Morelli</mail>
</author>
<abstract>Questa FAQ dovrebbe aiutare gli utenti a risolvere i più comuni problemi di installazione
e configurazione relativi a DRI e X11 per le schede ATI.</abstract>
<license/>
<version>1.0.13</version>
<date>18 Luglio 2005</date>
<chapter>
<title>Hardware Supportato</title>
<section>
<title>È supportata la mia scheda ATI?</title>
<body>
<p><uri link="http://www.freedesktop.org/Software/xorg">xorg-x11</uri> supporta quasi ogni scheda ATI,
almeno per quanto riguarda l'accelerazione delle funzioni 2D. Il supporto 3D è offerto sia dal
<uri link="http://dri.sf.net">progetto DRI</uri>, che fa parte di xorg-x11 o dei
driver closed source
<uri link="http://mirror.ati.com/support/drivers/linux/radeon-linux.html">forniti</uri> da ATI.
</p>
<table>
<tr>
<th>GPU</th>
<th>Nome Commerciale</th>
<th>Supportato da</th>
</tr>
<tr>
<ti>Rage128</ti>
<ti>Rage128</ti>
<ti>xorg DRI</ti>
</tr>
<tr>
<ti>R100</ti>
<ti>Radeon7xxx, Radeon64</ti>
<ti>xorg DRI</ti>
</tr>
<tr>
<ti>R200,R250,R280</ti>
<ti>Radeon8500, Radeon9000, Radeon9200</ti>
<ti>xorg DRI, ATI DRI</ti>
</tr>
<tr>
<ti>R300, R400, R500</ti>
<ti>Radeon 9500 - x800</ti>
<ti>xorg 2D, ATI DRI</ti>
</tr>
</table>
</body>
</section>
<section>
<title>Ho una scheda All-In-Wonder/Vivo. Sono supportate le caratteristiche multimediali?</title>
<body>
<p>Le caratteristiche multimediali sono per ora supportate dal
<uri link="http://gatos.sf.net">progetto GATOS</uri>. Questi driver saranno
integrati direttamente in xorg.</p>
</body>
</section>
<section>
<title>Non utilizzo una macchina basata su architettura x86. Cosa posso fare?</title>
<body>
<p>
Il supporto X11 su piattaforme PPC o Alpha è molto simile al supporto per x86.
Comunque, i driver ATI non sono supportati su PPC o Alpha, per questo non è possibile usare le caratteristiche 3D degli R300 Graphics Processing Unit (GPU).
Se si possiede una scheda con queste GPU e si vuole che sia supportata da X11,
contattare <uri link="http://www.ati.com">ATI</uri> e chiedere di rilasciare
le specifiche per la propria GPU.
I sorgenti per AMD64 sono stati rilasciati. Utenti amd64 possono usarli come utenti x86.
</p>
<impo>
Per abilitare l'agpgart per certi chipset AMD64 occorre disabilitare il supporto K8 IOMMU.
</impo>
</body>
</section>
<section>
<title>Ho un portatile. Il mio modello ATI "mobility" è supportato?</title>
<body>
<p>Dovrebbe esserlo, ma potresti avere qualche problema a causa del PCI id OEM che il
chip potrebbe avere. Nella maggior parte dei casi dovrai editare a mano il tuo file di configurazione
o utilizzare l'utility <c>xorgconfig</c>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Installazione</title>
<section>
<title>Pacchetti</title>
<body>
<p>
<ul>
<li>L'ebuild di <c>xorg-x11</c> fornisce l'implementazione di X11 . </li>
<li>Per un kernel 2.6 i moduli DRI possono essere inclusi col kernel o
essere forniti dall'ebuild <c>x11-drm</c></li>.
<li>Per un kernel 2.4 si deve usare l'ebuild <c>x11-drm</c> </li>
<li>L'ebuild <c>ati-drivers</c> fornisce i driver ATI per X e i moduli per il kernel, sia per la serie 2.4 che per la 2.6.
</li>
</ul>
</p>
<p>
Se si vuole usare il supporto agpgart <e>interno</e> agli ATI driver invece
del supporto nel kernel, il driver agpgart e il driver specifico per il chipset (nella configurazione del kernel) devono essere compilati come moduli o non inclusi.
</p>
<pre caption="Installazione driver">
<comment>Per installare solo i driver ed i moduli Rage 128 con x11
</comment>
# <i>VIDEO_CARDS="rage128" emerge x11-drm</i>
<comment>Per avere solo il supporto Radeon</comment>
<comment>(R100, R200, R250, R280 but not R300 yet)</comment>
# <i>VIDEO_CARDS="radeon" emerge x11-drm</i>
<comment>Per installare i driver ATI closed source</comment>
<comment>(R200,R250, R280 and R300 only)</comment>
# <i>emerge ati-drivers</i>
<comment>Per installare solo X11 senza moduli del kernel</comment>
# <i>emerge xorg-x11</i>
</pre>
</body>
</section>
<section>
<title>Configurazione</title>
<body>
<p>È consigliabile utilizzare <c>xorgcfg</c> o <c>xorgconfig</c> per generare
il file di configurazione <path>xorg.conf</path>. Alternativamente, si può usare
l'opzione di autoconfigurazione di Xorg:
</p>
<pre caption="Configurazione automatica di X">
# <i>X -configure</i>
</pre>
<p>
Per maggiori informazioni su come creare un file di configurazione <c>xorg.conf</c> minimo,
è possibile consultare la
<uri link="/doc/it/index.xml?catid=desktop">Desktop Configuration Guide</uri>.</p>
<note> Gli utilizzatori degli ati-drivers possono usare anche <c>fglrxconfig</c> se si sono installati gli <c>ati-drivers</c>.</note>
<impo>Gli utenti PPC dovrebbero usare l'utility di configurazione <c>Xautoconf</c>,
emergendo l'ebuild <c>Xautoconf</c>.</impo>
</body>
</section>
</chapter>
<chapter>
<title>Altre risorse</title>
<section>
<body>
<p>
Maggiori informazioni su Gentoo Linux e i driver binari ATI Radeon possono essere trovati su
<uri
link="http://odin.prohosting.com/wedge01/gentoo-radeon-faq.html">Wedge
Unofficial Gentoo ATI Radeon FAQ</uri>.
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: hb-portage-files.xml --]
[-- Type: text/xml; name="hb-portage-files.xml", Size: 8638 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/handbook/hb-portage-files.xml,v 1.5 2004/11/09 13:01:52 swift Exp $ -->
<sections>
<version>1.6</version>
<date>26 Giugno 2005</date>
<section>
<title>I file del Portage</title>
<subsection>
<title>Direttive per la configurazione</title>
<body>
<p>
Portage usa le configurazioni predefinite memorizzate in <path>/etc/make.globals</path>.
Scorrendo questo file, si noterà che tutta la configurazione del Portage è
gestita da variabili. Quali sono queste variabili ed il loro significato
è descritto in seguito.
</p>
<p>
Dato che molte direttive di configurazione differiscono da architettura
ad architettura, Portage ha dei file di configurazione predefiniti che fanno
parte del proprio profilo.
Il proprio profilo è indicato dal link simbolico <path>/etc/make.profile</path>; le configurazioni del Portage sono definite dai file in <path>make.defaults</path> del proprio profilo e dei profili parenti.
Verranno presi in considerazione i profili e la directory
<path>/etc/make.profile</path>.
</p>
<p>
Se si sta pianificando la modifica di una variabile di configurazione
<e>non</e> alterate <path>/etc/make.globals</path> o <path>make.defaults</path>.
Usare invece <path>/etc/make.conf</path> che ha la precedenza sui file
precedenti. Un file di esempio che non viene preso in considerazione dal Portage, si trova in <path>/etc/make.conf.example</path>.
</p>
<p>
Si può anche definire una variabile di configurazione del Portage come una
variabile ambiente, ma non è raccomandato.
</p>
</body>
</subsection>
<subsection>
<title>Informazioni specifiche sul profilo</title>
<body>
<p>
Si è già avuto a che fare con la directory <path>/etc/make.profile</path>.
Questa non è esattamente una directory ma un link simbolico ad un profilo,
di default uno all'interno di <path>/usr/portage/profiles</path> anche
se potete crearne uno vostro e farlo puntare a questo.
Il profilo cui punta il link è il profilo al quale aderisce il sistema.
</p>
<p>
Un profilo contiene informazioni specifiche dell'architettura così come
una lista di pacchetti che appartengono al sistema che corrisponde a
questo profilo, una lista di pacchetti che non girano su questo profilo
(o sono mascherati), ecc.
</p>
</body>
</subsection>
<subsection>
<title>Informazioni specifiche dell'utente</title>
<body>
<p>
Quando si vuole sovrascrivere il comportamento del Portage riguardo
l'installazione del software, si dovrnno editare file all'interno di
<path>/etc/portage</path>.
Si è incoraggiati ad usare i file all'interno di <path>/etc/portage</path> e
scoraggiati ad usare variabili ambiente.
</p>
<p>
All'interno di <path>/etc/portage</path> si possono creare i seguenti file:
</p>
<ul>
<li>
<path>package.mask</path> una lista di pacchetti che si vuole che il Portage
non installi
</li>
<li>
<path>package.unmask</path> una lista di pacchetti che si vuole installare
anche se gli sviluppatori di Gentoo scoraggiano dal farlo
</li>
<li>
<path>package.keywords</path> una lista di pacchetti che si vuole installare
anche se il pacchetto non è stato trovato disponibile per l'architettura
del sistema
</li>
<li>
<path>package.use</path> una lista di flag USE che si vuole usare per
certi pacchetti senza che l'intero sistema ne sia coinvolto
</li>
</ul>
<p>
Maggiori informazioni sulla directory <path>/etc/portage</path>
e la lista completa dei file che vi si possono creare, può essere
trovata nella pagina man del Portage:
</p>
<pre caption="Leggere la pagina man del Portage">
$ <i>man portage</i>
</pre>
</body>
</subsection>
<subsection>
<title>Modificare l'ubicazione dei file e delle directory del Portage</title>
<body>
<p>
Come menzionato precedentemente i file di configurazione non possono
essere memorizzati in directory diverse da quelle predefinite.
Comunque, Portage usa molte altre ubicazioi per vari scopi: memorizzazione
del codice sorgente, directory di compilazione, albero del Portage, ...
</p>
<p>
Tutti questi scopi hanno ubicazioni predefinite ma che possono essere alterate
attraverso <path>/etc/make.conf</path>.
Il resto di questo capitolo spiega quali sono le ubicazioni per scopi speciali
usate dal Portage e come alterare la loro collocazione nel filesystem.
</p>
<p>
Questo documento non deve essere usato come un riferimento. Se si desidera
avere una panoramica, fare riferimento alle pagine man del Portage e di
<path>make.conf</path>:
</p>
<pre caption="Leggere le pagine man del Portage e del make.conf">
$ <i>man portage</i>
$ <i>man make.conf</i>
</pre>
</body>
</subsection>
</section>
<section>
<title>Ubicazione dei file</title>
<subsection>
<title>L'albero del Portage</title>
<body>
<p>
L'ubicazione predefinita per l'albero del Portage è <path>/usr/portage</path>.
Questo è definito dalla variabile PORTDIR. Se si vuole mettere l'albero del
Portage da qualche altra parte (alterando questa variabile), non ci si
deve dimenticare di modificare il link simbolico <path>/etc/make.profile</path>
in accordo con la nuova ubicazione.
</p>
<p>
Se si altera la variabile PORTDIR, si possono voler modificare anche le seguenti
variabili in quanto non noteranno il cambio di PORTDIR (a causa del modo
di gestire le variabili del Portage): PKGDIR, DISTDIR, RPMDIR.
</p>
</body>
</subsection>
<subsection>
<title>Binari precompilati</title>
<body>
<p>
Anche se Portage non usa pacchetti precompilati di default, ha comunque
un supporto esteso anche per questi. Quando si chiede al Portage di usare
pacchetti precompilati, questi verranno cercati nella directory
<path>/usr/portage/packages</path>. Questa ubicazione è definita
dalla variabile PKGDIR.
</p>
</body>
</subsection>
<subsection>
<title>Codice Sorgente</title>
<body>
<p>
Il codice sorgente delle applicazioni è memorizzato, di default, in <path>/usr/portage/distfiles</path>. Questa ubicazione è definita dalla variabile DISTDIR.
</p>
</body>
</subsection>
<subsection>
<title>File RPM</title>
<body>
<p>
Ancge se Portage non usa file RPM, è possibile generarli usando il
comando <c>ebuild</c>
(vedere <uri link="?part=3&chap=6">L'applicazione ebuild</uri>).
L'ubicazione di default per i file RPM è
<path>/usr/portage/rpm</path> ed è definita dalla variabile RPMDIR.
</p>
</body>
</subsection>
<subsection>
<title>Portage Database</title>
<body>
<p>
Portage memorizza il proprio stato (quali pacchetti sono installati, che file appartengono ad un dato pacchetto, ...) in <path>/var/db/pkg</path>.
<e>Non</e> alterare questi file manualmente! Si potrebbe alterare la conoscenza che il Portage ha del proprio sistema.
</p>
</body>
</subsection>
</section>
<section>
<title>Compilare il software</title>
<subsection>
<title>File temporanei</title>
<body>
<p>
I file temporanei del Portage sono memorizzati di default in <path>/var/tmp</path>. Questo è definito dalla variabile PORTAGE_TMPDIR.
</p>
<p>
Se si altera la variabile PORTAGE_TMPDIR, si potrebbe voler modificare anche le
seguenti variabili dato che non noteranno la modifica di PORTAGE_TMPDIR (a
causa di come Portage gestisce le variabili): BUILD_PREFIX.
</p>
</body>
</subsection>
<subsection>
<title>Directory di compilazione</title>
<body>
<p>
Portage crea specifiche directory di compilazione per ogni pacchetto emerso
all'interno di
<path>/var/tmp/portage</path>. Questa ubicazione è definita dalla variabile BUILD_PREFIX.
</p>
</body>
</subsection>
<subsection>
<title>Ubicazione nel filesystem</title>
<body>
<p>
Di default Portage installa tutti i file sul filesystem corrente
(<path>/</path>), ma si può modificare questa definizione usando la variabile ambiante ROOT.
</p>
</body>
</subsection>
</section>
<section>
<title>Caratteristiche di log</title>
<subsection>
<title>Ebuild Logging</title>
<body>
<p>
Portage può creare file di log per ebuild, ma solo quando la variabile PORT_LOGDIR è definita con una locazione che sia scrivibile dall'utente portage. Il valore predefinito per questa variabile è nullo.
</p>
</body>
</subsection>
</section>
</sections>
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2005-05-02 10:36 Enrico Morelli
2005-05-04 18:00 ` Stefano Rossi
0 siblings, 1 reply; 39+ messages in thread
From: Enrico Morelli @ 2005-05-02 10:36 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 811 bytes --]
DOC Versione Revisione
--------------------------------------------------
faq.xml 2.15 1.82
ldap-howto.xml 0.17 1.25
qmail-howto.xml 1.11 1.34
ati-faq.xml 1.07 1.20
hb-portage-branches 1.5 1.11
hb-portage-divertree 1.2 1.6
--
-------------------------------------------------------------------
(o_
(o_ //\ Coltivate Linux che tanto Windows si pianta da solo.
(/)_ V_/_
+------------------------------------------------------------------+
| ENRICO MORELLI | email: morelli@CERM.UNIFI.IT |
| * * * * | phone: +39 055 4574269 |
| University of Florence | fax : +39 055 4574253 |
| CERM - via Sacconi, 6 - 50019 Sesto Fiorentino (FI) - ITALY |
+------------------------------------------------------------------+
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: faq.xml --]
[-- Type: text/xml; name="faq.xml", Size: 38210 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/it/faq.xml" lang="it">
<title>Gentoo Linux risposte a domande frequenti</title>
<author title="Autore Precedente"><mail link="drobbins@gentoo.org">Daniel Robbins</mail></author>
<author title="Revisione">Colin Morey</author>
<author title="Redazione"><mail link="zhen@gentoo.org">John P. Davis</mail></author>
<author title="Redazione"><mail link="stocke2@gentoo.org">Eric Stockbridge</mail></author>
<author title="Redazione"><mail link="zhware@gentoo.org">Stoyan Zhekov</mail></author>
<author title="Redazione"><mail link="carl@gentoo.org">Carl Anderson</mail></author>
<author title="Redazione"><mail link="peesh@gentoo.org">Jorge Paulo</mail></author>
<author title="Redazione"><mail link="swift@gentoo.org">Sven Vermeulen</mail></author>
<author title="Redazione">
<mail link="bennyc@gentoo.org">Benny Chuang</mail>
</author>
<author title="Traduzione"><mail link="emorelli@gentoo.it">Enrico Morelli</mail></author>
<abstract>
Queste FAQ sono una collezione di domande e risposte
estratte dalla mailing list gentoo-dev e dal canale IRC.
Se avete altre domande (o risposte!) da aggiungere, contattate
l'autore o un membro del gruppo documentazione.
</abstract>
<version>2.15</version>
<date>16 Aprile 2005</date>
<chapter>
<title>Domande sulle caratteristiche</title>
<section>
<title>Per iniziare</title>
<body>
<ul>
<li><uri link="#pronunciation">Qual è la pronuncia Gentoo, e cosa significa?</uri></li>
<li><uri link="#differences">Cosa rende Gentoo differente?</uri></li>
</ul>
</body>
</section>
<section>
<title>Installazione</title>
<body>
<ul>
<li><uri link="#optimizations">Il sistema sembra instabile usando ottimizzazioni come
"-O9 -ffast-math -fomit-frame-pointer".</uri></li>
<li><uri link="#password">Come cambiare la password di root (e di fatto per ogni altro utente)</uri></li>
<li><uri link="#useradd">Come aggiungere un utente</uri></li>
<li><uri link="#su">Come può un utente diventare (su [switch user]) root</uri></li>
<li><uri link="#devfs">Come disabilitare devfs</uri></li>
<li><uri link="#upgrade">Aggiornare Gentoo da una release ad un'altra senza reinstallare</uri></li>
<li><uri link="#bootrescue">Il kernel non si avvia in modo appropriato</uri></li>
<li><uri link="#proxy">Cosa fare se il proxy richiede un'autenticazione</uri></li>
<li>
<uri link="#isoburning">Come masterizzare un file ISO</uri>
</li>
<li>
<uri link="#cpus">Quale CD/Stage usare per la propria CPU</uri>
</li>
</ul>
</body>
</section>
<section>
<title>Amministrazione dei pacchetti</title>
<body>
<ul>
<li><uri link="#ebuild">Qual è il formato dei pacchetti</uri></li>
<li><uri link="#configure">Eseguire autonomamente il passo ./configure nella compilazione di un pacchetto</uri></li>
<li><uri link="#norsync">Cosa fare se rsync non funziona</uri></li>
<li><uri link="#firewall">Usare emerge da una rete protetta da un firewall</uri></li>
<li><uri link="#unison">Eseguire rsync da un altro sistema operativo</uri></li>
<li><uri link="#manualdownload">Per connessioni lente: scaricare i sorgenti e aggiungerli in seguito al sistema</uri></li>
<li><uri link="#distfiles">I sorgenti .tar.gz del software installato rimangono
in /usr/portage/distfiles usando spazio prezioso. E' sicuro cancellare questi files?</uri></li>
<li><uri link="#tmpportage">Cosa c'è in /var/tmp/portage. E' sicuro cancellare i file e le directory in /var/tmp/portage?</uri></li>
</ul>
</body>
</section>
<section>
<title>Utilizzo</title>
<body>
<ul>
<li><uri link="#rootssh">OpenSSH permette il login solo come utente root.</uri></li>
<li><uri link="#rootX">Applicazioni X partono solo come utente root.</uri></li>
<li><uri link="#intkeyboard">Configurare un International Keyboard Layout.</uri></li>
<li><uri link="#rootdns">La risoluzione dei nomi (DNS) funziona solo per l'utente root.</uri></li>
<li><uri link="#crontab">Usare crontab con un utente non root.</uri></li>
<li><uri link="#numlock">Come avere numlock attivo ad ogni avvio del computer.</uri></li>
<li><uri link="#clear">Come avere il terminale pulito dopo ogni operazione di logout</uri></li>
<li>
<uri link="#suinx">Non si riescono ad eseguire applicazioni X come root dopo un comado su.
</uri>
</li>
</ul>
</body>
</section>
<section>
<title>Manutenzione</title>
<body>
<ul>
<li><uri link="#filecorruption">Come risolvere un problema di corruzione su filesystem ReiserFS.</uri></li>
<li><uri link="#metalogd">Metalogd non scrive i log in tempo reale.</uri></li>
</ul>
</body>
</section>
<section>
<title>Sviluppo</title>
<body>
<ul>
<li><uri link="#reportbugs">Come riportare un bug.</uri></li>
<li><uri link="#releases">Quanto spesso cambiano le release.</uri></li>
<li><uri link="#addfaq">Come aggiungere una domanda o una risposta a queste FAQ.</uri></li>
<li><uri link="#beeping">Lo speaker del computer suona come impazzito durante la compilazione di Mozilla. Come disabilitare i beep da console.</uri></li>
</ul>
</body>
</section>
<section>
<title>Risorse</title>
<body>
<ul>
<li><uri link="#resources">Dove trovare maggiori informazioni su Gentoo Linux.</uri></li>
<li><uri link="#buycd">Come acquistare un CD di Gentoo Linux.</uri></li>
<li><uri link="#mailinglist">Una replica ad un post nella mailing list di Gentoo, viene inviata all'autore originale e non a tutta la lista.</uri></li>
<li><uri link="#help">Non ho trovato una risposta alla mia domanda.</uri></li>
</ul>
</body>
</section>
</chapter>
<chapter>
<title>Per iniziare</title>
<section id="pronunciation">
<title>Significato di Gentoo e pronuncia</title>
<body>
<p>
<e>Gentoo</e> è un piccolo e veloce
pinguino, la pronuncia è "gen-too" (la "g"
in "gentoo" è morbida come in "gentile").
Il nome scientifico del pinguino è <e>Pygoscelis papua</e>, e
il nome Gentoo gli è stato dato dagli abitanti delle Isole
Falkland (Isole Malvinas).
</p>
</body>
</section>
<section id="differences">
<title>Cosa rende Gentoo differente</title>
<body>
<p>
Gentoo usa un sistema di porting BSD-like chiamato
<uri link="/proj/en/portage">Portage</uri>.
Il Portage è un sistema per la gestione di pacchetti
software che permette una grande flessibilità
per l'installazione e la manutenzione di un sistema Gentoo.
Fornisce inoltre, il supporto per opzioni da utilizzare
in fase di compilazione dei pacchetti attraverso
<uri link="/doc/it/handbook/handbook.xml?part=2&chap=2">flag USE</uri>,
dipendenze condizionali, "false" installazioni, installazioni sicure
(attraverso sandboxing) e disinstallazione di software, profili di sistema,
<uri link="/doc/it/handbook/handbook.xml?part=3&chap=2#doc_chap1">
protezione dei file di configurazione </uri> e diverse altre
<uri link="/doc/it/handbook/handbook.xml?part=2&chap=1">caratteristiche.</uri>
</p>
<p>
Con Gentoo è possibile costruire un intero sistema dai sorgenti
usando ottimizzazioni predefinite. L'utente ha inoltre il controllo
completo su quali pacchetti installare e quali no.
Gentoo fornisce anche numerose scelte sul tipo di installazione
così da far avere il sistema che più soddisfa le esigenze
dell'utente. Ecco perché Gentoo è chiamata <e>meta distribuzione</e>.
</p>
<p>
Gentoo ha un attivo e rapido sviluppo. Non solo gli <e>ebuild</e>
(il formato dei pacchetti di Gentoo) ma anche l'intera distribuzione
viene migliorata e aggiornata molto rapidamente.
Patch per i pacchetti sono velocemente integrate nell'albero principale,
la documentazione è aggiornata su base giornaliera, nuove caratteristiche
sono aggiunte frequentemente al portage, le release si succedono
velocemente.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Installazione</title>
<section id="optimizations">
<title>Tutto è realmente instabile usando ottimizzazioni come
"-O9 -ffast-math -fomit-frame-pointer".</title>
<body>
<p>
L'uso di ottimizzazioni maggiori di <c>-O3</c> non devono essere
usate, dato che non sono supportate dalla versione corrente di gcc.
Ottimizzazioni molto aggressive causano qualche volta, l'indirizzamento
del codice assembler in punti dove non farà più la stessa cosa.
</p>
<p>Prima di riportare un bug, compilare usando CFLAGS posto a <c>-march=<your_arch> -O2</c>.
</p>
</body>
</section>
<section id="password">
<title>Come cambiare la password di root (e di fatto ad ogni altro utente)</title>
<body>
<p>
Usare <c>passwd</c> per cambiare la password dell'utente attualmente in uso.
Per conoscere opzioni extra e settaggi, usare il comando <c>man passwd</c>
una volta completata l'installazione.
</p>
</body>
</section>
<section id="useradd">
<title>Come aggiungere un utente</title>
<body>
<p>
Il comando <c>adduser gentoo</c> aggiungerà un utente chiamato gentoo.
Il passo seguente sarà di dare al neo utente la password usando <c>passwd</c>
</p>
<p>
Invece di <c>adduser</c> è possibile usare anche il seguente comando:
</p>
<pre caption="Usare useradd">
# <i>useradd gentoo -m -G users,audio,wheel -s /bin/bash gentoo</i>
</pre>
<p>
Questo comando creerà l'utente gentoo, dandogli la possibilità
di usare le periferiche collegate al suono (<path>/dev/sound/*</path>),
permettendogli di diventare root (usando il comando <c>su</c>) in quanto facente
parte del gruppo wheel e assegnandogli come shell la <path>/bin/bash</path>.
</p>
<p>
E' possibile anche installare <c>superadduser</c> usando <c>emerge superadduser</c> e quindi digitare <c>superadduser gentoo</c> per aggiungere
un utente chiamato gentoo. Basta seguire le istruzioni date
da <c>superadduser</c>.
</p>
</body>
</section>
<section id="su">
<title>Come può un utente diventare root</title>
<body>
<p>
Per ragioni di sicurezza, gli utenti possono diventare
(o usare il comando <c>su</c>) root solo facendo parte del gruppo
<e>wheel</e>. Per aggiungere uno <c>username</c> al gruppo <e>wheel</e>
eseguite il seguente comando come root:
</p>
<pre caption="Aggiungere un utente al gruppo wheel">
# <i>gpasswd -a username wheel</i>
</pre>
</body>
</section>
<section id="devfs">
<title>Come disabilitare devfs</title>
<body>
<p>
Per usare Gentoo col "vecchio stile" dell'approccio <path>/dev</path>,
disabilitare devfs passando il parametro <c>gentoo=nodevfs</c> al kernel.
Se d'altra parte, si vuole usare <uri link="/doc/it/udev-guide.xml">udev</uri>
(solo per kernel sella serie 2.6), si può disabilitare devfs passando l'opzione
<c>devfs=nomount</c> al kernel. Si raccomanda la lettura della
<uri link="/doc/it/udev-guide.xml">udev guide</uri>.
</p>
</body>
</section>
<section id="upgrade">
<title>Aggiornare Gentoo da una release ad un'altra senza reinstallare</title>
<body>
<p>
Di fatto non ci sono differenze tra le varie release dopo l'installazione.
Gentoo 1.4 e successive sono basate sulle <c>glibc-2.3.x</c>.
Per questo eseguendo il comando <c>emerge --sync; emerge -u world</c>,
si allineerà rapidamente l'intero sistema all'ultima release di Gentoo.
La vera differenza tra le varie release stà solo nella
fase di installazione.
</p>
<p>
Si possono trovare maggiori informazioni sulla <uri link="gentoo-upgrading.xml">Gentoo
Upgrading Guide</uri>.
</p>
</body>
</section>
<section id="bootrescue">
<title>Il kernel non si avvia in modo appropriato</title>
<body>
<p>
Non è necessario rifare ogni passo dell'installazione, ma solo
quelli associati al kernel. Supponiamo si aver installato
Gentoo in <path>/dev/hda1</path> (/boot) e <path>/dev/hda3</path> (/) con
<path>/dev/hda2</path> come swap space:
</p>
<pre caption="Riconfigurazione del kernel">
<comment>Avviare dal LiveCD e aspettare il prompt</comment>
<comment>Quindi montare tutte le partizioni:</comment>
# <i>mount /dev/hda3 /mnt/gentoo</i>
# <i>mount /dev/hda1 /mnt/gentoo/boot</i>
# <i>swapon /dev/hda2</i>
# <i>mount -t proc none /mnt/gentoo/proc</i>
<comment>Fare il chroot e configurare il kernel</comment>
# <i>chroot /mnt/gentoo /bin/bash</i>
# <i>env-update && source /etc/profile</i>
# <i>cd /usr/src/linux</i>
# <i>make menuconfig</i>
<comment>Ora (de)selezioniamo quello che (de)selezionato in modo errato al
</comment>
<comment>tentativo precedente. Uscire salvando la configurazione corrente
e ricompilare il kernel:</comment>
# <i>make dep && make bzImage modules modules_install</i>
<comment>Copiare il nuovo bzImage sovrascrivendo la versione precedente:</comment>
# <i>cp arch/i386/boot/bzImage /boot</i>
<comment>Se usate LILO, rieseguire lilo -- gli utenti GRUB dovrebbe saltare questo passo:</comment>
# <i>/sbin/lilo</i>
<comment>Uscire dal chroot e riavviare.</comment>
# <i>exit</i>
# <i>umount /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo</i>
# <i>reboot</i>
</pre>
<p>
Se d'altra parte il problema è legato alla configurazione del bootloader,
seguire gli stessi passi, ma invece di configurare/compilare il kernel
occorre riconfigurare il bootloader (la ricompilazione non
è necessaria).
</p>
</body>
</section>
<section id="proxy">
<title>Il proxy richiede un'autenticazione</title>
<body>
<p>
Usando <c>wget</c>, usare la seguente
sintassi per l'autenticazione:
</p>
<pre caption = "Autenticazione Proxy usando wget">
# <i>wget --proxy-user=</i><comment>username</comment><i> --proxy-passwd=</i><comment>password</comment><i> <url></i>
</pre>
<p>
Per automatizzare il procedimento, occorre definirlo in
<path>/etc/make.conf</path>:
</p>
<pre caption = "/etc/make.conf">
FETCHCOMMAND="wget --proxy-user=<comment>username</comment> --proxy-passwd=<comment>password</comment> \
-t 5 --passive-ftp -P \${DISTDIR} \${URI}"
RESUMECOMMAND="/usr/bin/wget --proxy-user=<comment>username</comment> --proxy-passwd=<comment>password</comment> \
-c -t 5 --passive-ftp -P \${DISTDIR} \${URI}"
</pre>
<p>
Per riuscire ad usare <c>rsync</c> con un proxy, configurare la
variabile ambiente RSYNC_PROXY come segue:
</p>
<pre caption="Configurare /etc/make.conf per RSYNC">
RSYNC_PROXY="<comment>username</comment>:<comment>password</comment>@<comment>proxy-server</comment>:<comment>port</comment>"
</pre>
</body>
</section>
<section id="isoburning">
<title>Come masterizzare un file ISO</title>
<body>
<p>
Sarà necessario masterizzare il file nella cosiddetta modalità <e>raw</e>. Questo significa che <e>non</e> si dovrebbe mettere il file sul CD, ma interpretare
il file come un intero CD.
</p>
<p>
Ci sono molti strumenti per masterizzare CD e coprirli tutti diventerebbe un problema infinito. Per cui verrano esaminati alcuni degli strumenti più popolari.
</p>
<ul>
<li>
Usando EasyCD Creator selezionare <c>File</c>, <c>Record CD from CD image</c> e cambiare <c>Files of type</c> in <c>ISO image file</c>.
Collocare il file ISO e cliccare su <c>Open</c>.
Al termine, cliccare su <c>Start recording</c> per masterizzare
l'immagine ISO.
</li>
<li>
Usando Nero Burning ROM, cancellare il wizard che appare automaticamente e selezionare <c>Burn Image</c> dal menu <c>File</c>. Selezionare
l'immagine da masterizzare e cliccare su <c>Open</c>.
Al termine cliccare sul pulsante <c>Burn</c> e l'immagine verrà
scritta sul CD.
</li>
<li>
Usando cdrecord, digitare semplicemente <c>cdrecord dev=/dev/hdc</c>
(sostituire a <path>/dev/hdc</path> il percorso della periferica
che identifica il masterizzatore) seguito dal percorso del file ISO.
</li>
<li>
Usando K3B, selezionare <c>Tools</c> > <c>CD</c> > <c>Burn Image</c>.
Al termine collocate il file ISO all'interno dell'area 'Image to Burn' e cliccare su <c>Start</c>.
</li>
<li>
Usando Mac OS X Panther, lanciare <c>Disk Utility</c> da
<path>Applications/Utilities</path>, selezionare <c>Open</c> dal menu
<c>Images</c>, selezionare l'immagine montata nella finestra principale
e selezionare <c>Burn</c> nel menu <c>Images</c>.
</li>
<li>
Usando Mac OS X Jaguar, lanciare <c>Disk Copy</c> da
<path>Applications/Utilities</path>, selezionare <c>Burn Image</c>
dal menu <c>File</c>, selezionare la ISO e cliccare il pulsante <c>Burn</c>.
</li>
</ul>
</body>
</section>
<section id="cpus">
<title>Quale CD/Stage usare per la propria CPU</title>
<body>
<p>
Prima di tutto occorre conoscere la CPU in uso. Supponiamo sia un Pentium-M.
Ci sarà bisogno di sapere che CPU è, le istruzioni corrette, la compatibilità. Per questo, consultare il sito web del produttore della CPU, o
<uri link="http://www.google.com">Google</uri>.
</p>
<p>
Per il Pentium-M, si scopre che è un Pentium-3 con istruzioni SSE, il che
lo rende compatibile con le istruzioni del Pentium-4. Così, per Pentium-M
si potranno scegliere i CD/Stage per il Pentium-4.
</p>
<p>
Se non si è sicuri, scegliere un CD/Stage più "grossolano", per esempio i686
o anche generico.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Amministrazione dei Pacchetti</title>
<section id="ebuilds">
<title>Formato dei pacchetti</title>
<body>
<p>
I pacchetti sono nel portage tree come <e>ebuild</e> autobuild scripts (script autocompilabili);
Gentoo è primariamente una distribuzione ports-based, il che significa
che vengono provveduti scripts (<c>.ebuild</c> files) e uno speciale sistema
(Portage) attraverso cui costruire le applicazioni dai sorgenti.
Generalmente vengono rilasciati pacchetti precompilati solo per release e snapshot.
Il <uri link="/proj/en/devrel/handbook/handbook.xml?part=2&chap=1">Development HOWTO</uri>
spiega il contenuto di uno script ebuild in dettaglio.
Per complete release ISO, viene creata un'intera suite di pacchetti in formato
binario <c>.tbz2</c> (compatibile con <c>tar.bz2</c>
con meta-informazioni attaccate alla fine del file.)
</p>
</body>
</section>
<section id="configure">
<title>Eseguire autonomamente il passo ./configure nella compilazione di un pacchetto</title>
<body>
<p>
Il metodo esposto funzionerà solo per ebuild semplici (per esempio dove basta eseguire <c>./configure</c> e <c>make && make install</c>).
Accertarsi di guardare l'ebuild per vedere come Gentoo lo avrebbe
usato per l'installazione.
</p>
<p>
Prima esegure l'unpack dell'ebuild: <c>ebuild /usr/portage/<category>/<package>/<ebuild> unpack</c>.
</p>
<p>
Quindi andare in <path>/var/tmp/portage/<package>-<version>/work</path>.
In questa directory troverete tutti i sorgenti del pacchetto.
Eseguire quindi tutti i passi per configurare e compilare
il pacchetto.
</p>
<p>
Terminata la compilazione, eseguire <c>touch
/var/tmp/portage/<package>-<version>/.compiled</c>
per far credere al Portage di aver configurato e
compilato il pacchetto.
Terminare il processo con
<c>ebuild /usr/portage/<category>/<package>/<ebuild>
merge</c>.
</p>
</body>
</section>
<section id="norsync">
<title>Cosa fare se rsync non funziona</title>
<body>
<p>
Se siete all'interno di un'area protetta da un firewall che non
permette di utilizzare rsync, si può usare
<c>emerge-webrsync</c> che scaricherà ed
installerà un'istantanea del Portage
attraverso una normale connessione HTTP.
<c>emerge-webrsync</c> usa <c>wget</c> per
scaricare, in modo tale da supportare
completamente il proxy.
</p>
<pre caption="Usare emerge-webrsync">
~# emerge-webrsync</pre>
</body>
</section>
<section id="firewall">
<title>Usare emerge in una rete protetta da un firewall</title>
<body>
<p>
Occorre modificare le impostazioni di PROXY in <path>/etc/make.conf</path>.
Se non funziona ancora, editare <path>/etc/wget/wgetrc</path>
e modificare appropriatamente http_proxy e ftp_proxy.
</p>
</body>
</section>
<section id="unison">
<title>Eseguire rsync da un altro sistema operativo</title>
<body>
<p>
C'è un programma chiamato unison che
gira sia sotto UNIX che sotto Win32,
E' disponibile su <uri>http://www.cis.upenn.edu/~bcpierce/unison/</uri>.
</p>
</body>
</section>
<section id="manualdownload">
<title>Per connessioni lente: scaricare i sorgenti e aggiungerli in seguito al sistema
</title>
<body>
<p>
Eseguire <c>emerge --pretend package</c>
in modo da vedere quali programmi devono essere installati.
Per avere la lista dei sorgenti per questi pacchetti ed il
sito dai quali scaricarli, usare <c>emerge -fp package</c>.
Scaricare i sorgenti e metterli su un supporto qualsiasi.
Copiare quindi i sorgenti in <path>/usr/portage/distfiles</path>
ed eseguire <c>emerge package</c>.
</p>
</body>
</section>
<section id="distfiles">
<title>I sorgenti .tar.gz del software installato rimangono
in /usr/portage/distfiles usando spazio prezioso. E' sicuro cancellare questi files?</title>
<body>
<p>
Si', potete sicuramente cancellare questi files.
Ma se usate una connessione lenta, come un modem, potete
voler tenere l'archivio se possibile; spesso
alcuni ebuild sono rilasciati per la stessa versione di un software specifico.
Se avete cancellato l'archivio e aggiornato il software esso dovrà essere scaricato nuovamente da internet.
</p>
</body>
</section>
<section id="tmpportage">
<title>Cosa c'è in /var/tmp/portage E' sicuro cancellare i file
e le directory in /var/tmp/portage?</title>
<body>
<p>
Dusante la compilazione, Gentoo salva i sorgenti del pacchetto in
<path>/var/tmp/portage</path>. Non ci sono problemi a cancellare
tutto il contenuto di questa directory.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Utilizzo</title>
<section id="rootssh">
<title>OpenSSH permette il login solo come utente root
</title>
<body>
<p>
Questo è molto probabilemtente
è causato dal fatto che il vostro
user non ha una shell valida.
Controllate la riga riguardante
il vostro user in <path>/etc/passwd</path>
e accertatevi che finisca con /bin/bash (o qualsiasi altra shell).
Se non è cosi', dovete specificare una shell per il vostro user.
Questo puo' essere fatto usando il comando usermod, in questo modo:
</p>
<pre caption="Uso di usermod"># <i>usermod -s /bin/bash user</i></pre>
</body>
</section>
<section id="rootX">
<title>Applicazioni X vengono eseguite solo come root.</title>
<body>
<p>
La directory <path>/tmp</path> ha
permessi sbagliati (occorre definire lo stiky bit).
Digitare il seguente comando come root:
</p>
<pre caption="Cambiare i permessi di /tmp"># <i>chmod 1777 /tmp</i></pre>
</body>
</section>
<section id="intkeyboard">
<title>Configurare un layout internazionale per
la tastiera</title>
<body>
<p>
Modoficare la variabile <c>KEYMAP</c>
in <path>/etc/rc.conf</path>.
Quindi riavviare il computer
o far ripartire lo script keymaps
come segue:
<c>/etc/init.d/keymaps restart</c>.
</p>
</body>
</section>
<section id="rootdns">
<title>La risoluzione dei nomi in DNS funziona
solo per root.</title>
<body>
<p>
Il file <path>/etc/resolv.conf</path>
ha diritti sbagliati; cambiare i permessi come segue:
</p>
<pre caption="Cambiare i permessi di /etc/resolv.conf"># <i>chmod 0644 /etc/resolv.conf</i></pre>
</body>
</section>
<section id="crontab">
<title>Usare crontab con un utente non root</title>
<body>
<p>
Aggiungere l'utente al gruppo <c>cron</c>.
</p>
</body>
</section>
<section id="numlock">
<title>Avere il numlock attivo ad ogni riavvio</title>
<body>
<p>
Facendo il login in modalità grafica, o volendo che numlock
sia attivato alla digitazione di <c>startx</c>, eseguire
<c>emerge numlockx</c> e aggiungere <c>/usr/X11R6/bin/numlockx</c>
in <path>/etc/X11/xinit/xinitrc</path> (per <c>startx</c>) o
<path>/etc/X11/Sessions/</path> (per qualsiasi login manager grafico),
come ad esempio <path>/etc/X11/Sessions/Gnome</path> per il GDM.
</p>
<p>
Gli utenti di GNOME 2.6 noteranno comunque che quanto detto sopra non
funziona. Essi dovranno invece far partire il tool <c>gnome-session-properties</c>. In cima alla finestra, selezionare <c>Startup Programs</c> e cliccare sul bottone <c>Add</c>. Inserire l'ubicazopne del tool <c>numlockx</c>
(per esempio <path>/usr/X11R6/bin/numlockx</path>) ed uscire dal programma.
</p>
<p>
Lavorando da linea di comando, occorre solo eseguire
<c>rc-update add numlock default</c> e numlock sarà attivato
al prossimo riavvio.
</p>
</body>
</section>
<section id="clear">
<title>Avere il terminale pulito ad ogni logout</title>
<body>
<p>
Per avere il terminale pulito, aggiungere <c>clear</c> a
<path>~/.bash_logout</path> del vostro username.
</p>
<pre caption = "Ripulire il terminale durante il logout">
$ <i>echo clear >> ~/.bash_logout</i></pre>
<p>
Per rendere la modifica disponibile ad ogni nuovo utente, eseguire lo stesso comando per
<path>/etc/skel/.bash_logout</path>:
</p>
<pre caption = "Pulire il terminale di ogni nuovo utente al logout">
# <i>echo clear >> /etc/skel/.bash_logout</i></pre>
</body>
</section>
<section id="suinx">
<title>Non si riescono ad eseguire applicazioni come root dopo un comando su.</title>
<body>
<p>
Questo problema sembra presentarsi con login grafici. Utenti che
usano X partendo da <c>startx</c> non hanno questo problema.
Il problema è un
<uri link="http://bugs.gentoo.org/show_bug.cgi?id=14560">bug</uri> nelle PAM di Gentoo. La soluzione è comunque semplice, basta aggiungere la seguente
linea a
<path>/etc/profile</path>.
</p>
<pre caption="Export XAUTHORITY">
export XAUTHORITY="${HOME}/.Xauthority"
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Manutenzione</title>
<section id="filecorruption">
<title>Come risolvere un problema di corruzione su filesystem ReiserFS</title>
<body>
<p>
Se la partizione
ReiserFS è corrotta, provare a
fare il boot dal CD di installazione di Gentoo Linux ed
eseguire <c>reiserfsck --rebuild-tree</c> sul
filesystem corrotto.
Questo dovrebbe rendere nuovamente consistente il
filesystem, anche se è possibile la perdita di qualche
file o directory a causa della corruzione.
</p>
</body>
</section>
<section id="metalogd">
<title>Metalogd non scrive i log in tempo reale</title>
<body>
<p>
Metalog scrive l'output su disco in blocchi, per cui i messaggi
non sono registrati immediatamente nei log di sistema. Durante
i test di un daemon, questo comportamento che predilige
la performance non è di grande aiuto. Per ovviare a questo
comportamento, inviare a metalog un segnale USR1 per disabilitare
temporaneamente il buffering dei messaggi (il che significa che <c>
tail -f <path>/var/log/everything/current</path></c> funzionerà in
tempo reale come ci si aspetta) e un segnale USR2 per ripristinare
il normale comportamento di metalog. Per disabilitare permanentemente
il buffering, modificare le opzioni di metalog in
<path>/etc/conf.d/metalog</path> da METALOG_OPTS="-B" a METALOG_OPTS="-B -s".
</p>
<pre caption="Abilitare/disabilitare il buffering di metalog">
<comment>Per disabilitare il buffering:</comment>
# <i>killall -USR1 metalog</i>
<comment>Per riabilitare il buffering:</comment>
# <i>killall -USR2 metalog</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Sviluppo</title>
<section id="reportbugs">
<title>Come segnalare un bug</title>
<body>
<p>
Per bugs all'interno di uno specifico programma,
contattare direttamente l'autore dello stesso.
Altrimenti usare il Bugzilla bug tracker
all'indirizzo <uri>http://bugs.gentoo.org</uri>.
Potete anche venire a trovarci in <c>#gentoo</c>
sul network IRC <uri link="http://www.freenode.net"> Freenode</uri>.
</p>
</body>
</section>
<section id="releases">
<title>Quanto spesso cambiano le release</title>
<body>
<p>
L'annuncio di nuove release viene fatto
sulla mailing-list <uri link="http://www.gentoo.org/main/en/lists.xml">gentoo-announce</uri>.
In realtà i pacchetti stessi vengono aggiornati non appena il principale
autore ha rilasciato nuovo codice. Per sapere quando saranno disponibili
nuove relase controllare la pagina <uri link="/proj/en/releng">Release Engineering Project</uri>.
</p>
</body>
</section>
<section id="addfaq">
<title>Come aggungere una domanda o una risposta a questa FAQ</title>
<body>
<p>
Sottomettere un nuovo bug su <uri>http://bugs.gentoo.org</uri> a aggiungeterlo al
prodotto "Docs-user", componente "Gentoo Linux FAQ".
</p>
</body>
</section>
<section id="beeping">
<title>Lo speaker del computer suona come impazzito durante la compilazione di Mozilla. Come disabilitare i beep da console</title>
<body>
<p>
I beep della console possono essere disabilitati
usando setterm, come segue:
</p>
<pre caption="Uso di setterm"># <i>setterm -blength 0</i>
</pre>
<p>
Per disabilitare i suoni ad ogni riavvio
inserire il suddetto comando nel file <path>/etc/conf.d/local.start</path>. Comunque questo disabilita il suono
solo per il terminale corrente. Per disabilitare
il suono di tutti i terminali, filtrare
l'output del comando sul terminale desiderato,
come segue:
</p>
<pre caption="Usare setterm (bis)"># <i>setterm -blength 0 > /dev/vc/1</i>
</pre>
<p>
Sostituire a /dev/vc/1 il terminale su
cui disabilitare i suoni.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Risorse</title>
<section id="resources">
<title>Dove trovare maggiori informazioni su Gentoo Linux</title>
<body>
<p>
La documentazione ufficiale di Gentoo può
essere trovata su <uri>http://www.gentoo.org</uri>;
mentre informazioni generali su Linux si possono trovare
su <uri>http://www.tldp.org</uri>.
</p>
</body>
</section>
<section id="buycd">
<title>Come acquistare un CD di Gentoo Linux</title>
<body>
<p>
I LiveCD per tutte le architetture supportate sono disponibili su <uri link="http://store.gentoo.org/">Gentoo Store</uri>.
Comprando un CD dallo store darete anche un supporto al
nostro sviluppo. Per questo, se possibile, considerate l'acquisto dal nostro
store :-)
</p>
<p>
Potete anche trovare una lista di rivenditori dei CD sulla pagina
<uri link = "http://www.gentoo.org/main/en/where.xml">Get Gentoo!</uri>
</p>
</body>
</section>
<section id="mailinglist">
<title>Una replica ad un post nella mailing list di Gentoo, viene inviata all'autore originale e non a tutta la lista</title>
<body>
<p>
Gli amministratori della mailing list hanno deciso di andare contro
l'alterazione degli headers per avere risposte che vanno sulla mailing list.
Ci sono varie ragioni per questo. Per esempio, se un iscritto ha una
casella di posta piena, l'intera lista riceverà notifica di questo ogni
volta che qualcosa viene inviato alla lista.
</p>
<p>
Molti client di posta hanno la funzione "reply to all". Questo assicura
che la replica verrà inviata alla mailing list e al mittente originale.
Molti utenti di client di posta testuali conoscono il metodo da
usare, altrimenti in Pine c'è un'opzione "reply to group".
C'è un documento non ufficiale che spiega come
settare Mutt in modo da replicare alla lista su
<uri link="http://forums.gentoo.org/viewtopic.php?t=1085">forums.gentoo.org</uri>.
</p>
<p>
Ad alcuni membri della lista non piace questo metodo, ma è
stato discusso ampiamente quando sorse il problema, con argomentazioni
da entrambe le parti. Comunque gli amministratori della lista hanno
deciso di mantenere questa strada. Discussioni sulla mailing list hanno
qualche volta avuto spiegazioni cortesi e altre volte commenti piuttosto bruschi
sul controllo degli archivi. Comunque gli amministratori sono dispiaciuti
dell'inconveniente che questo può portare ad alcuni utenti, ma al presente
è preferibile ad altre alternative per alcune ragioni, molte
delle quali sono spiegate <uri link="http://www.unicom.com/pw/reply-to-harmful.html">qui</uri>.
</p>
</body>
</section>
<section id="help">
<title>Non ho trovato risposta alla mia domanda</title>
<body>
<p>
Un buon inizio è navigare tra i vari documenti presenti
sul <uri link="http://www.gentoo.org/doc/it/index.xml">sito</uri>, oltre alle
mailing list di Gentoo Linux delle quali
c'è una lista su <uri link="http://www.google.com">Google</uri>.
Per ricercare
all'interno delle Gentoo list, digitando
solo "lists.gentoo.org qualcosa" per
' ricercare "qualcosa" all'interno delle mailing list
di Gentoo.
Se tutto questo non vi dà la risposta,
venite a trovarci sul nostro canale irc <c>#gentoo</c> su <uri>irc.freenode.net</uri>.
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: ldap-howto.xml --]
[-- Type: text/xml; name="ldap-howto.xml", Size: 18811 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/it/ldap-howto.xml">
<title>Gentoo Guide all'autenticazione OpenLDAP </title>
<author title="Autore">
<mail link="sj7trunks@gentoo.org">Benjamin Coles</mail>
</author>
<author title="Revisore">
<mail link="swift@gentoo.org">Sven Vermeulen</mail>
</author>
<author title="Revisore">
<mail link="tseng@gentoo.org">Brandon Hale</mail>
</author>
<author title="Revisore">
<mail link="bennyc@gentoo.org">Benny Chuang</mail>
</author>
<author title="Traduttore">
<mail link="emorelli@gentoo.it">Enrico Morelli</mail>
</author>
<author title="Traduttore">Team Italiano</author>
<abstract>
Questa guida introduce le basi di LDAP e mostra come configurare
OpenLDAP allo scopo di autenticare un gruppo di computer Gentoo.
</abstract>
<license />
<version>0.17</version>
<date>16 Aprile 2005</date>
<chapter>
<title>Iniziare con OpenLDAP</title>
<section>
<title>Cos'è LDAP?</title>
<body>
<p>
LDAP è l'acronimo di <e>Lightweight Directory Access Protocol</e>.
Basato su X.500, comprende molte delle sue funzioni primarie,
ma non include molte delle funzioni esoteriche che X.500 possiede.
Ma cos'è questo X.500 e cosa centra con LDAP?
</p>
<p>
Nel concetto OSI, l'X.500 è un modello per i Directory Service.
Contiene le definizioni per i namespace ed i protocolli
per la ricerca e l'aggiornamento delle directory.
Comunque, X.500 è stato trovato essere eccessivo in molte
situazioni. Entriamo in LDAP. Come l'X.500, provvede
un modello data/namespace per le directory ed anche un protocollo.
Comunque, LDAP è progettato per essere eseguito direttamente
al di sopra dello stack TCP/IP. Si pensi a LDAP come una
versione più snella di X.500.
</p>
</body>
</section>
<section>
<title>Cos'è una directory</title>
<body>
<p>
Una directory è un database specializzato progettato
per frequenti richieste ma infrequenti aggiornamenti.
Al contrario di database generali, non contiene
il supporto per transazioni o funzionalità di roll-back.
Le directory sono facilmente replicabili per incrementarne
la disponibilità e l'affidabilità. Quando le directory vengono
replicate, sono permesse inconsistenze temporanee finché
non divengono eventualmente sincronizzate.
</p>
</body>
</section>
<section>
<title>Come sono strutturate le informazioni</title>
<body>
<p>
Tutte le informazioni all'interno di una directory
sono strutturate gerarchicamente. Inoltre, se si vogliono
inserire dati dentro una directory, la directory
deve sapere come memorizzare questi dati all'interno
di un albero. Si veda l'esempio di una finta compagnia
e ad un albero stile Internet:
</p>
<pre caption = "Struttura organizzativa di GenFic, una compagnia finta di Gentoo">
dc: com
|
dc: genfic <comment>(Organisation)</comment>
/ \
ou: people servers <comment>(Organisational Units)</comment>
/ \ ..
uid: .. jhon <comment>(OU-specific data)</comment>
</pre>
<p>
Dato che non sono stati introdotti dati nel database in questo
schema ascii, ogni nodo di questo albero deve essere definito.
Per dare un nome ad ogni nodo, LDAP usa un naming scheme.
Molte distribuzioni LDAP (incluso OpenLDAP) contengono già
un certo numero di schemi predefiniti (generalmente approvati),
come inetorgperson, uno schema frequentemente usato
per definire utenti.
</p>
<p>
Utenti interessati sono incoraggiati a leggere la
<uri link="http://www.openldap.org/doc/admin21/">OpenLDAP Admin Guide</uri>.
</p>
</body>
</section>
<section>
<title>Per cosa si usa LDAP</title>
<body>
<p>
LDAP può essere usato per vari scopi. Questo documento si focalizza
sulla gestione centralizzata degli utenti, mantenendo tutti gli
account utente in una singola collocazione LDAP (il che non significa
che sia alloggiato su un singolo server, LDAP supporta scalabilità e
ridondanza), sono comunque raggiungibili anche altri obiettivi usando LDAP.
</p>
<ul>
<li>Infrastruttura per chiavi pubbliche</li>
<li>Calendari condivisi</li>
<li>Rubriche condivise</li>
<li>Depositi per DHCP, DNS, ...</li>
<li>
Direttive di classe per la configurazione di sistemi (tenendo traccia
delle configurazioni di vari server)
</li>
<li>...</li>
</ul>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione di OpenLDAP</title>
<section>
<title>Configurazione iniziale</title>
<body>
<note>
In questo documento si userà l'indirizzo genfic.com come
esempio. Si dovrà naturalmente cambiarlo per adattarlo allo scopo da raggiungere.
Comunque, ci si assicuri che il nodo iniziale sia il top level di un dominio
ufficiale (net, com, cc, be, it, ...).
</note>
<p>
Prima di tutto occorre installare tutti i componenti necessari
sul proprio server:
</p>
<pre caption="Installazione di OpenLDAP">
# <i>emerge openldap pam_ldap nss_ldap migrationtools</i>
# <i>chown ldap:ldap /var/lib/openldap-ldbm /var/lib/openldap-data /var/lib/openldap-slurp</i>
</pre>
<p>
Editare <path>/etc/openldap/slapd.conf</path> e aggiungere
ciò che segue a destra di <c>core.schema</c>:
</p>
<pre caption="/etc/openldap/slapd.conf">
<comment># Includere i data schemes necessari</comment>
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
<comment># Usare md5 per fare l'hash delle password</comment>
password-hash {md5}
<comment># Definire le proprietà SSL e TLS (opzionale)</comment>
TLSCertificateFile /etc/ssl/ldap.pem
TLSCertificateKeyFile /etc/openldap/ssl/ldap.pem
TLSCACertificateFile /etc/ssl/ldap.pem
<comment>Più avanti nel file...</comment>
database ldbm
suffix "dc=genfic,dc=com"
rootdn "cn=Manager,dc=genfic,dc=com"
rootpw <i>{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==</i>
directory /var/lib/openldap-ldbm
index objectClass eq
<comment>
Si può avere una password cryptata come quella sopra, con slappasswd -h {Md5}</comment>
</pre>
<p>
Editare il file di configurazione di LDAP:
</p>
<pre caption="/etc/openldap/ldap.conf">
# <i>nano -w /etc/openldap/ldap.conf</i>
<comment>Aggiungere...</comment>
BASE dc=genfic, dc=com
URI ldaps://auth.genfic.com:636/
TLS_REQCERT allow
</pre>
<p>
Si generi ora un certificato SSL per rendere
sicura la directory. Occorre rispondere alle domande che si ricevono
nel miglior modo possibile. Alla richiesta del <e>Common Name</e>, si inserisca
il nome che i client useranno quando contatteranno il server.
Di solito è il domainname completo del server (p.e. <path>auth.genfic.com</path>).
</p>
<pre caption="Generazione di un certificato SSL">
# <i>cd /etc/ssl</i>
# <i>openssl req -config /etc/ssl/openssl.cnf -new -x509 -nodes -out \
ldap.pem -keyout /etc/openldap/ssl/ldap.pem -days 999999</i>
</pre>
<p>
Editare ora <path>/etc/conf.d/slapd</path> e aggiungere ciò che
segue, scommentando le linee esistenti:
</p>
<pre caption="/etc/conf.d/slapd">
OPTS="-h 'ldaps:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"
</pre>
<p>
Far partire slapd:
</p>
<pre caption = "Avvio di SLAPd">
# <i>/etc/init.d/slapd start</i>
</pre>
<p>
Si può fare un test col seguente comando:
</p>
<pre caption = "Testare il demone SLAPd">
# <i>ldapsearch -D "cn=Manager,dc=genfic,dc=com" -W</i>
</pre>
<p>
Se si riceve un errore, provare ad aggiungere <c>-d 255</c>
per incermentare la verbosità e risolvere il problema.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Migrare dati esistenti</title>
<section>
<title>Migrare account utente</title>
<body>
<p>
Si migreranno ora gli account utente. Aprire
<path>/usr/share/migrationtools/migrate_common.ph</path>
ed editare ciò che segue:
</p>
<pre caption="/usr/share/migrationtools/migrate_common.ph">
$DEFAULT_BASE = "dc=genfic,dc=com";
$EXTENDED_SCHEMA = 1;
<comment># Commentate queste linee a meno che non abbiate un mail sheme caricato</comment>
<comment>#$DEFAULT_MAIL_DOMAIN = "genfic.com";</comment>
<comment>#$DEFAULT_MAIL_HOST = "mail.genfic.com";</comment>
</pre>
<p>
Eseguire quindi gli script per la migrazione:
</p>
<pre caption="Esecuzione dei migration script">
# <i>export ETC_SHADOW=/etc/shadow</i>
# <i>cd /usr/share/migrationtools</i>
# <i>./migrate_base.pl > /tmp/base.ldif</i>
# <i>./migrate_group.pl /etc/group /tmp/group.ldif</i>
# <i>./migrate_hosts.pl /etc/hosts /tmp/hosts.ldif</i>
# <i>./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif</i>
</pre>
<p>
Questi ultimi passi migrano i file specificati nei file ldif
letti da LDAP. Aggiungere quindi i file alla directory:
</p>
<pre caption="Importare i dati nella directory">
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/base.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/group.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/passwd.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/hosts.ldif</i>
</pre>
<p>
Se si raggiunge un errore nei file ldif, si può riprendere da dove
si è terminato usando <c>ldapadd -c</c>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione del client</title>
<section>
<title>Configurazione di PAM</title>
<body>
<p>
Il primo passo è di configurare PAM per permettere l'autorizzazione
LDAP. Installare
<c>net-libs/pam_ldap</c> per fornire il supporto dell'autorizzazione
LDAP a PAM e
<c>net-libs/nss_ldap</c> in modo tale che il sistema
possa far fronte ai server LDAP per informazioni aggiuntive
(usate da <path>nsswitch.conf</path>).
</p>
<pre caption="Installare pam_ldap e nss_ldap">
# <i>emerge pam_ldap nss_ldap</i>
</pre>
<p>
Editare <path>/etc/pam.d/system-auth</path> in modo tale che assomigli a quello che segue:
</p>
<pre caption="/etc/pam.d/system-auth">
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_unix.so likeauth nullok shadow
auth sufficient /lib/security/pam_ldap.so use_first_pass
auth required /lib/security/pam_deny.so
account sufficient /lib/security/pam_unix.so
account sufficient /lib/security/pam_ldap.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok use_authtok shadow md5
password sufficient /lib/security/pam_ldap.so use_authtok
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0
session optional /lib/security/pam_ldap.so
</pre>
<!-- Questo dovrebbe funzionare, vedere #87930
<note>
Se il login su questi sistemi usando ssh non funziona, provare a interscambiare
le due righe <c>auth sufficient</c>. Comunque, con questo interscambio, alcuni tool come <c>su</c> si
rifiuteranno di funzionare correttamente.
</note>
-->
<p>
Cambiare <path>/etc/ldap.conf</path> in modo da avere:
</p>
<pre caption="/etc/ldap.conf">
<comment>#host 127.0.0.1</comment>
<comment>#base dc=padl,dc=com</comment>
ssl start_tls
ssl on
suffix "dc=genfic,dc=com"
<comment>#rootbinddn uid=root,ou=People,dc=genfic,dc=com</comment>
uri ldaps://auth.genfic.com/
pam_password exop
ldap_version 3
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid
nss_base_passwd ou=People,dc=genfic,dc=com
nss_base_shadow ou=People,dc=genfic,dc=com
nss_base_group ou=Group,dc=genfic,dc=com
nss_base_hosts ou=Hosts,dc=genfic,dc=com
scope one
</pre>
<p>
Si configurino infine i propri client in modo che
controllino il LDAP per gli account di sistema:
</p>
<pre caption="/etc/nsswitch.conf">
passwd: files ldap
group: files ldap
shadow: files ldap
</pre>
<p>
Per testare le modifiche, digitare:
</p>
<pre caption="Test LDAP Auth">
# <i>getent passwd|grep 0:0</i>
<comment>Si dovrebbero ricevere due righe di risposta:</comment>
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
</pre>
<p>
Se si nota che una delle linee poste nel proprio
<path>/etc/ldap.conf</path> era commentata
(la linea <c>rootbinddn</c>), non c'è da preoccuparsi, non ce n'è
bisogno a meno che non si voglia cambiare la
password degli utenti come superuser. In questo caso c'è
bisogno di mettere in chiaro la password di root
in <path>/etc/ldap.secret</path>. Questo è
<brite>PERICOLOSO</brite> e si dovrebbe cambiare l'accesso
del file in 600. Quello che faccio io è di lasciare questo
file in bianco e quando ho bisogno di cambiare la password
a qualcuno che è sia in ldap che in <path>/etc/passwd</path>,
metto la password di root nel file suddetto per 10 secondi mentre
cambio la password dell'utente e quindi la rimuovo subito
dopo che ho terminato.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Configurazioni per LDAP Server Security</title>
<section>
<title>Permessi OpenLDAP</title>
<body>
<p>
Se si dà un'occhiata a <path>/etc/openldap/slapd.conf</path>
si può notare che è possibile specificare le ACL (o permessi)
di quali dati gli utenti possono leggere e/o scrivere:
</p>
<pre caption="/etc/openldap/slapd.conf">
access to attrs="userPassword"
by dn="uid=root,ou=people,dc=genfic,dc=com" write
by dn="uid=John, ou=People,dc=genfic,dc=com" write
by anonymous auth
by self write
by * none
access to *
by dn="uid=root,ou=People,dc=genfic,dc=com" write
</pre>
<p>
Questo dà l'accesso a tutto ciò che un utente può modificare.
Se questa è un'informazione proprietaria, se ne ha l'accesso in scrittura; se l'informazione
è di un altro utente, la si può leggere; utenti anonimi devono
inviare login e password per avere l'accesso. Ci sono
quattro livelli, partendo dal più basso al più alto:
<c>auth search read write</c>.
</p>
<p>
La prossima ACL è leggermente più sicura, blocca infatti
ad un utente normale la lettura delle password shadow
di altri utenti:
</p>
<pre caption="/etc/openldap/slapd.conf">
access to dn=".*,dc=genfic,dc=com" attr="userPassword"
by dn="uid=root,ou=people,dc=genfic,dc=com" write
by dn="uid=John, ou=People,dc=genfic,dc=com" write
by anonymous auth
by self write
by * search
access to *
by dn="uid=root,ou=People,dc=genfic,dc=com" write
by * read
</pre>
<p>
Questo esempio dà a root e John l'accesso in
lettura/scrittura/ricerca in tutto l'albero
sotto <path>dc=genfic,dc=com</path>.
Questo permette agli utenti di cambiare le proprie
<path>userPassword</path>. Così per come finisce
la dichiarazione del filtro ognuno ha la possibilità
di ricercare ma non di leggere i risultati di tale ricerca.
Si possono avere acl multiple ma le regole vengono processate
dal basso verso l'alto, così quelle iniziali dovrebbero essere
quelle più restrittive.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Lavorare con OpenLDAP</title>
<section>
<title>Manutenzione delle directory</title>
<body>
<p>
Si può iniziare ad usare le directory per autenticare gli utenti
in apache/proftpd/qmail/samba. Si possono amministrare con Webmin,
che provvede un'interfaccia veramente facile. Si può anche
usare gq o directory_administrator.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Riconoscimenti</title>
<section>
<body>
<p>
Si ringrazia Matt Heler per averci prestato il
suo computer per gli scopi di questa guida. Grazie anche
agli amici in #ldap @ irc.freenode.net
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: qmail-howto.xml --]
[-- Type: text/xml; name="qmail-howto.xml", Size: 23658 bytes --]
<?xml version = '1.0' encoding = 'UTF-8'?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/qmail-howto.xml,v 1.17 2004/04/22 07:10:38 swift Exp $ -->
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/en/qmail-howto.xml">
<title>qmail/vpopmail Virtual Mail Hosting System Guide</title>
<author title="Autore originale">
<mail link="vapier@gentoo.org">Mike Frysinger</mail>
</author>
<author title="Traduttore">
<mail link="gentoo-dev@gentoo.it">Enrico Morelli</mail>
</author>
<author title="Traduttore">
Team Italiano
</author>
<abstract>
Questo documento espone dettagliatamente come creare un mail server basato su qmail,
vpopmail, courier-imap, mysql e imp di horde.
</abstract>
<license/>
<version>1.11</version>
<date>24 Aprile 2005</date>
<chapter>
<title>Introduzione</title>
<section>
<body>
<p>
qmail può essere facilmente configurato per la gestione delle mail
inviate da demoni di sistema, da singoli server, da domini, o da domini virtuali.
Questa guida fornirà un aiuto per configurare qmail per tutti questi scenari
focalizzando l'attenzione sull'accesso remoto e le comunicazioni crittate.
</p>
<p>
Specificamente, i pacchetti che questa guida prenderà in esame sono qmail,
courier-imap, vpopmail e horde/imp. Insieme a questi, saranno
installati, come dipendenze, i pacchetti daemontools, ucspi-tcp, mysql, apache e mod_php.
Attraverso qmail, viene fornito il core delle funzioni mta, con courier-imap si hanno
i servizi necessari al recupero delle mail da remoto, attraverso vpopmail si ha la
gestione dei domini virtuali, infine, con horde/imp si ha l'accesso via web alle mail.
</p>
<p>
Prima di emergere tutti i pacchetti, è necessario avere le seguenti variabili USE abilitate:
(se alcuni di questi pacchetti sono già stati installati, probabilmente sarà necessario
riemergeli) <c>USE="maildir ssl imap mysql"</c>. Inoltre, per usare horde/imp
occorre abilitare <c>USE="nls"</c> prima di installare mod_php.
</p>
<note>
Questa guida comprende diversi passaggi. In ogni momento se si pensa che
la configurazione sia 'completa', non c'è bisogno di continuare.
</note>
<p>
Ci sono molti altri pacchetti per avere un sistema di gestione
delle mail, per cui questo è il momento di decidere in favore di qmail.
Altrimenti si rimanda alla lettura di <uri link="virt-mail-howto.xml">una bella guida</uri>
incentrata su <uri link="http://www.postfix.org/">Postfix</uri> o si
può dare un'occhiata a <uri link="http://www.exim.org/">exim</uri>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>qmail</title>
<section>
<body>
<pre caption="Emerge qmail">
# <i>emerge qmail</i>
</pre>
<impo>
Questa guida si incentra su qmail-1.03-r13 o superiore, ma potrebbe essere
seguita anche per versioni precedenti.
</impo>
<warn>
In caso si ottenga il messaggio <c>the virtual/mta package conflicts with another
package</c>, è necessario rimuovere l'altro MTA presente nel sistema.
Per sapere di quale pacchetto si tratta, eseguire <c>emerge qmail -p</c>.
</warn>
<p>
Insieme a qmail vengono installati anche i pacchetti ucspi-tcp e daemontools.
Si possono leggere maggiori informazioni su <uri link="http://cr.yp.to/ucspi-tcp.html">ucspi-tcp</uri>
e <uri link="http://cr.yp.to/daemontools.html">daemontools</uri>.
Basilarmente, daemontools è responsabile della gestione di qmail come servizio
mentre ucspi-tcp è responsabile della gestione delle connessioni TCP in ingresso
verso i servizi di qmail.
</p>
<p>
E' necessario eseguire alcune configurazioni post-installazione.
</p>
<pre caption="Configurazione per qmail">
<comment>(Da personalizzare per adattarle alle informzioni personali)</comment>
# <i>nano /var/qmail/control/servercert.cnf</i>
# <i>ebuild /var/db/pkg/mail-mta/qmail-1.03-r*/qmail-1.03-r*.ebuild config</i>
</pre>
<p>
Il progetto qmail si focalizza completamente sulla sicurezza. A questo fine,
nessuna mail sarà inviata all'utente 'root'. Si rende così necessario selezionare un
utente per ricevere le mail che altrimenti sarebbero destinate a 'root'.
In questa guida faremo riferimento a tale utente col nome di 'vapier'.
</p>
<pre caption="Configurazione di un utente non-root">
# <i>cd /var/qmail/alias</i>
# <i>echo vapier > .qmail-root</i>
# <i>echo vapier > .qmail-postmaster</i>
# <i>echo vapier > .qmail-mailer-daemon</i>
</pre>
<p>
Avvio dei servizi di consegna di qmail.
</p>
<pre caption="Avvio dei servizi di consegna di qmail">
# <i>rc-update add svscan default</i>
# <i>/etc/init.d/svscan start</i>
# <i>cd /service</i>
# <i>ln -s /var/qmail/supervise/qmail-send qmail-send</i>
</pre>
<p>
Test per vedere se qmail lavora correttamente.
</p>
<pre caption="Test servizio di consegna">
# <i>ssh vapier@localhost</i>
# <i>maildirmake .maildir</i>
# <i>qmail-inject root << EOF
test root e-mail!
EOF</i>
# <i>qmail-inject postmaster << EOF
test postmaster e-mail!
EOF</i>
# <i>qmail-inject vapier << EOF
test vapier e-mail!
EOF</i>
# <i>mutt</i>
<comment>(Ci dovrebbero essere tre email nella inbox)</comment>
</pre>
<p>
A questo punto è pronto un sistema di gestione mail per la macchina locale
e per utenti che utilizzano tale macchina nonché per i demoni di sistema che
necessitano di inviare mail.
</p>
<warn>
Se non si è ricevuta alcuna mail o se nei file di log sono presenti
errori (controllare in <path>/var/log/qmail</path>) che coinvologono
'localhost.localhost', il problema coinvolge la configurazione
del dominio/dns. Il comportamento predefinito di qmail è l'utilizzo
dell'output di <c>hostname --fqdn</c>. Se il comando restituisce 'localhost'
controllare la correttezza di <path>/etc/hostname</path>, <path>/etc/hosts</path> e
che il dns funzioni correttamente. Editare i file
di configurazione in <path>/var/qmail/control</path> usando gli esempi
che seguono.
</warn>
<pre caption="Esempio dei file in /var/qmail/control/ per un dominio di secondo livello">
# <i>hostname --fqdn</i>
wh0rd.org
# <i>cat me</i>
wh0rd.org
# <i>cat defaultdomain</i>
wh0rd.org
# <i>cat plusdomain</i>
wh0rd.org
# <i>cat locals</i>
wh0rd.org
# <i>cat rcpthosts</i>
wh0rd.org
</pre>
<pre caption="Esempio dei file in /var/qmail/control/ per un dominio di terzo livello">
# <i>hostname --fqdn</i>
mail.wh0rd.org
# <i>cat me</i>
mail.wh0rd.org
# <i>cat defaultdomain</i>
wh0rd.org
# <i>cat plusdomain</i>
wh0rd.org
# <i>cat locals</i>
mail.wh0rd.org
# <i>cat rcpthosts</i>
mail.wh0rd.org
</pre>
</body>
</section>
</chapter>
<chapter>
<title>vpopmail</title>
<section>
<body>
<pre caption="Emerge vpopmail">
# <i>emerge vpopmail</i>
</pre>
<impo>
Questa guida si incentra su vpopmail-5.4.6 o superiore, ma potrebbe essere
seguita anche per versioni precedenti.
</impo>
<p>
La configurazione di vpopmail è leggermente più difficile del pacchetto precedente.
Dato che l'uso di vpopmail prevede mysql, assicurarsi che il demone di mysql sia
attivo, quindi configurare il database di vpopmail.
Prima di tutto, assicurarsi di aver emerso e configurato mysql. La password usata per
il database vpopmail è 'vpoppw', si raccomanda di sceglierne una differente.
</p>
<pre caption="Configurare vpopmail in mysql">
# <i>rc-update add mysql default</i>
<comment>Se mysql è stato installato per la prima volta, assicurarsi di eseguire
il comando <i>ebuild <mysql.ebuild> config</i> e seguire le direttive che seguono
prima di far partire il server mysql.
</comment>
# <i>/etc/init.d/mysql start</i>
# <i>nano /etc/vpopmail.conf</i>
<comment>(Cambiare la password da 'secret' a 'vpoppw')</comment>
# <i>mysql -p << EOF
create database vpopmail;
use mysql;
grant select, insert, update, delete, create, drop on vpopmail.* to vpopmail@localhost identified by 'vpoppw';
flush privileges;
EOF</i>
<comment>(I passi che seguono non sono necessari, vanno eseguiti per sicurezza)</comment>
# <i>chown root:vpopmail /etc/vpopmail.conf</i>
# <i>chmod 640 /etc/vpopmail.conf</i>
# <i>chown root:vpopmail /var/vpopmail/bin/vchkpw</i>
# <i>chmod 4711 /var/vpopmail/bin/vchkpw</i>
</pre>
<warn>
Se si ha esperienza di problemi di permessi con mysql/vpopmail, riavviare mysql
eseguendo <c>/etc/init.d/mysql restart</c>.
</warn>
<p>
A questo punto vpopmail è pronto all'uso. In questa guida viene provveduto
l'hosting virtuale per il dominio 'wh0rd.org', il che significa che sarà necessario
configurare vpopmail affinché faccia da host per questo dominio.
Sarà anche creato uno user account per 'vapier'.
</p>
<pre caption="Aggiungere un dominio">
<comment>(Necessario solo se il comando <i>vadddomain</i> visualizza "command not found")</comment>
# <i>source /etc/profile</i>
<comment>(Durante il debug di vpopmail, si potrebbero consultare i log)</comment>
# <i>mysql -u vpopmail -p</i>
mysql> <i>select * from vpopmail.vlog;</i>
# <i>vadddomain wh0rd.org postpass</i>
<comment>(Verifica se il dominio è configurato correttamente)</comment>
# <i>printf "postmaster@wh0rd.org\0postpass\0blah\0" | vchkpw `which id` 3<&0</i>
uid=89(vpopmail) gid=89(vpopmail) groups=0(root)
<comment>(Se il risultato non simile al precedente, i permessi non sono corretti)</comment>
# <i>vadduser vapier@wh0rd.org vappw</i>
</pre>
<p>
Ogni dominio creato con vpopmail possiede anche un account 'postmaster'.
Nel caso specifico è stato specificato che la password per il postmaster è 'postpass'.
Prima che vpopmail possa funzionare correttamente, è necessario riuscire a ricevere
mail via courier e inviare mail via qmail e SMTP.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Courier POP/IMAP</title>
<section>
<body>
<pre caption="Emerge courier-imap">
# <i>emerge net-mail/courier-imap</i>
</pre>
<impo>
Eseguire emerge courier-imap dopo vpopmail. In questo modo verrà compilato anche il modulo
authvchkpw.
</impo>
<impo>
Questa guida si incentra su net-mail/courier-imap-2.1.2-r1 o successivi, ma potrebbe
essere seguita anche per versioni precedenti.
</impo>
<p>
Seguono i passi per la configurazione post-installazione. Questi sono
necessari solo se si vuole una comunicazione crittata via SSL.
Altrimenti si deve rimuovere '-ssl' dagli init script degli esempi che seguono.
</p>
<pre caption="Configurazione per POP3/SSL">
# <i>nano /etc/courier/authlib/authdaemonrc</i>
<comment>(Impostare la variabile authmodulelist affinché contenga "authvchkpw")</comment>
# <i>cd /etc/courier-imap</i>
# <i>nano pop3d.cnf</i>
<comment>(Editare la sezione [ req_dn ])</comment>
# <i>mkpop3dcert</i>
# <i>rc-update add courier-pop3d-ssl default</i>
# <i>/etc/init.d/courier-pop3d-ssl start</i>
</pre>
<pre caption="Configurazione per IMAP/SSL">
# <i>cd /etc/courier-imap</i>
# <i>nano imapd.cnf</i>
<comment>(Editare la sezione [ req_dn ])</comment>
# <i>mkimapdcert</i>
# <i>rc-update add courier-imapd-ssl default</i>
# <i>/etc/init.d/courier-imapd-ssl start</i>
</pre>
<p>
A questo punto un mail client dovrebbe essere in grado di effettuare un login
sull'host in cui è in esecuzione courier e recuperare le mail per l'host virtuale.
Nel caso preso in esame, si dovrebbe essere in grado di effettuare un login
usando lo username 'vapier@wh0rd.org' e password 'vappw'.
</p>
</body>
</section>
</chapter>
<chapter>
<title>qmail</title>
<section>
<body>
<p>
Segue la messa in funzione dell'SMTP prevenendo la creazione di un sistema
di cui abusare per fare spamming.
</p>
<pre caption="Far partire il servizio qmail SMTP">
# <i>cd /var/qmail/control/</i>
# <i>nano conf-smtpd</i>
<comment>(Scommentare la variabile SMTP-AUTH e impostare QMAIL_SMTP_CHECKPASSWORD in /var/vpopmail/bin/vchkpw)</comment>
# <i>nano servercert.cnf</i>
<comment>(Editare la sezione [ req_dn ])</comment>
# <i>mkservercert</i>
# <i>cd /service</i>
# <i>ln -s /var/qmail/supervise/qmail-smtpd qmail-smtpd</i>
# <i>/etc/init.d/svscan restart</i>
</pre>
<p>
Assumendo che non siano stati modificati i file di controllo di qmail, qmail
accetterà mail per il dominio virtuale wh0rd.org e per gli utenti della
macchina locale. Inoltre, qmail invierà mail per chiunque le spedisca via 127.0.0.1 e
per chiunque sia capace di autenticarsi via vpopmail. Durante la configurazione
di un mail client per l'invio della posta, assicurarsi di selezionare l'opzione
'Server requires authentication'. Nel caso preso in esempio, verrà usato l'utente
'vapier@wh0rd.org' con password 'vappw'. Infine, assicurarsi di
configurare il mail client per usare SSL/TLS per le connessioni SMTP.
qmail non permetterà autenticazioni se la sessione non è crittata.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Horde / IMP Webmail Client</title>
<section>
<body>
<p>
Benché ci siano molti webmail client, si preferisce
<uri link="http://www.horde.org/imp/">IMP Webmail
Client</uri> che è parte dell'Horde framework. La ragione principale risiede
nel fatto che si può usare Horde semplicemente per gestire le mail via Web,
o aggiungere facilmente altri componenti per gestire Rubriche, Calendari, Appuntamenti, ecc.
Se questo non è convincente, si possono leggere ulteriori caratteristiche da
<uri link="http://www.horde.org/">Horde</uri>.
</p>
<p>
Emergere IMP.
</p>
<pre caption="Emerge IMP">
# <i>emerge horde-imp</i>
</pre>
<impo>
Questa guida si incentra su horde-2.2.x e horde-imp-3.2.x.
Le versioni del CVS (ed anche le prossime major release) avranno probabilmente
configurazioni differenti. Da notare anche che horde-2.x non funziona con php-5.x.
</impo>
<p>
Attualmente, Horde non è facile da configurare a meno che non si conosca esattamente cosa fare.
Fortunatamente l'autore di questa guida conosce esattamente cosa fare e questo potrà essere
di aiuto per il lettore.
</p>
<pre caption="Configurazione per Horde">
# <i>cd /var/www/localhost/htdocs/horde/config/</i>
# <i>for f in *.dist ; do mv ${f} ${f/.dist} ; done</i>
# <i>nano horde.php</i>
<comment>(In 'Horde Authentication':)</comment>
$conf['auth']['driver'] = 'imap';
$conf['auth']['params']['dsn'] = '{localhost:993/imap/ssl/novalidate-cert}';
<comment>(In 'Horde Logging':)</comment>
$conf['log']['name'] = '/var/log/apache2/horde.log';
<comment>(In 'Problem Reporting':)</comment>
$conf['problems']['enabled'] = true;
$conf['problems']['email'] = 'webmaster@wh0rd.org';
# <i>nano registry.php</i>
<comment>(In 'Handlers':)</comment>
$this->registry['auth']['login'] = 'imp';
$this->registry['auth']['logout'] = 'imp';
<comment>(In 'Application registry':)
Porre l'elemento 'status' di applications['imp'] da 'inactive' a 'active'</comment>
# <i>touch /var/log/apache2/horde.log</i>
# <i>chown apache:apache /var/log/apache2/horde.log</i>
</pre>
<note>
Si vorrà anche cambiare l'email per l'account 'webmaster'. Se si vuole usare
questo indirizzo, ricordarsi di aggiungere l'utente via vpopmail (o vedere sotto
per qmailadmin).
</note>
<p>
Configurazione di IMP.
</p>
<pre caption="Configurazione per IMP">
# <i>cd /var/www/localhost/htdocs/horde/imp/config/</i>
# <i>for f in *.dist ; do mv ${f} ${f/.dist} ; done</i>
# <i>nano servers.php</i>
<comment>(Editare l'array $servers['imap']:)</comment>
$servers['imap'] = array(
'name' => 'wh0rd.org',
'server' => 'localhost',
'protocol' => 'imap/ssl/novalidate-cert',
'port' => 993,
'folders' => '',
'namespace' => '',
'namespace' => 'INBOX.',
'maildomain' => 'wh0rd.org',
'smtphost' => 'localhost',
'realm' => '',
'preferred' => ''
);
</pre>
<p>
Al termine, far partire apache in modo da poter usare webmail.
</p>
<pre caption="Eseguire apache">
# <i>nano /etc/conf.d/apache2</i>
<comment>(Scommentare APACHE2_OPTS="-D SSL -D PHP4")</comment>
# <i>rc-update add apache2 default</i>
# <i>/etc/init.d/apache2 start</i>
</pre>
<warn>
Si dovrebbe forzare la connessione https per utenti di horde.
Questo è un punto importante a motivo della sicurezza.
</warn>
<p>
Per testare la configurazione di IMP, lanciare il browser e visitare
<uri>http://localhost/horde/</uri> (cambiare localhost con il server su cui si è
configurato IMP). Si dovrebbe essere in grado di vedere la pagina di benvenuto di Horde
con la richiesta di login. Sempre seguendo il nostro esempio, si dovrebbe eseguire
il login con
'vapier@wh0rd.org' e 'vappw' come
username e password.
</p>
<p>
La configurazione di Horge e IMP è terminata. Si dovrebbe, comunque,
tornare indietro attraverso le directory di configurazione e cambiare
quello che si ritiene opportuno.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Pacchetti extra</title>
<section>
<title>qmailadmin</title>
<body>
<p>
Un primo pacchetto che si suggerisce di usare è <uri
link="http://www.inter7.com/qmailadmin.html">qmailadmin</uri>.
E' un interfaccia basata su web per la gestione di domini virtuali.
Si installa con <c>emerge net-mail/qmailadmin</c> e si usa semplicemente
attraverso un browser attraverso l'indirizzo
<uri>http://localhost/cgi-bin/qmailadmin</uri>.
</p>
</body>
</section>
<section>
<title>qmHandle</title>
<body>
<p>
Se si hanno problemi con la queue di qmail e si perde tempo per il debugging,
si può dare un'occhiata a
<uri link="http://qmhandle.sourceforge.net/">qmHandle</uri>.
E' un semplice programma in perl per vedere e gestire le code dei messaggi di qmail.
Anche in questo caso per l'installazione usare <c>emerge net-mail/qmhandle</c>.
</p>
</body>
</section>
<section>
<title>Aggiunte a horde</title>
<body>
<p>
Si raccomanda uno sguardo alle altre applicazioni Horde.
Le applicazioni complementari <uri link="http://www.horde.org/turba/">Turba</uri>, <uri
link="http://www.horde.org/kronolith/">Kronolith</uri>, e <uri
link="http://www.horde.org/nag/">Nag</uri> migliorano l'uso di IMP.
La loro configurazione è simile a quella per IMP, non si dovrebbero quindi trovare
eccessivi problemi. Ricordarsi di editare registry.php nella direcotory config di horde
per inserire la nuova applicazione.
</p>
</body>
</section>
<section>
<title>ucspi-tcp</title>
<body>
<p>
qmail utilizza ucspi-tcp per gestire le connessioni in ingresso.
Se si desidera personalizzare le regole dei filtri, i file di configurazione sono in
<path>/etc/tcprules.d/</path> (vecchie versioni di qmail pongono i file in /etc).
Qui si trovano due file per ogni servizio, il file di configurazione (p.e. tcp.qmail-smtp)
e la versione compilata di questo file usato da ucspi-tcp (p.e. tcp.qmail-smtp.cdb).
Ogni volta si aggiorna il file di configurazione, si dovrà anche provvedere alla ricompilazione
della versione binaria eseguendo
<c>tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp</c>.
Ogni volta che viene creata una connessione da qmail, il file di regole compilate
viene riletto, non è quindi necessario far ripartire il servizio.
</p>
</body>
</section>
<section>
<title>qmail-scanner</title>
<body>
<p>
Se si vuole filtrare il contenuto delle mail che passano per il mail server (contro spam e virus),
si deve usare un programma di queuing differente da quello predefinito.
Un buon programma per far questo è
<uri link="http://qmail-scanner.sourceforge.net/">qmail-scanner</uri>.
Installare con <c>emerge qmail-scanner</c> e editare il file
<path>/etc/tcprules.d/tcp.qmail-smtp</path>.
</p>
<impo>
Il processo di installazione di qmail-scanner prevede la ricerca nel sistema
dei pacchetti da usare che devono essere già presenti.
E' necessario quindi provvedere ad emergere SpamAssassin e/o Clam AntiVirus
prima di emergere qmail-scanner.
</impo>
<pre caption="Modificare il queuer">
# <i>cd /etc/tcprules.d/</i>
# <i>nano tcp.qmail-smtp</i>
<comment>(Aggiungere QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue" alla regola allow )</comment>
# <i>tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp</i>
</pre>
<p>
La prossima sezione prende in esame come configurare un filtro contro spam e virus.
Si possono personalizzare alcune opzioni editando direttamente
<path>/var/qmail/bin/qmail-scanner-queue.pl</path>.
</p>
</body>
</section>
<section>
<title>SpamAssassin</title>
<body>
<p>
Uno dei filtri antispam Open Source è
<uri link="http://www.spamassassin.org/">SpamAssassin</uri>.
Installare con <c>emerge mail-filter/spamassassin</c>.
Il pacchetto ha sia una versione da linea di comando che una client/server.
Per server che smistano una piccola quantità di mail, si può utilizzare la versione
da linea di comando, mentre per server che gestiscono carichi abbondanti di mail
è bene usare la versione client/server.
</p>
<pre caption="Configurazione per SpamAssassin">
# <i>nano /etc/mail/spamassassin/local.cf</i>
<comment>(Aggiungere queste opzioni minime:)</comment>
required_hits 6
skip_rbl_checks 1
# <i>rc-update add spamd default</i>
# <i>/etc/init.d/spamd start</i>
# <i>nano /var/qmail/bin/qmail-scanner-queue.pl</i>
<comment>(Assicurarsi che la variabile $spamc_binary sia definita come '/usr/bin/spamc'.)</comment>
<comment>(Se fosse definita come '', guardare la nota che segue.)</comment>
</pre>
<impo>
Se non si aveva SpamAssassin nel sistema prima di emergere qmail-scanner,
sarà necessario riemergere qmail-scanner. In questo modo verranno aggiunti
i pacchetti aggiuntivi scoperti nel sistema.
</impo>
<p>
A questo punto, le mail in ingresso dovrebbero essere inviate a qmail-scanner
che eseguirà SpamAssassin.
</p>
</body>
</section>
<section>
<title>Clam AntiVirus</title>
<body>
<p>
Come SpamAssassin, <uri link="http://www.clamav.net/">Clam AntiVirus</uri>
arriva in due versioni. Si daranno indicazioni su come configurare la versione
client/server. Installare con <c>emerge app-antivirus/clamav</c>.
</p>
<pre caption="Configurazione per Clam AntiVirus">
# <i>nano /etc/conf.d/clamd</i>
<comment>(Definire START_CLAMD=yes)</comment>
# <i>nano /etc/clamav.conf</i>
<comment>(Definire cosa si vuole)</comment>
# <i>rc-update add clamd default</i>
# <i>/etc/init.d/clamd start</i>
# <i>nano /var/qmail/bin/qmail-scanner-queue.pl</i>
<comment>(Assicurarsi che la variabile $clamscan_binary sia definita come '/usr/bin/clamscan'.)</comment>
<comment>(Se fosse deinita come '', guardare la nota che segue.)</comment>
# <i>nano /var/qmail/control/conf-common</i>
<comment>(Se ClamAV riporta problemi di memoria provare a cancellare il softlimit)</comment>
</pre>
<impo>
Se non si aveva Clam AntiVirus nel sistema prima di emergere qmail-scanner,
sarà necessario riemergere qmail-scanner. In questo modo verranno aggiunti
i pacchetti aggiuntivi scoperti nel sistema.
</impo>
<p>
A questo punto, le mail in ingresso dovrebero essere inviate a qmail-scanner che
eseguirà Clam AntiVirus.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Note finali</title>
<section>
<body>
<p>
Non ci sono note finali eccetto che se si hanno problemi seguendo questa guida
si dovrebbe contattare l'
<mail link="vapier@gentoo.org">autore</mail> o inviare una segnalazione sul
<uri link="http://bugs.gentoo.org/">Gentoo's Bugtracking Website</uri>.
Se si hanno esperienze interessanti da aggiungere a questa guida, inviarle all'autore
per essere incluse.
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: ati-faq.xml --]
[-- Type: text/xml; name="ati-faq.xml", Size: 5413 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link="/doc/it/ati-faq.xml" lang="it">
<title>Gentoo Linux ATi FAQ</title>
<author title="Autore"><mail link="lu_zero@gentoo.org">
Luca Barbato</mail>
</author>
<author title="Editore"><mail link="peesh@gentoo.org">
Jorge Paulo</mail>
</author>
<author title="Editore"><mail link="blubber@gentoo.org">
Tiemo Kieft</mail>
</author>
<author title="Traduttore"><mail link="myzelf@omnidea.it">
Gilberto De Faveri</mail>
</author>
<author title="Traduttore"><mail link="gentoo-dev@gentoo.it">
Enrico Morelli</mail>
</author>
<abstract>Questa FAQ dovrebbe aiutare gli utenti a risolvere i più comuni problemi di installazione
e configurazione relativi a DRI e xfree per le schede ATI.</abstract>
<license/>
<version>1.0.7</version>
<date>13 Aprile 2005</date>
<chapter>
<title>Hardware Supportato</title>
<section>
<title>È supportata la mia scheda ATI?</title>
<body>
<p><uri link="http://www.freedesktop.org/Software/xorg">xorg-x11</uri> supporta quasi ogni scheda ATI,
almeno per quanto riguarda l'accelerazione delle funzioni 2D. Il supporto 3D è offerto sia dal
<uri link="http://dri.sf.net">progetto DRI</uri>, già incluso in xorg-x11, sia dai
driver closed source
<uri link="http://mirror.ati.com/support/drivers/linux/radeon-linux.html">forniti</uri> da ATI.
</p>
<table>
<tr>
<th>GPU</th>
<th>Nome Commerciale</th>
<th>Supportato da</th>
</tr>
<tr>
<ti>rage128</ti>
<ti>Rage128</ti>
<ti>xorg DRI</ti>
</tr>
<tr>
<ti>r100</ti>
<ti>Radeon7xxx, Radeon64</ti>
<ti>xorg DRI</ti>
</tr>
<tr>
<ti>r200,r250,r280</ti>
<ti>Radeon8500, Radeon9000, Radeon9200</ti>
<ti>xorg DRI, ATI DRI</ti>
</tr>
<tr>
<ti>r300, following</ti>
<ti>Radeon 9500 - 9800</ti>
<ti>xorg 2D, ATI DRI</ti>
</tr>
</table>
</body>
</section>
<section>
<title>Ho una scheda All-In-Wonder/Vivo. Sono supportate le caratteristiche multimediali?</title>
<body>
<p>Le caratteristiche multimediali sono per ora supportate dal
<uri link="http://gatos.sf.net">progetto GATOS</uri> e i driver gatos saranno
integrati direttamente in xorg.</p>
</body>
</section>
<section>
<title>Non utilizzo una macchina x86. Cosa posso fare?</title>
<body>
<p>Puoi disporre dello stesso supporto di x11 su piattaforme PPC o alpha, ma non puoi utilizzare
i driver ATI closed source. Questo significa che non potrai sfruttare l'accelerazione 3d del chip r300.
Se hai una di queste schede e vorresti vederla pienamente supportata da x11 contatta
<uri link="http://www.ati.com">ATI</uri> e chiedi loro di rendere disponibili le specifiche.
Recentemente sono stati rilasciati i sorgenti per amd64. Utenti amd64 possono usarli come utenti x86.
</p>
<impo>
Per abilitare l'agpgart per certi chipset amd64 occorre disabilitare il supporto K8 IOMMU.
</impo>
</body>
</section>
<section>
<title>Ho un portatile. Il mio modello ATI "mobility" è supportato?</title>
<body>
<p>Dovrebbe esserlo, ma potresti avere qualche problema a causa del PCI id OEM che il
chip potrebbe avere. Nella maggior parte dei casi dovrai editare a mano il tuo file di configurazione
o utilizzare <c>xorgconfig</c>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Installazione</title>
<section>
<title>Pacchetti</title>
<body>
<p>
<ul>
<li>L'ebuild di <c>xorg-x11</c> fornisce l'implementazione di X11 . </li>
<li>Per un kernel 2.6 i moduli DRI possono essere inclusi col kernel o
essere forniti dall'ebuild <c>x11-drm</c></li>.
<li>Per un kernel 2.4 si deve usare l'ebuild <c>x11-drm</c> </li>
<li>L'ebuild <c>ati-drivers</c> fornisce i driver ATI per X e i moduli per il kernel, sia per la serie 2.4 che per la 2.6.
</li>
</ul>
</p>
<impo>
Il kernel deve avere il supporto per agpgart. Se si usa un kernel della serie 2.4 o si sta pianificando di usare l'ebuild x11-drm non si dovrebbe includere il modulo DRM .
</impo>
<pre caption="Installazione driver">
<comment>Per installare solo i driver ed i moduli Rage 128 con x11
</comment>
# <i>VIDEO_CARDS="rage128" emerge x11-drm</i>
<comment>Per avere solo il supporto Radeon</comment>
<comment>(r100, r200, r250, but not r300 yet)</comment>
# <i>VIDEO_CARDS="radeon" emerge x11-drm</i>
<comment>Per installare i driver ATI closed source</comment>
<comment>(r200,r250 and r300 only)</comment>
# <i>emerge ati-drivers</i>
<comment>Per installare solo X11 e nessun</comment>
<comment>modulo del kernel</comment>
# <i>emerge xorg-x11</i>
</pre>
</body>
</section>
<section>
<title>Configurazione</title>
<body>
<p>È consigliabile utilizzare <c>xorgcfg</c>, <c>xorgconfig</c> o direttamente
l'opzione di autoconfigurazione di Xorg:
</p>
<pre caption="Configurazione automatica di X">
# <i>X -configure</i>
</pre>
<p>
Per maggiori informazioni su come creare un file di configurazione <c>xorg.conf</c> minimo,
è possibile consultare la
<uri link="http://www.gentoo.org/doc/it/desktop.xml">Desktop Configuration Guide</uri>.</p>
<note> Gli utilizzatori degli ati-drivers possono usare anche <c>fglrxconfig</c>.</note>
<impo>Gli utenti PPC dovrebbero usare l'utility di configurazione <c>Xautoconf</c>,
emergendo l'ebuild <c>Xautoconf</c>.</impo>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: hb-portage-branches.xml --]
[-- Type: text/xml; name="hb-portage-branches.xml", Size: 5503 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/handbook/hb-portage-branches.xml,v 1.3 2004/11/15 12:47:47 swift Exp $ -->
<sections>
<version>1.5</version>
<date>25 Aprile 2005</date>
<section>
<title>Usare una branca</title>
<subsection>
<title>La branca stabile</title>
<body>
<p>
La variabile ACCEPT_KEYWORDS definisce la branca usata dal sistema. Il suo valore
predefinito è la branca stabile per l'architettura del sistema in uso, per
esempio <c>x86</c>
</p>
<p>
La raccomandazione è di usare solo la branca stabile, comunque, se non si
è preoccupati eccessivamente per la stabilità e si vuole aiutare Gentoo
sottomettendo rapporti di problemi su
<uri>http://bugs.gentoo.org</uri>, si può proseguire con la lettura.
</p>
</body>
</subsection>
<subsection>
<title>La branca di test</title>
<body>
<p>
Se si vogliono usare i software più recenti si può considerare l'uso
della branca test. Per far usare al Portage la branca di test occorre aggiungere
il simbolo ~ prima dell'architettura del sistema in uso.
</p>
<p>
La branca di test è esattamente ciò che significa: <e>In fase di test</e>. Se un pacchetto è
in fase di test, significa che gli sviluppatori pensano che sia funzionante ma non ancora
testato in maniera esauriente. Ci si potrebbe trovare ad essere i primi a scoprire un bug
nel pacchetto, nel qual caso si dovrebbe aprire un bug su
<uri
link="http://bugs.gentoo.org">bugreport</uri> per farlo conoscere agli sviluppatori.
it.
</p>
<p>
Per esempio, per selezionare la branca di test per architetture x86, editare
<path>/etc/make.conf</path> e definire:
</p>
<pre caption="Definire la variabile ACCEPT_KEYWORDS">
ACCEPT_KEYWORDS="~x86"
</pre>
<p>
Se si aggiorna il sistema dopo questa modifica, si avranno <e>molti</e> pacchetti
da aggiornare. Una cosa da tenere bene in mente è che se si aggiorna il sistema
in uso alla branca di test non c'è un modo semplice per tornare alla branca
stabile (eccetto l'uso di backup naturalmente).
</p>
</body>
</subsection>
</section>
<section>
<title>Miscelare branche stabili e test</title>
<subsection>
<title>Il file package.keywords</title>
<body>
<p>
Si può chiedere al Portage di permettere la branca di test per particolari
pacchetti ma usare la branca stabile per il resto del sistema.
Per questo, si deve aggiungere la categoria ed il nome del pacchetto che
si vuole usare dalla branca di test al file <path>/etc/portage/package.keywords</path>.
Per esempio, per usare la branca di test di <c>gnumeric</c>:
</p>
<pre caption="Definizione di /etc/portage/package.keywords per gnumeric, linea completa">
app-office/gnumeric ~x86
</pre>
</body>
</subsection>
<subsection>
<title>Sperimentare versioni particolari</title>
<body>
<p>
Se si vuole usare una versione specifica di software dalla branca di test
ma non si vuole che Portage usi la branca di test per le versioni successive,
si può aggiungere la versione nel file
<path>package.keywords</path>.
In questo caso si <e>deve</e> usare l'operatore =. Si può anche inserire
un intervallo di versioni usando gli operatori
<=, <, > o >=.
</p>
<p>
In ogni caso, volendo aggiungere una versione si <e>deve</e> usare un operatore.
Se non si specifica alcuna versione <e>non si possono</e> usare operatori.
</p>
<p>
Il seguente esempio mostra come accettare gnumeric-1.2.13:
</p>
<pre caption="Usare una particolare versione di gnumeric">
=app-office/gnumeric-1.2.13 ~x86
</pre>
</body>
</subsection>
</section>
<section>
<title>Usare pacchetti mascherati</title>
<subsection>
<title>Il file package.unmask</title>
<body>
<p>
Gli sviluppatori di Gentoo <b>non</b> supportano l'uso di questi file.
Si prega di usare cautela nel loro uso. Le richieste di supporto in relazione
a <c>package.unmask</c> e/o <c>package.mask</c> non avranno risposta.
Si è avvertiti.
</p>
<p>
Quando un pacchetto è stato mascherato dagli sviluppatori di Gentoo e si
vuole comunque installare il file a dispetto della ragione menzionata
nel file <path>package.mask</path> (ubicato di default in <path>/usr/portage/profiles</path>), aggiungere la stessa <e>identica</e> linea in <path>/etc/portage/package.unmask</path>.
</p>
<p>
Per esempio, se <c>=net-mail/hotwayd-0.8</c> è mascherato, si può comunque
installarlo aggiungendo la stessa identica linea nel file
<path>package.unmask</path>:
</p>
<pre caption="/etc/portage/package.unmask">
=net-mail/hotwayd-0.8
</pre>
</body>
</subsection>
<subsection>
<title>Il file package.mask</title>
<body>
<p>
Se non si vuole che Portage installi un certo pacchetto o una specifica versione
di un pacchetto, lo si può mascherare autonomamente aggiungendo una riga
appropriata in
<path>/etc/portage/package.mask</path>.
</p>
<p>
Per esempio, se non si vuole che Portage installi nuove versioni del kernel dopo
<c>gentoo-sources-2.6.8.1</c>, si aggiunga la seguente linea a
<path>package.mask</path>:
</p>
<pre caption="/etc/portage/package.mask esempio">
>sys-kernel/gentoo-sources-2.6.8.1
</pre>
</body>
</subsection>
</section>
</sections>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: hb-portage-diverttree.xml --]
[-- Type: text/xml; name="hb-portage-diverttree.xml", Size: 3032 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/handbook/hb-portage-diverttree.xml,v 1.3 2004/11/15 12:47:47 swift Exp $ -->
<sections>
<version>1.2</version>
<date>11 Aprile 2005</date>
<section>
<title>Usare un Portage Tree Subset</title>
<subsection>
<title>Escludere pacchetti e/o categorie</title>
<body>
<p>
Si possono selettivamente aggiornare certe categorie/pacchetti ed ignorarne
altre/i facendo in modo che <c>rsync</c> escluda
categorie/pacchetti durante la fase di <c>emerge --sync</c>.
</p>
<p>
Di default, <c>rsync</c> controlla il contenuto di
<path>/etc/portage/rsync_excludes</path> (se esiste) per vedere quali
categorie o pacchetti <e>non</e> si vogliono aggiornare con <c>rsync</c>.
</p>
<p>
Si noti comunque che questo può portare ad avere problemi di dipendenze nuove,
aggiornando pacchetti che potrebbero dipendere da pacchetti nuovi ma esclusi.
</p>
</body>
</subsection>
</section>
<section>
<title>Aggiungere ebuild non ufficiali</title>
<subsection>
<title>Definizione di una propria directory Portage</title>
<body>
<p>
Il Portage può usare ebuild che non sono disponibili attraverso l'albero ufficiale. Per far questo, si può creare una nuova directory (per esempio
<path>/usr/local/portage</path>) entro la quale memorizzare gli ebuild di terze parti usando la stessa struttura delle directory dell'albero del Portage.
</p>
<p>
Si definisce quindi la variabile PORTDIR_OVERLAY in <path>/etc/make.conf</path> affinché punti alla directory creata precedentemente. Usando Portage dopo
queste modifiche, si potranno usare questi nuovi ebuild senza che vengano
rimossi o sovrascritti da un nuovo <c>emerge --sync</c>.
</p>
</body>
</subsection>
</section>
<section>
<title>Software non mantenuto dal Portage</title>
<subsection>
<title>Usare il Portage con software proprietario</title>
<body>
<p>
In alcuni casi si può voler configurare, installare e manutenere software
proprietario senza dover automatizzare il processo del Portage anche se
Portage può provvedere il titolo software. Casi conosciuti sono sorgenti
del kernel e driver nvidia. Si può configurare Portage in modo tale che
sappia che certi pacchetti sono stati installati manualmente nel sistema.
Questo processo è chiamato <e>injecting</e> ed è supportato dal Portage
attraverso il file
<path>/etc/portage/profile/package.provided</path>.
</p>
<p>
Per esempio, per informare il Portage che
<c>vanilla-sources-2.6.11.6</c> è stato installato manualmente, aggiungere
la seguente linea a
<path>/etc/portage/profile/package.provided</path>:
</p>
<pre caption="Esempio di linea per package.provided">
vanilla-sources-2.6.11.6
</pre>
</body>
</subsection>
</section>
</sections>
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] aggiornamenti
@ 2005-04-21 22:13 Stefano Rossi
0 siblings, 0 replies; 39+ messages in thread
From: Stefano Rossi @ 2005-04-21 22:13 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 466 bytes --]
Ciao,
dato che Andrea Torelli non ha più molto tempo (in questo momento) di
aggiornare le sue guide, queste ultime sono diventate libere.....
non credo ci saranno problemi quando Andrea potrà tornare ad aggiornare
a riassegnargliele
chi volesse prendere le nuove guide da tradurre o quelle da aggiornare
controlli qua
http://dev.gentoo.org/~so/
fatelo presente in mailing list
saluti
--
Gentoo Documentation Project
Italian Follow-Up Translator
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [gentoo-docs-it] Aggiornamenti
@ 2005-04-11 13:11 Stefano Rossi
2005-04-11 11:18 ` Dungeon01
2005-04-11 11:21 ` Dungeon01
0 siblings, 2 replies; 39+ messages in thread
From: Stefano Rossi @ 2005-04-11 13:11 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 352 bytes --]
Dungeon01 qui puoi vederli online
http://www.gentoo.org/doc/it/overview.xml
in fondo ci sono i tuoi /security/it/bug-searching.xml
<http://www.gentoo.org/security/it/bug-searching.xml> e
/security/it/coordinator_guide.xml
<http://www.gentoo.org/security/it/coordinator_guide.xml>
saluti
--
Gentoo Documentation Project
Italian Follow-Up Translator
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [gentoo-docs-it] Aggiornamenti
2005-04-11 13:11 [gentoo-docs-it] Aggiornamenti Stefano Rossi
@ 2005-04-11 11:18 ` Dungeon01
2005-04-11 16:53 ` Stefano Rossi
2005-04-11 11:21 ` Dungeon01
1 sibling, 1 reply; 39+ messages in thread
From: Dungeon01 @ 2005-04-11 11:18 UTC (permalink / raw
To: gentoo-docs-it
thx 1000. x il resto parto con gli altri files che
mancano...un'ultimissima domanda, per vedere quando le versioni
orgiginali sono aggiornate lo vedo dal cvs giusto? in quel caso chiedo
consiglio: faccio un diff o rileggo tutto e poi traduco quello che
cambia?
thx 1000
ciaux
:wq
On Apr 11, 2005 3:11 PM, Stefano Rossi <so@gentoo.org> wrote:
> Dungeon01 qui puoi vederli online
> http://www.gentoo.org/doc/it/overview.xml
> in fondo ci sono i tuoi /security/it/bug-searching.xml
> <http://www.gentoo.org/security/it/bug-searching.xml> e
> /security/it/coordinator_guide.xml
> <http://www.gentoo.org/security/it/coordinator_guide.xml>
> saluti
>
> --
> Gentoo Documentation Project
> Italian Follow-Up Translator
>
>
>
--
Ride the infinity, be your best. For you, for all.
--
gentoo-docs-it@gentoo.org mailing list
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [gentoo-docs-it] Aggiornamenti
2005-04-11 13:11 [gentoo-docs-it] Aggiornamenti Stefano Rossi
2005-04-11 11:18 ` Dungeon01
@ 2005-04-11 11:21 ` Dungeon01
1 sibling, 0 replies; 39+ messages in thread
From: Dungeon01 @ 2005-04-11 11:21 UTC (permalink / raw
To: gentoo-docs-it
utlima nota..nei files online ho notato degli errori. x fixarkli devo
riaprire un nuoo bug?
On Apr 11, 2005 3:11 PM, Stefano Rossi <so@gentoo.org> wrote:
> Dungeon01 qui puoi vederli online
> http://www.gentoo.org/doc/it/overview.xml
> in fondo ci sono i tuoi /security/it/bug-searching.xml
> <http://www.gentoo.org/security/it/bug-searching.xml> e
> /security/it/coordinator_guide.xml
> <http://www.gentoo.org/security/it/coordinator_guide.xml>
> saluti
>
> --
> Gentoo Documentation Project
> Italian Follow-Up Translator
>
>
>
--
Ride the infinity, be your best. For you, for all.
--
gentoo-docs-it@gentoo.org mailing list
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [gentoo-docs-it] Aggiornamenti
@ 2005-04-11 13:00 Stefano Rossi
2005-04-11 11:05 ` Dungeon01
0 siblings, 1 reply; 39+ messages in thread
From: Stefano Rossi @ 2005-04-11 13:00 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 491 bytes --]
*Dungeon01 wrote
*<ero andato sui links ke mie ro salvato di
<http://bugs.gentoo.org/show_bug.cgi?id=81637
<http://bugs.gentoo.org/show_bug.cgi?id=81637> (x esempio).
<ma non trovandolo online ho creduto fosse da fixare...il "resolved
<quindi indica ke il file è pronto?" . in quel caso proseguo cn gli
<altri docs
<grazie 1000 dell'aiuto
<ciaux
<:wq
certo una volta fixed il file è pronto
saluti
--
Gentoo Documentation Project
Italian Follow-Up Translator
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* Re: [gentoo-docs-it] Aggiornamenti
@ 2005-04-11 12:43 Stefano Rossi
2005-04-11 10:59 ` Dungeon01
0 siblings, 1 reply; 39+ messages in thread
From: Stefano Rossi @ 2005-04-11 12:43 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 512 bytes --]
*Dungeon01 wrote
*<scusate ma sono appena tornato a riguardare i vari bugs miei aperti <e
<la doimanda è: devo ricodificare i 2 files o ritradurli ex novo? dalla
<nota finale che c'è in entrambe (hopefully translated) nn riesco a
<capire cosa io debba fare. inoltre, visualizzando gli allegati, vedo
<dei caratteri a ramengo...attendo istruzioni e scusate x la mia
<imbranataggine
<byee
scusa a quali bug ti riferisci?
saluti
--
Gentoo Documentation Project
Italian Follow-Up Translator
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 256 bytes --]
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2005-04-06 11:37 Enrico Morelli
2005-04-10 16:45 ` Marco Mascherpa
0 siblings, 1 reply; 39+ messages in thread
From: Enrico Morelli @ 2005-04-06 11:37 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 824 bytes --]
DOC Versione Revisione
------------------------------------------------------
devfs-guide 0.3 1.8
faq 2.14 1.80
ldap-howto 0.16 1.22
qmail-howto 1.10 1.32
ati-faq 1.0.6 1.18
hb-portage-branches 1.3 1.6
hb-working-portage 1.43 1.48
--
-------------------------------------------------------------------
(o_
(o_ //\ Coltivate Linux che tanto Windows si pianta da solo.
(/)_ V_/_
+------------------------------------------------------------------+
| ENRICO MORELLI | email: morelli@CERM.UNIFI.IT |
| * * * * | phone: +39 055 4574269 |
| University of Florence | fax : +39 055 4574253 |
| CERM - via Sacconi, 6 - 50019 Sesto Fiorentino (FI) - ITALY |
+------------------------------------------------------------------+
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: devfs-guide.xml --]
[-- Type: text/xml; name="devfs-guide.xml", Size: 18797 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link="/doc/devfs-guide.html">
<title>Device File System Guide</title>
<author title="Autore">
<mail link="swift@gentoo.org">Sven Vermeulen</mail>
</author>
<author title="Revisione">
<mail link="seemant@gentoo.org">Seemant Kulleen</mail>
</author>
<author title="Traduzione">
<mail link="emorelli@gentoo.it">Enrico Morelli</mail>
</author>
<abstract>
In questo documento troverete informazioni su cos'è
devfs e sul suo utilizzo .
</abstract>
<license />
<version>0.3</version>
<date>14 Febbraio 2005</date>
<chapter>
<title>Cos'è devfs?</title>
<section>
<title>I (bei?) vecchi tempi</title>
<body>
<p>
Implementazioni tradizionali di Linux provvedono ai loro
utenti un percorso astratto dei dispositivi, chiamato <path>/dev</path>.
In questa directory, gli utenti possono trovare i <e>device nodes</e>,
file speciali che rappresentano le periferiche presenti nei
loro sistemi. Per intenderci, <path>/dev/hda</path> rappresenta
la prima periferica IDE del nostro sistema. Attraverso questi
file di periferica, gli utenti possono creare programmi che interagiscono
con l'hardware come se fosse un file regolare invece che attraverso
speciali API.
</p>
<p>
I file di periferica sono suddivisi in due gruppi chiamati
periferiche a <e>caratteri</e> (character devices) e periferiche a <e>blocchi</e> (block devices). Il primo gruppo racchiude l'hardware la cui
scrittura/lettura non è bufferizzata. Il secondo gruppo, quindi,
racchiude invece l'hardware la cui scrittura/lettura è bufferizzata.
Le periferiche di ambedue i gruppi possono leggere un carattere alla volta o
in blocchi. Per questo, la nomenclatura potrebbe confondere ed infatti
non è corretta.
</p>
<p>
Se date un'occhiata a certi file di periferica, potreste trovare
qualcosa del genere:
</p>
<pre caption = "Controllare le informazioni di un file di periferica">
# <i>ls -l /dev/hda</i>
brw-rw---- 1 root disk 3, 0 Jul 5 2000 /dev/hda
</pre>
<p>
Nell'esempio precedente abbiamo visto che <path>/dev/hda</path>
è una periferica a blocchi (block device). Rivestono molta
importanza i due numeri speciali assegnati al file di periferica:
<path>3, 0</path>. Questa coppia di numeri è chiamata
<e>major-minor</e> ed è usata dal kernel per mappare un
file di periferica al dispositivo reale. Il major corrisponde a
certi dispositivi mentre il minor a sotto dispositivi.
</p>
<p>
Due esempi sono <path>/dev/hda4</path> e <path>/dev/tty5</path>.
Il primo file di periferica corrisponde alla quarta partizione della
prima periferica IDE. La sua coppia major-minor è <path>3, 4</path>.
In altre parole, il minor corrisponde alla partizione dove il
major corrisponde alla periferica. Il secondo esempio ha <path>4, 5</path> come coppia major-minor.
In questo caso, il major corrisponde ad un terminal driver, mentre
il minor corrisponde al numero del terminale (in questo caso, al
quinto terminale).
</p>
</body>
</section>
<section>
<title>I problemi</title>
<body>
<p>
Se fate un rapido controllo in <path>/dev</path>, troverete
che sono listate non solo le vostre periferiche, ma <e>tutte</e>
le possibili periferiche voi possiate immaginare. In altre parole,
sono presenti file di periferica anche per i dispositivi
non presenti sul vostro sistema.
Il controllo di un numero così elevato di gruppi di periferiche è quanto mai
difficoltoso. Immaginate di dover cambiare i permessi di tutti i
file di periferica che hanno un corrispondente dispositivo sul vostro sistema,
e lasciare il resto invariato.
</p>
<p>
Quando aggiungete nuovo hardware al vostro sistema che non ha
un file di periferica per il nuovo dispositivo, dovrete crearne uno. Utenti esperti sanno che
questo può essere fatto con <c>./MAKEDEV</c> all'interno
della directory <path>/dev</path>, ma dovete conoscere quale dispositivo creare.
</p>
<p>
Quando avete programmi che interagiscono con hardware usando
i file di periferica, non potete avere la partizione principale montata
in sola lettura, mentre non c'è ulteriore necessità di averla
montata in lettura-scrittura. E non potete avere <path>/dev</path>
su una partizione separata, dato che <c>mount</c> necessita
di <path>/dev</path> per montare le partizioni.
</p>
</body>
</section>
<section>
<title>Le soluzioni</title>
<body>
<p>
Come potete immaginare, gli sviluppatori del kernel hanno
trovato un certo numero di soluzioni ai summenzionati problemi.
Comunque molte di queste presentano altri difetti come descritto in
<uri>http://www.atnf.csiro.au/people/rgooch/linux/docs/devfs.html#faq-why</uri>.
Non faremo una panoramica su queste implementazioni, ma ci
focalizzeremo su quella che è diventata parte dei sorgenti
ufficiali del kernel: devfs.
</p>
</body>
</section>
<section>
<title>devfs vince completamente</title>
<body>
<p>
devfs risolve tutti i problemi elencati. Provvede solo
le periferiche esistenti, aggiunge nuovi nodi quando trova
nuove periferiche e rende possibile montare il root
filesystem in sola lettura. Risolve anche altri problemi
che non abbiamo discusso perché di minore interesse per
gli utenti.
</p>
<p>
Inoltre, con devfs non dobbiamo preoccuparci della
coppia major/minor. E' ancora supportata (per
compatibilità all'indietro), ma non è necessaria.
Questo rende possibile per Linux il supporto di
ancora più periferiche, dato che non ci sono più
limiti (i numeri hanno sempre dei confini :)
</p>
<p>
Anche devfs ha i propri problemi che per gli utenti finali
non sono realmente visibili, ma lo sono per i manutentori
del kernel. E per loro sono talmente gravi che hanno marcato
devfs come <e>obsoleto</e> in favore di <uri link="udev-guide.xml">udev</uri>
(Supportato anche da Gentoo).
</p>
<p>
Per avere maggiori informazioni sul perché devfs è marcato come obsoleto,
potete leggere queste
<uri link="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev-FAQ">udev
FAQ</uri> e il documento <uri
link="http://www.kernel.org/pub/linux/utils/kernel/hotplug/udev_vs_devfs">udev contro devfs</uri>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Navigare attraverso l'albero dei device</title>
<section>
<title>Directory</title>
<body>
<p>
Una delle prime cose che potreste notare è che devfs usa
directory per raggruppare insieme le periferiche.
Questo migliora la leggibilità dato che tutte le periferiche
dello stesso tipo occupano la stessa directory.
</p>
<p>
Per intenderci, tutte le periferiche IDE sono all'interno
della directory <path>/dev/ide/</path>, così come tutte
le periferiche SCSI sono in <path>/dev/scsi/</path>.
Dischi SCSI e IDE sono visti nello stesso modo, il che
significa che entrambe hanno la stessa struttura di
sottodirectory.
</p>
<p>
Dischi IDE e SCSI sono controllati da un adattatore
(integrato su scheda madre o su schede separate),
chiamato <e>host</e>.
Ogni adattatore può avere diversi canali. Un canale
è chiamato <e>bus</e>. Su ogni canale, è possibile
avere diversi ID. Ogni ID identifica un disco.
Questo ID è chiamato <e>target</e>. Alcuni device
SCSI possono avere lun multipli (<e>Logial Unit Numbers</e>),
device che possono controllare multipli media simultaneamente
(hi-end tapedrive). Voi avrete principalmente
un singolo lun, <path>lun0/</path>.
</p>
<p>
Così, mentre prima avevamo <path>/dev/hda4</path>, ora
abbiamo <path>/dev/ide/host0/bus0/target0/lun0/part4</path>.
Questo è molto più semplice... no, non discutete con me...
<e>è</e> semplice...
</p>
<note>
Potete anche usare una nomenclatura più Unix-like per
gli hard disk, come <path>c0b0t0u0p2</path>. Possono
essere trovati in <path>/dev/ide/hd</path>, <path>/dev/scsi/hd</path>, ecc.
</note>
<p>
Per darvi un'idea delle directory, questa è una lista
delle directory che ho sul mio portatile:
</p>
<pre caption = "Directory in /dev">
cdroms/ cpu/ discs/ floppy/
ide/ input/ loop/ misc/
netlink/ printers/ pts/ pty/
scsi/ sg/ shm/ sound/
sr/ usb/ vc/ vcc/
</pre>
</body>
</section>
<section>
<title>Compatibilità all'indietro usando devfs</title>
<body>
<p>
Usare questo nuovo schema sembra divertente, ma alcuni tools
e programmi continuano ad usare il vecchio schema.
Per assicurare la compatibilità è stato creato <c>devfsd</c>.
Questo daemon crea link simbolici con i vecchi nomi che puntano
ai nuovi file di periferica.
</p>
<pre caption = "Link simbolico">
$ <i>ls -l /dev/hda4</i>
lr-xr-xr-x 1 root root 33 Aug 25 12:08 /dev/hda4 -> ide/host0/bus0/target0/lun0/part4
</pre>
<p>
Con <c>devfsd</c>, potete anche configurare i permessi, creare
nuovi device file, definire azioni, ecc. Tutto questo è descritto
nel prossimo capitolo.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Amministrare l'albero dei dispositivi</title>
<section>
<title>Riavvio di devfsd</title>
<body>
<p>
Quando modificate il file <path>/etc/devfsd.conf</path>,
e volete forzare queste modifiche nel vostro sistema,
non dovete riavviare la macchina. A seconda delle vostre
necessità, potete usare uno dei seguenti segnali:
</p>
<p>
<b>SIGHUP</b> forzerà <c>devfsd</c> a rileggere il file
di configurazione, ricaricare gli oggetti condivisi e generare
il REGISTER degli eventi per ogni nodo in vita
nell'albero dei dispositivi.
</p>
<p>
<b>SIGUSR1</b> come il precedente, ma non verrà rigenerato
il REGISTER degli eventi.
</p>
<p>
Per inviare un segnale, usate semplicemente <c>kill</c>
o <c>killall</c>:
</p>
<pre caption = "Inviare un segnale SIGHUP a devfsd">
# <i>kill -s SIGHUP `pidof devfsd`</i>
<comment>o</comment>
# <i>killall -s SIGHUP devfsd</i>
</pre>
</body>
</section>
<section>
<title>Rimuovere la compatibilità attraverso i symlink</title>
<body>
<warn>
Attualmente, Gentoo non può vivere senza la compatibilità
attraverso i symlink.
</warn>
<p>
Se volete rimuovere la compatibilità ottenuta con la creazione
dei numerosi symlink in <path>/dev</path> dal vostro
sistema Gentoo (dato che Gentoo attiva la compatibilità di default),
editate <path>/etc/devfsd.conf</path> e rimuovete le seguenti
due righe:
</p>
<pre caption = "/etc/devfsd.conf per la compatibilità all'indietro">
<comment># Commentate le due righr che seguono per rimuovere i link simbolici</comment>
REGISTER .* MKOLDCOMPAT
UNREGISTER .* RMOLDCOMPAT
</pre>
<p>
Dovrete quindi riavviare il vostro sistema per rendere attive
le modifiche.
</p>
</body>
</section>
<section>
<title>Rimuovere la funzionalità di auto caricamento</title>
<body>
<p>
Quando caricate un modulo, devfs creerà automaticamente un
file di periferica. Se non volete questo comportamento, rimuovete
la seguente riga da <path>/etc/devfsd.conf</path>:
</p>
<pre caption = "/etc/devfsd.conf, funzionalità autoload">
LOOKUP .* MODLOAD
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Punti riguardanti i permessi</title>
<section>
<title>Impostare/cambiare i permessi con devfsd</title>
<body>
<note>
Queste istruzioni sono valide finché pam_console è disabilitato
in
<path>/etc/pam.d/system-auth</path>. Se pam_console viene abilitato,
PAM ha l'ultima parola sui permessi.
</note>
<p>
Se realmente volete impostare i permessi attraverso
<path>/etc/devfsd.conf</path>, usate la sintassi
del seguente esempio:
</p>
<pre caption = "Permessi in /etc/devfsd.conf">
REGISTER ^cdroms/.* PERMISSIONS root.cdrom 0660
</pre>
<p>
Il secondo campo è il gruppo di dispositivi, partendo da <path>/dev</path>.
E' un'espressione regolare attraverso la quale potete
selezionare diversi file di periferica con una sola regola.
</p>
<p>
Il quarto campo è il proprietario del file di periferica.
Il quinto campo contiene i permessi del file di periferica.
</p>
</body>
</section>
<section>
<title>Impostare i permessi manualmente e farli salvare a devfsd</title>
<body>
<p>
Questo è ciò che Gentoo fa di default: se
cambiate proprietario (con <c>chown</c>) e permessi
(con <c>chmod</c>) di alcuni file di periferica, <c>devfsd</c>
salverà le informazioni in modo tale da renderle persistenti
ad ogni riavvio del sistema. Questo perché il file <path>/etc/devfsd.conf</path>
contiene le seguenti righe:
</p>
<pre caption = "/etc/devfsd.conf per il salvataggio dei permessi">
REGISTER ^pt[sy]/.* IGNORE
CHANGE ^pt[sy]/.* IGNORE
CREATE ^pt[sy]/.* IGNORE
DELETE ^pt[sy] IGNORE
REGISTER ^log IGNORE
CHANGE ^log IGNORE
CREATE ^log IGNORE
DELETE ^log IGNORE
REGISTER .* COPY /lib/dev-state/$devname $devpath
CHANGE .* COPY $devpath /lib/dev-state/$devname
CREATE .* COPY $devpath /lib/dev-state/$devname
DELETE .* CFUNCTION GLOBAL unlink
/lib/dev-state/$devname
RESTORE /lib/dev-state
</pre>
<p>
In altre parole, le modifiche ai file di periferica sono copiate
in <path>/lib/dev-state</path> non appena avviene il cambiamento
e ripristinate in <path>/dev</path> all'avvio
del sistema.
</p>
<p>
Un'altra possibilità è di montare <path>/lib/dev-state</path>
in <path>/dev</path> al momento dell'avvio. Per fare questo
dovete essere sicuri che devfs non venga montato automaticamente
(il che significa che dovrete ricompilare il kernel) e
che esista <path>/dev/console</path>.
Quindi, da qualche parte all'inizio degli script di avvio
del vostro sistema, dovete mettere:
</p>
<pre caption = "Montare /lib/dev-state in /dev">
mount --bind /dev /lib/dev-state
mount -t devfs none /dev
devfsd /dev
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Risorse</title>
<section>
<body>
<p>
Per maggiori informazioni su devfs, controllate le seguenti
risorse.
</p>
<p>
Le manpage di devfsd.conf spiegano la sintassi
del file <path>/etc/devfsd.conf</path>.
Per vederle, digitate <c>man devfsd.conf</c>.
</p>
<p>
Le <uri link="http://www.atnf.csiro.au/people/rgooch/linux/docs/devfs.html">devfs FAQ</uri> spiegano tutto ciò che riguarda devfs.
Contengono anche informazioni sulla struttura interna
dei devfs e come i driver possono supportare devfs.
</p>
<p>
Su <uri link="http://www.linuxjournal.com">LinuxJournal</uri>
c'è un interessante articolo su <uri
link="http://www.linuxjournal.com/article.php?sid=6035">devfs for
Management and Administration</uri>.
</p>
<p>
Daniel Robbins ha scritto una serie di articoli per
IBM's DeveloperWorks sui filesystem avanzati.
Tre di questi riguardano devfs:
</p>
<ul>
<li><uri
link="http://www-106.ibm.com/developerworks/linux/library/l-fs4/">Introduction
to devfs</uri></li>
<li><uri
link="http://www-106.ibm.com/developerworks/linux/library/l-fs5/">Setting
up devfs</uri></li>
<li><uri
link="http://www-106.ibm.com/developerworks/linux/library/l-fs6/">Implementing
devfs</uri></li>
</ul>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: faq.xml --]
[-- Type: text/xml; name="faq.xml", Size: 38277 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/it/faq.xml" lang="it">
<title>Gentoo Linux risposte a domande frequenti</title>
<author title="Autore Precedente"><mail link="drobbins@gentoo.org">Daniel Robbins</mail></author>
<author title="Revisione">Colin Morey</author>
<author title="Redazione"><mail link="zhen@gentoo.org">John P. Davis</mail></author>
<author title="Redazione"><mail link="stocke2@gentoo.org">Eric Stockbridge</mail></author>
<author title="Redazione"><mail link="zhware@gentoo.org">Stoyan Zhekov</mail></author>
<author title="Redazione"><mail link="carl@gentoo.org">Carl Anderson</mail></author>
<author title="Redazione"><mail link="peesh@gentoo.org">Jorge Paulo</mail></author>
<author title="Redazione"><mail link="swift@gentoo.org">Sven Vermeulen</mail></author>
<author title="Redazione">
<mail link="bennyc@gentoo.org">Benny Chuang</mail>
</author>
<author title="Traduzione"><mail link="emorelli@gentoo.it">Enrico Morelli</mail></author>
<abstract>
Queste FAQ sono una collezione di domande e risposte
estratte dalla mailing list gentoo-dev e dal canale IRC.
Se avete altre domande (o risposte!) da aggiungere, contattate
l'autore o un membro del gruppo documentazione.
</abstract>
<version>2.14</version>
<date>19 Febbraio 2005</date>
<chapter>
<title>Domande sulle caratteristiche</title>
<section>
<title>Per iniziare</title>
<body>
<ul>
<li><uri link="#pronunciation">Qual è la pronuncia Gentoo, e cosa significa?</uri></li>
<li><uri link="#differences">Cosa rende Gentoo differente?</uri></li>
</ul>
</body>
</section>
<section>
<title>Installazione</title>
<body>
<ul>
<li><uri link="#optimizations">Il sistema sembra instabile usando ottimizzazioni come
"-O9 -ffast-math -fomit-frame-pointer".</uri></li>
<li><uri link="#password">Come cambiare la password di root (e di fatto per ogni altro utente)</uri></li>
<li><uri link="#useradd">Come aggiungere un utente</uri></li>
<li><uri link="#su">Come può un utente diventare (su [switch user]) root</uri></li>
<li><uri link="#devfs">Come disabilitare devfs</uri></li>
<li><uri link="#upgrade">Aggiornare Gentoo da una release ad un'altra senza reinstallare</uri></li>
<li><uri link="#bootrescue">Il kernel non si avvia in modo appropriato</uri></li>
<li><uri link="#proxy">Cosa fare se il proxy richiede un'autenticazione</uri></li>
<li>
<uri link="#isoburning">Come masterizzare un file ISO</uri>
</li>
<li>
<uri link="#cpus">Quale CD/Stage usare per la propria CPU</uri>
</li>
</ul>
</body>
</section>
<section>
<title>Amministrazione dei pacchetti</title>
<body>
<ul>
<li><uri link="#ebuild">Qual è il formato dei pacchetti</uri></li>
<li><uri link="#configure">Eseguire autonomamente il passo ./configure nella compilazione di un pacchetto</uri></li>
<li><uri link="#norsync">Cosa fare se rsync non funziona</uri></li>
<li><uri link="#firewall">Usare emerge da una rete protetta da un firewall</uri></li>
<li><uri link="#unison">Eseguire rsync da un altro sistema operativo</uri></li>
<li><uri link="#manualdownload">Per connessioni lente: scaricare i sorgenti e aggiungerli in seguito al sistema</uri></li>
<li><uri link="#distfiles">I sorgenti .tar.gz del software installato rimangono
in /usr/portage/distfiles usando spazio prezioso. E' sicuro cancellare questi files?</uri></li>
<li><uri link="#tmpportage">Cosa c'è in /var/tmp/portage. E' sicuro cancellare i file e le directory in /var/tmp/portage?</uri></li>
</ul>
</body>
</section>
<section>
<title>Utilizzo</title>
<body>
<ul>
<li><uri link="#rootssh">OpenSSH permette il login solo come utente root.</uri></li>
<li><uri link="#rootX">Applicazioni X partono solo come utente root.</uri></li>
<li><uri link="#intkeyboard">Configurare un International Keyboard Layout.</uri></li>
<li><uri link="#rootdns">La risoluzione dei nomi (DNS) funziona solo per l'utente root.</uri></li>
<li><uri link="#crontab">Usare crontab con un utente non root.</uri></li>
<li><uri link="#numlock">Come avere numlock attivo ad ogni avvio del computer.</uri></li>
<li><uri link="#clear">Come avere il terminale pulito dopo ogni operazione di logout</uri></li>
<li>
<uri link="#suinx">Non si riescono ad eseguire applicazioni X come root dopo un comado su.
</uri>
</li>
</ul>
</body>
</section>
<section>
<title>Manutenzione</title>
<body>
<ul>
<li><uri link="#filecorruption">Come risolvere un problema di corruzione su filesystem ReiserFS.</uri></li>
<li><uri link="#metalogd">Metalogd non scrive i log in tempo reale.</uri></li>
</ul>
</body>
</section>
<section>
<title>Sviluppo</title>
<body>
<ul>
<li><uri link="#reportbugs">Come riportare un bug.</uri></li>
<li><uri link="#releases">Quanto spesso cambiano le release.</uri></li>
<li><uri link="#addfaq">Come aggiungere una domanda o una risposta a queste FAQ.</uri></li>
<li><uri link="#beeping">Lo speaker del computer suona come impazzito durante la compilazione di Mozilla. Come disabilitare i beep da console.</uri></li>
</ul>
</body>
</section>
<section>
<title>Risorse</title>
<body>
<ul>
<li><uri link="#resources">Dove trovare maggiori informazioni su Gentoo Linux.</uri></li>
<li><uri link="#buycd">Come acquistare un CD di Gentoo Linux.</uri></li>
<li><uri link="#mailinglist">Una replica ad un post nella mailing list di Gentoo, viene inviata all'autore originale e non a tutta la lista.</uri></li>
<li><uri link="#help">Non ho trovato una risposta alla mia domanda.</uri></li>
</ul>
</body>
</section>
</chapter>
<chapter>
<title>Per iniziare</title>
<section id="pronunciation">
<title>Significato di Gentoo e pronuncia</title>
<body>
<p>
<e>Gentoo</e> è un piccolo e veloce
pinguino, la pronuncia è "gen-too" (la "g"
in "gentoo" è morbida come in "gentile").
Il nome scientifico del pinguino è <e>Pygoscelis papua</e>, e
il nome Gentoo gli è stato dato dagli abitanti delle Isole
Falkland (Isole Malvinas).
</p>
</body>
</section>
<section id="differences">
<title>Cosa rende Gentoo differente</title>
<body>
<p>
Gentoo usa un sistema di porting BSD-like chiamato
<uri link="/proj/en/portage">Portage</uri>.
Il Portage è un sistema per la gestione di pacchetti
software che permette una grande flessibilità
per l'installazione e la manutenzione di un sistema Gentoo.
Fornisce inoltre, il supporto per opzioni da utilizzare
in fase di compilazione dei pacchetti attraverso
<uri link="/doc/it/handbook/handbook.xml?part=2&chap=2">flag USE</uri>,
dipendenze condizionali, "false" installazioni, installazioni sicure
(attraverso sandboxing) e disinstallazione di software, profili di sistema,
<uri link="/doc/it/handbook/handbook.xml?part=3&chap=2#doc_chap1">
protezione dei file di configurazione </uri> e diverse altre
<uri link="/doc/it/handbook/handbook.xml?part=2&chap=1">caratteristiche.</uri>
</p>
<p>
Con Gentoo è possibile costruire un intero sistema dai sorgenti
usando ottimizzazioni predefinite. L'utente ha inoltre il controllo
completo su quali pacchetti installare e quali no.
Gentoo fornisce anche numerose scelte sul tipo di installazione
così da far avere il sistema che più soddisfa le esigenze
dell'utente. Ecco perché Gentoo è chiamata <e>meta distribuzione</e>.
</p>
<p>
Gentoo ha un attivo e rapido sviluppo. Non solo gli <e>ebuild</e>
(il formato dei pacchetti di Gentoo) ma anche l'intera distribuzione
viene migliorata e aggiornata molto rapidamente.
Patch per i pacchetti sono velocemente integrate nell'albero principale,
la documentazione è aggiornata su base giornaliera, nuove caratteristiche
sono aggiunte frequentemente al portage, le release si succedono
velocemente.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Installazione</title>
<section id="optimizations">
<title>Tutto è realmente instabile usando ottimizzazioni come
"-O9 -ffast-math -fomit-frame-pointer".</title>
<body>
<p>
L'uso di ottimizzazioni maggiori di <c>-O3</c> non devono essere
usate, dato che non sono supportate dalla versione corrente di gcc.
Ottimizzazioni molto aggressive causano qualche volta, l'indirizzamento
del codice assembler in punti dove non farà più la stessa cosa.
</p>
<p>Prima di riportare un bug, compilare usando CFLAGS posto a <c>-march= -O2</c>.
</p>
</body>
</section>
<section id="password">
<title>Come cambiare la password di root (e di fatto ad ogni altro utente)</title>
<body>
<p>
Usare <c>passwd</c> per cambiare la password dell'utente attualmente in uso.
Per conoscere opzioni extra e settaggi, usare il comando <c>man passwd</c>
una volta completata l'installazione.
</p>
</body>
</section>
<section id="useradd">
<title>Come aggiungere un utente</title>
<body>
<p>
Il comando <c>adduser gentoo</c> aggiungerà un utente chiamato gentoo.
Il passo seguente sarà di dare al neo utente la password usando <c>passwd</c>
</p>
<p>
Invece di <c>adduser</c> è possibile usare anche il seguente comando:
</p>
<pre caption="Usare useradd">
# <i>useradd gentoo -m -G users,audio,wheel -s /bin/bash</i>
</pre>
<p>
Questo comando creerà l'utente gentoo, dandogli la possibilità
di usare le periferiche collegate al suono (<path>/dev/sound/*</path>),
permettendogli di diventare root (usando il comando <c>su</c>) in quanto facente
parte del gruppo wheel e assegnandogli come shell la <path>/bin/bash</path>.
</p>
<p>
E' possibile anche installare <c>superadduser</c> usando <c>emerge superadduser</c> e quindi digitare <c>superadduser gentoo</c> per aggiungere
un utente chiamato gentoo. Basta seguire le istruzioni date
da <c>superadduser</c>.
</p>
</body>
</section>
<section id="su">
<title>Come può un utente diventare root</title>
<body>
<p>
Per ragioni di sicurezza, gli utenti possono diventare
(o usare il comando <c>su</c>) root solo facendo parte del gruppo
<e>wheel</e>. Per aggiungere uno <c>username</c> al gruppo <e>wheel</e>
eseguite il seguente comando come root:
</p>
<pre caption="Aggiungere un utente al gruppo wheel">
# <i>gpasswd -a username wheel</i>
</pre>
</body>
</section>
<section id="devfs">
<title>Come disabilitare devfs</title>
<body>
<p>
Per usare Gentoo col "vecchio stile" dell'approccio <path>/dev</path>,
disabilitare devfs passando il parametro <c>gentoo=nodevfs</c> al kernel.
Se d'altra parte, si vuole usare <uri link="/doc/it/udev-guide.xml">udev</uri>
(solo per kernel sella serie 2.6), si può disabilitare devfs passando l'opzione
<c>devfs=nomount</c> al kernel. Si raccomanda la lettura della
<uri link="/doc/it/udev-guide.xml">udev guide</uri>.
</p>
</body>
</section>
<section id="upgrade">
<title>Aggiornare Gentoo da una release ad un'altra senza reinstallare</title>
<body>
<p>
Di fatto non ci sono differenze tra le varie release dopo l'installazione.
Gentoo 1.4 e successive sono basate sulle <c>glibc-2.3.x</c>.
Per questo eseguendo il comando <c>emerge --sync; emerge -u world</c>,
si allineerà rapidamente l'intero sistema all'ultima release di Gentoo.
La vera differenza tra le varie release stà solo nella
fase di installazione.
</p>
<p>
Si possono trovare maggiori informazioni sulla <uri link="gentoo-upgrading.xml">Gentoo
Upgrading Guide</uri>.
</p>
</body>
</section>
<section id="bootrescue">
<title>Il kernel non si avvia in modo appropriato</title>
<body>
<p>
Non è necessario rifare ogni passo dell'installazione, ma solo
quelli associati al kernel. Supponiamo si aver installato
Gentoo in <path>/dev/hda1</path> (/boot) e <path>/dev/hda3</path> (/) con
<path>/dev/hda2</path> come swap space:
</p>
<pre caption="Riconfigurazione del kernel">
<comment>Avviare dal LiveCD e aspettare il prompt</comment>
<comment>Quindi montare tutte le partizioni:</comment>
# <i>mount /dev/hda3 /mnt/gentoo</i>
# <i>mount /dev/hda1 /mnt/gentoo/boot</i>
# <i>swapon /dev/hda2</i>
# <i>mount -t proc none /mnt/gentoo/proc</i>
<comment>Fare il chroot e configurare il kernel</comment>
# <i>chroot /mnt/gentoo /bin/bash</i>
# <i>env-update && source /etc/profile</i>
# <i>cd /usr/src/linux</i>
# <i>make menuconfig</i>
<comment>Ora (de)selezioniamo quello che (de)selezionato in modo errato al
</comment>
<comment>tentativo precedente. Uscire salvando la configurazione corrente
e ricompilare il kernel:</comment>
# <i>make dep && make bzImage modules modules_install</i>
<comment>Copiare il nuovo bzImage sovrascrivendo la versione precedente:</comment>
# <i>cp arch/i386/boot/bzImage /boot</i>
<comment>Se usate LILO, rieseguire lilo -- gli utenti GRUB dovrebbe saltare questo passo:</comment>
# <i>/sbin/lilo</i>
<comment>Uscire dal chroot e riavviare.</comment>
# <i>exit</i>
# <i>umount /mnt/gentoo/proc /mnt/gentoo/boot /mnt/gentoo</i>
# <i>reboot</i>
</pre>
<p>
Se d'altra parte il problema è legato alla configurazione del bootloader,
seguire gli stessi passi, ma invece di configurare/compilare il kernel
occorre riconfigurare il bootloader (la ricompilazione non
è necessaria).
</p>
</body>
</section>
<section id="proxy">
<title>Il proxy richiede un'autenticazione</title>
<body>
<p>
Usando <c>wget</c>, usare la seguente
sintassi per l'autenticazione:
</p>
<pre caption = "Autenticazione Proxy usando wget">
# <i>wget --proxy-user=</i><comment>username</comment><i> --proxy-passwd=</i><comment>password</comment><i> <url></i>
</pre>
<p>
Per automatizzare il procedimento, occorre definirlo in
<path>/etc/make.conf</path>:
</p>
<pre caption = "/etc/make.conf">
FETCHCOMMAND="wget --proxy-user=<comment>username</comment> --proxy-passwd=<comment>password</comment> \
-t 5 --passive-ftp -P \${DISTDIR} \${URI}"
RESUMECOMMAND="/usr/bin/wget --proxy-user=<comment>username</comment> --proxy-passwd=<comment>password</comment> \
-c -t 5 --passive-ftp -P \${DISTDIR} \${URI}"
</pre>
<p>
Per riuscire ad usare <c>rsync</c> con un proxy, configurare la
variabile ambiente RSYNC_PROXY come segue:
</p>
<pre caption="Configurare /etc/make.conf per RSYNC">
RSYNC_PROXY="<comment>username</comment>:<comment>password</comment>@<comment>proxy-server</comment>:<comment>port</comment>"
</pre>
</body>
</section>
<section id="isoburning">
<title>Come masterizzare un file ISO</title>
<body>
<p>
Sarà necessario masterizzare il file nella cosiddetta modalità <e>raw</e>. Questo significa che <e>non</e> si dovrebbe mettere il file sul CD, ma interpretare
il file come un intero CD.
</p>
<p>
Ci sono molti strumenti per masterizzare CD e coprirli tutti diventerebbe un problema infinito. Per cui verrano esaminati alcuni degli strumenti più popolari.
</p>
<ul>
<li>
Usando EasyCD Creator selezionare <c>File</c>, <c>Record CD from CD image</c> e cambiare <c>Files of type</c> in <c>ISO image file</c>.
Collocare il file ISO e cliccare su <c>Open</c>.
Al termine, cliccare su <c>Start recording</c> per masterizzare
l'immagine ISO.
</li>
<li>
Usando Nero Burning ROM, cancellare il wizard che appare automaticamente e selezionare <c>Burn Image</c> dal menu <c>File</c>. Selezionare
l'immagine da masterizzare e cliccare su <c>Open</c>.
Al termine cliccare sul pulsante <c>Burn</c> e l'immagine verrà
scritta sul CD.
</li>
<li>
Usando cdrecord, digitare semplicemente <c>cdrecord dev=/dev/hdc</c>
(sostituire a <path>/dev/hdc</path> il percorso della periferica
che identifica il masterizzatore) seguito dal percorso del file ISO.
</li>
<li>
Usando K3B, selezionare <c>Tools</c> > <c>CD</c> > <c>Burn Image</c>.
Al termine collocate il file ISO all'interno dell'area 'Image to Burn' e cliccare su <c>Start</c>.
</li>
<li>
Usando Mac OS X Panther, lanciare <c>Disk Utility</c> da
<path>Applications/Utilities</path>, selezionare <c>Open</c> dal menu
<c>Images</c>, selezionare l'immagine montata nella finestra principale
e selezionare <c>Burn</c> nel menu <c>Images</c>.
</li>
<li>
Usando Mac OS X Jaguar, lanciare <c>Disk Copy</c> da
<path>Applications/Utilities</path>, selezionare <c>Burn Image</c>
dal menu <c>File</c>, selezionare la ISO e cliccare il pulsante <c>Burn</c>.
</li>
</ul>
</body>
</section>
<section id="cpus">
<title>Quale CD/Stage usare per la propria CPU</title>
<body>
<p>
Prima di tutto occorre conoscere la CPU in uso. Supponiamo sia un Pentium-M.
Ci sarà bisogno di sapere che CPU è, le istruzioni corrette, la compatibilità. Per questo, consultare il sito web del produttore della CPU, o
<uri link="http://www.google.com">Google</uri>.
</p>
<p>
Per il Pentium-M, si scopre che è un Pentium-3 con istruzioni SSE, il che
lo rende compatibile con le istruzioni del Pentium-4. Così, per Pentium-M
si potranno scegliere i CD/Stage per il Pentium-4.
</p>
<p>
Se non si è sicuri, scegliere un CD/Stage più "grossolano", per esempio i686
o anche generico.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Amministrazione dei Pacchetti</title>
<section id="ebuilds">
<title>Formato dei pacchetti</title>
<body>
<p>
I pacchetti sono nel portage tree come <e>ebuild</e> autobuild scripts (script autocompilabili);
Gentoo è primariamente una distribuzione ports-based, il che significa
che vengono provveduti scripts (<c>.ebuild</c> files) e uno speciale sistema
(Portage) attraverso cui costruire le applicazioni dai sorgenti.
Generalmente vengono rilasciati pacchetti precompilati solo per release e snapshot.
Il <uri link="/proj/en/devrel/handbook/handbook.xml?part=2&chap=1">Development HOWTO</uri>
spiega il contenuto di uno script ebuild in dettaglio.
Per complete release ISO, viene creata un'intera suite di pacchetti in formato
binario <c>.tbz2</c> (compatibile con <c>tar.bz2</c>
con meta-informazioni attaccate alla fine del file.)
</p>
</body>
</section>
<section id="configure">
<title>Eseguire autonomamente il passo ./configure nella compilazione di un pacchetto</title>
<body>
<p>
Il metodo esposto funzionerà solo per ebuild semplici (per esempio dove basta eseguire <c>./configure</c> e <c>make && make install</c>).
Accertarsi di guardare l'ebuild per vedere come Gentoo lo avrebbe
usato per l'installazione.
</p>
<p>
Prima esegure l'unpack dell'ebuild: <c>ebuild /usr/portage/<category>/<package>/<ebuild> unpack</c>.
</p>
<p>
Quindi andare in <path>/var/tmp/portage/<package>-<version>/work</path>.
In questa directory troverete tutti i sorgenti del pacchetto.
Eseguire quindi tutti i passi per configurare e compilare
il pacchetto.
</p>
<p>
Terminata la compilazione, eseguire <c>touch
/var/tmp/portage/<package>-<version>/.compiled</c>
per far credere al Portage di aver configurato e
compilato il pacchetto.
Terminare il processo con
<c>ebuild /usr/portage/<category>/<package>/<ebuild>
merge</c>.
</p>
</body>
</section>
<section id="norsync">
<title>Cosa fare se rsync non funziona</title>
<body>
<p>
Se siete all'interno di un'area protetta da un firewall che non
permette di utilizzare rsync, si può usare
<c>emerge-webrsync</c> che scaricherà ed
installerà un'istantanea del Portage
attraverso una normale connessione HTTP.
<c>emerge-webrsync</c> usa <c>wget</c> per
scaricare, in modo tale da supportare
completamente il proxy.
</p>
<pre caption="Usare emerge-webrsync">
~# emerge-webrsync</pre>
</body>
</section>
<section id="firewall">
<title>Usare emerge in una rete protetta da un firewall</title>
<body>
<p>
Occorre modificare le impostazioni di PROXY in <path>/etc/make.conf</path>.
Se non funziona ancora, editare <path>/etc/wget/wgetrc</path>
e modificare appropriatamente http_proxy e ftp_proxy.
</p>
</body>
</section>
<section id="unison">
<title>Eseguire rsync da un altro sistema operativo</title>
<body>
<p>
C'è un programma chiamato unison che
gira sia sotto UNIX che sotto Win32,
E' disponibile su <uri>http://www.cis.upenn.edu/~bcpierce/unison/</uri>.
</p>
</body>
</section>
<section id="manualdownload">
<title>Per connessioni lente: scaricare i sorgenti e aggiungerli in seguito al sistema
</title>
<body>
<p>
Eseguire <c>emerge --pretend package</c>
in modo da vedere quali programmi devono essere installati.
Per avere la lista dei sorgenti per questi pacchetti ed il
sito dai quali scaricarli, usare <c>emerge -fp package</c>.
Scaricare i sorgenti e metterli su un supporto qualsiasi.
Copiare quindi i sorgenti in <path>/usr/portage/distfiles</path>
ed eseguire <c>emerge package</c>.
</p>
</body>
</section>
<section id="distfiles">
<title>I sorgenti .tar.gz del software installato rimangono
in /usr/portage/distfiles usando spazio prezioso. E' sicuro cancellare questi files?</title>
<body>
<p>
Si', potete sicuramente cancellare questi files.
Ma se usate una connessione lenta, come un modem, potete
voler tenere l'archivio se possibile; spesso
alcuni ebuild sono rilasciati per la stessa versione di un software specifico.
Se avete cancellato l'archivio e aggiornato il software esso dovrà essere scaricato nuovamente da internet.
</p>
</body>
</section>
<section id="tmpportage">
<title>Cosa c'è in /var/tmp/portage E' sicuro cancellare i file
e le directory in /var/tmp/portage?</title>
<body>
<p>
Dusante la compilazione, Gentoo salva i sorgenti del pacchetto in
<path>/var/tmp/portage</path>. Non ci sono problemi a cancellare
tutto il contenuto di questa directory.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Utilizzo</title>
<section id="rootssh">
<title>OpenSSH permette il login solo come utente root
</title>
<body>
<p>
Questo è molto probabilemtente
è causato dal fatto che il vostro
user non ha una shell valida.
Controllate la riga riguardante
il vostro user in <path>/etc/passwd</path>
e accertatevi che finisca con /bin/bash (o qualsiasi altra shell).
Se non è cosi', dovete specificare una shell per il vostro user.
Questo puo' essere fatto usando il comando usermod, in questo modo:
</p>
<pre caption="Uso di usermod"># <i>usermod -s /bin/bash user</i></pre>
</body>
</section>
<section id="rootX">
<title>Applicazioni X vengono eseguite solo come root.</title>
<body>
<p>
La directory <path>/tmp</path> ha
permessi sbagliati (occorre definire lo stiky bit).
Digitare il seguente comando come root:
</p>
<pre caption="Cambiare i permessi di /tmp"># <i>chmod 1777 /tmp</i></pre>
</body>
</section>
<section id="intkeyboard">
<title>Configurare un layout internazionale per
la tastiera</title>
<body>
<p>
Modoficare la variabile <c>KEYMAP</c>
in <path>/etc/rc.conf</path>.
Quindi riavviare il computer
o far ripartire lo script keymaps
come segue:
<c>/etc/init.d/keymaps restart</c>.
</p>
</body>
</section>
<section id="rootdns">
<title>La risoluzione dei nomi in DNS funziona
solo per root.</title>
<body>
<p>
Il file <path>/etc/resolv.conf</path>
ha diritti sbagliati; cambiare i permessi come segue:
</p>
<pre caption="Cambiare i permessi di /etc/resolv.conf"># <i>chmod 0644 /etc/resolv.conf</i></pre>
</body>
</section>
<section id="crontab">
<title>Usare crontab con un utente non root</title>
<body>
<p>
Aggiungere l'utente al gruppo <c>cron</c>.
</p>
</body>
</section>
<section id="numlock">
<title>Avere il numlock attivo ad ogni riavvio</title>
<body>
<p>
Facendo il login in modalità grafica, o volendo che numlock
sia attivato alla digitazione di <c>startx</c>, eseguire
<c>emerge numlockx</c> e aggiungere <c>/usr/X11R6/bin/numlockx</c>
in <path>/etc/X11/xinit/xinitrc</path> (per <c>startx</c>) o
<path>/etc/X11/Sessions/</path> (per qualsiasi login manager grafico),
come ad esempio <path>/etc/X11/Sessions/Gnome</path> per il GDM.
</p>
<p>
Gli utenti di GNOME 2.6 noteranno comunque che quanto detto sopra non
funziona. Essi dovranno invece far partire il tool <c>gnome-session-properties</c>. In cima alla finestra, selezionare <c>Startup Programs</c> e cliccare sul bottone <c>Add</c>. Inserire l'ubicazopne del tool <c>numlockx</c>
(per esempio <path>/usr/X11R6/bin/numlockx</path>) ed uscire dal programma.
</p>
<p>
Lavorando da linea di comando, occorre solo eseguire
<c>rc-update add numlock default</c> e numlock sarà attivato
al prossimo riavvio.
</p>
</body>
</section>
<section id="clear">
<title>Avere il terminale pulito ad ogni logout</title>
<body>
<p>
Per avere il terminale pulito, aggiungere <c>clear</c> a
<path>~/.bash_logout</path> del vostro username.
</p>
<pre caption = "Ripulire il terminale durante il logout">
$ <i>echo clear >> ~/.bash_logout</i></pre>
<p>
Per rendere la modifica disponibile ad ogni nuovo utente, eseguire lo stesso comando per
<path>/etc/skel/.bash_logout</path>:
</p>
<pre caption = "Pulire il terminale di ogni nuovo utente al logout">
# <i>echo clear >> /etc/skel/.bash_logout</i></pre>
</body>
</section>
<section id="suinx">
<title>Non si riescono ad eseguire applicazioni come root dopo un comando su.</title>
<body>
<p>
Questo problema sembra presentarsi con login grafici. Utenti che
usano X partendo da <c>startx</c> non hanno questo problema.
Il problema è un
<uri link="http://bugs.gentoo.org/show_bug.cgi?id=14560">bug</uri> nelle PAM di Gentoo. La soluzione è comunque semplice, basta aggiungere la seguente
linea a
<path>/etc/profile</path>.
</p>
<pre caption="Export XAUTHORITY">
export XAUTHORITY="${HOME}/.Xauthority"
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Manutenzione</title>
<section id="filecorruption">
<title>Come risolvere un problema di corruzione su filesystem ReiserFS</title>
<body>
<p>
Se la partizione
ReiserFS è corrotta, provare a
fare il boot dal CD di installazione di Gentoo Linux ed
eseguire <c>reiserfsck --rebuild-tree</c> sul
filesystem corrotto.
Questo dovrebbe rendere nuovamente consistente il
filesystem, anche se è possibile la perdita di qualche
file o directory a causa della corruzione.
</p>
</body>
</section>
<section id="metalogd">
<title>Metalogd non scrive i log in tempo reale</title>
<body>
<p>
Metalog scrive l'output su disco in blocchi, per cui i messaggi
non sono registrati immediatamente nei log di sistema. Durante
i test di un daemon, questo comportamento che predilige
la performance non è di grande aiuto. Per ovviare a questo
comportamento, inviare a metalog un segnale USR1 per disabilitare
temporaneamente il buffering dei messaggi (il che significa che <c>
tail -f <path>/var/log/everything/current</path></c> funzionerà in
tempo reale come ci si aspetta) e un segnale USR2 per ripristinare
il normale comportamento di metalog. Per disabilitare permanentemente
il buffering, modificare le opzioni di metalog in
<path>/etc/conf.d/metalog</path> da METALOG_OPTS="-B" a METALOG_OPTS="-B -s".
</p>
<pre caption="Abilitare/disabilitare il buffering di metalog">
<codenote>Per disabilitare il buffering:</codenote>
# <i>killall -USR1 metalog</i>
<codenote>Per riabilitare il buffering:</codenote>
# <i>killall -USR2 metalog</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Sviluppo</title>
<section id="reportbugs">
<title>Come segnalare un bug</title>
<body>
<p>
Per bugs all'interno di uno specifico programma,
contattare direttamente l'autore dello stesso.
Altrimenti usare il Bugzilla bug tracker
all'indirizzo <uri>http://bugs.gentoo.org</uri>.
Potete anche venire a trovarci in <c>#gentoo</c>
sul network IRC <uri link="http://www.freenode.net"> Freenode</uri>.
</p>
</body>
</section>
<section id="releases">
<title>Quanto spesso cambiano le release</title>
<body>
<p>
L'annuncio di nuove release viene fatto
sulla mailing-list <uri link="http://www.gentoo.org/main/en/lists.xml">gentoo-announce</uri>.
In realtà i pacchetti stessi vengono aggiornati non appena il principale
autore ha rilasciato nuovo codice. Per sapere quando saranno disponibili
nuove relase controllare la pagina <uri link="/proj/en/releng">Release Engineering Project</uri>.
</p>
</body>
</section>
<section id="addfaq">
<title>Come aggungere una domanda o una risposta a questa FAQ</title>
<body>
<p>
Sottomettere un nuovo bug su <uri>http://bugs.gentoo.org</uri> a aggiungeterlo al
prodotto "Docs-user", componente "Gentoo Linux FAQ".
</p>
</body>
</section>
<section id="beeping">
<title>Lo speaker del computer suona come impazzito durante la compilazione di Mozilla. Come disabilitare i beep da console</title>
<body>
<p>
I beep della console possono essere disabilitati
usando setterm, come segue:
</p>
<pre caption="Uso di setterm"># <i>setterm -blength 0</i>
</pre>
<p>
Per disabilitare i suoni ad ogni riavvio
inserire il suddetto comando nel file <path>/etc/conf.d/local.start</path>. Comunque questo disabilita il suono
solo per il terminale corrente. Per disabilitare
il suono di tutti i terminali, filtrare
l'output del comando sul terminale desiderato,
come segue:
</p>
<pre caption="Usare setterm (bis)"># <i>setterm -blength 0 > /dev/vc/1</i>
</pre>
<p>
Sostituire a /dev/vc/1 il terminale su
cui disabilitare i suoni.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Risorse</title>
<section id="resources">
<title>Dove trovare maggiori informazioni su Gentoo Linux</title>
<body>
<p>
La documentazione ufficiale di Gentoo può
essere trovata su <uri>http://www.gentoo.org</uri>;
mentre informazioni generali su Linux si possono trovare
su <uri>http://www.tldp.org</uri>.
</p>
</body>
</section>
<section id="buycd">
<title>Come acquistare un CD di Gentoo Linux</title>
<body>
<p>
I LiveCD per tutte le architetture supportate sono disponibili su <uri link="http://store.gentoo.org/">Gentoo Store</uri>.
Comprando un CD dallo store darete anche un supporto al
nostro sviluppo. Per questo, se possibile, considerate l'acquisto dal nostro
store :-)
</p>
<p>
Potete anche trovare i CD su
<uri link = "http://www.tuxcds.com/section.php?section=42">
tuxcds</uri> a prezzi molto vantaggiosi.
Anche questi rivenditori danno una porzione del profitto al progetto Gentoo.
</p>
</body>
</section>
<section id="mailinglist">
<title>Una replica ad un post nella mailing list di Gentoo, viene inviata all'autore originale e non a tutta la lista</title>
<body>
<p>
Gli amministratori della mailing list hanno deciso di andare contro
l'alterazione degli headers per avere risposte che vanno sulla mailing list.
Ci sono varie ragioni per questo. Per esempio, se un iscritto ha una
casella di posta piena, l'intera lista riceverà notifica di questo ogni
volta che qualcosa viene inviato alla lista.
</p>
<p>
Molti client di posta hanno la funzione "reply to all". Questo assicura
che la replica verrà inviata alla mailing list e al mittente originale.
Molti utenti di client di posta testuali conoscono il metodo da
usare, altrimenti in Pine c'è un'opzione "reply to group".
C'è un documento non ufficiale che spiega come
settare Mutt in modo da replicare alla lista su
<uri link="http://forums.gentoo.org/viewtopic.php?t=1085">forums.gentoo.org</uri>.
</p>
<p>
Ad alcuni membri della lista non piace questo metodo, ma è
stato discusso ampiamente quando sorse il problema, con argomentazioni
da entrambe le parti. Comunque gli amministratori della lista hanno
deciso di mantenere questa strada. Discussioni sulla mailing list hanno
qualche volta avuto spiegazioni cortesi e altre volte commenti piuttosto bruschi
sul controllo degli archivi. Comunque gli amministratori sono dispiaciuti
dell'inconveniente che questo può portare ad alcuni utenti, ma al presente
è preferibile ad altre alternative per alcune ragioni, molte
delle quali sono spiegate <uri link="http://www.unicom.com/pw/reply-to-harmful.html">qui</uri>.
</p>
</body>
</section>
<section id="help">
<title>Non ho trovato risposta alla mia domanda</title>
<body>
<p>
Un buon inizio è navigare tra i vari documenti presenti
sul <uri link="http://www.gentoo.org/doc/it/index.xml">sito</uri>, oltre alle
mailing list di Gentoo Linux delle quali
c'è una lista su <uri link="http://www.google.com">Google</uri>.
Per ricercare
all'interno delle Gentoo list, digitando
solo "lists.gentoo.org qualcosa" per
' ricercare "qualcosa" all'interno delle mailing list
di Gentoo.
Se tutto questo non vi dà la risposta,
venite a trovarci sul nostro canale irc <c>#gentoo</c> su <uri>irc.freenode.net</uri>.
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #4: ldap-howto.xml --]
[-- Type: text/xml; name="ldap-howto.xml", Size: 18461 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/it/ldap-howto.xml">
<title>Gentoo Guide all'autenticazione OpenLDAP </title>
<author title="Autore">
<mail link="sj7trunks@gentoo.org">Benjamin Coles</mail>
</author>
<author title="Revisore">
<mail link="swift@gentoo.org">Sven Vermeulen</mail>
</author>
<author title="Revisore">
<mail link="tseng@gentoo.org">Brandon Hale</mail>
</author>
<author title="Revisore">
<mail link="bennyc@gentoo.org">Benny Chuang</mail>
</author>
<author title="Traduttore">
<mail link="emorelli@gentoo.it">Enrico Morelli</mail>
</author>
<author title="Traduttore">Team Italiano</author>
<abstract>
Questa guida introduce le basi di LDAP e mostra come configurare
OpenLDAP allo scopo di autenticare un gruppo di computer Gentoo.
</abstract>
<license />
<version>0.16</version>
<date>29 Marzo 2005</date>
<chapter>
<title>Iniziamo con OpenLDAP</title>
<section>
<title>Cos'è LDAP?</title>
<body>
<p>
LDAP è l'acronimo di <e>Lightweight Directory Access Protocol</e>.
Basato su X.500, comprende molte delle sue funzioni primarie,
ma non include molte delle funzioni esoteriche che X.500 ha.
Ma cos'è questo X.500 e cosa centra con LDAP?
</p>
<p>
Nel concetto OSI, l'X.500 è un modello per i Directory Services.
Contiene le definizioni per i namespace ed i protocolli
per la ricerca e l'aggiornamento delle directory.
Comunque, X.500 è stato trovato essere eccessivo in molte
situazioni. Entriamo in LDAP. Come l'X.500, provvede
un modello data/namespace per le directory ed anche un procollo.
Comunque, LDAP è disegnato per essere eseguito direttamente
al di sopra dello stack TCP/IP. Pensate a LDAP come una
versione più snella di X.500.
</p>
</body>
</section>
<section>
<title>Non ci siamo. Cos'è una directory?</title>
<body>
<p>
Una directory è un database specializzato disegnato
per frequenti richieste ma infrequenti aggiornamenti.
Al contrario di database generali, non contiene
il supporto per transazioni o funzionalità di roll-back.
Le directory sono facilmente replicabili per incrementarne la disponibilità e l'affidabilità. Quando directory sono
replicate, sono permesse inconsistenze temporanee finché
non divengono eventualmente sincronizzate.
</p>
</body>
</section>
<section>
<title>Come sono strutturate le informazioni?</title>
<body>
<p>
Tutte le informazioni all'interno di una directory
sono strutturate gerarchicamente. Inoltre, se volete
inserire dati dentro una directory, la directory
del sapere come memorizzare questi dati all'interno
di un albero. Diamo un'occhiata ad una finta compagnia
e ad un albero Internet-like:
</p>
<pre caption = "Struttura organizzativa di GenFic, una compagnia finta di Gentoo">
dc: com
|
dc: genfic <comment>(Organisation)</comment>
/ \
ou: people servers <comment>(Organisational Units)</comment>
/ \ ..
uid: .. jhon <comment>(OU-specific data)</comment>
</pre>
<p>
Dato che non abbiamo introdotto dati nel database in questo
schema ascii, ogni nodo di questo albero deve essere definito.
Per dare un nome ad ogni nodo, LDAP usa un naming scheme.
Molte distribuzioni LDAP (incluso OpenLDAP) contengono già
un certo numero di schemi predefiniti (generalmente approvati),
come inetorgperson, uno schema frequentemente usato
per definire utenti.
</p>
<p>
Utenti interessati sono incoraggiati a leggere la
<uri link="http://www.openldap.org/doc/admin21/">OpenLDAP Admin Guide</uri>.
</p>
</body>
</section>
<section>
<title>Per cosa si usa LDAP</title>
<body>
<p>
LDAP può essere usato per vari scopi. Questo documento si focalizza
sulla gestione centralizzata degli utenti, mantenendo tutti gli
account utente in una singola collocazione LDAP (il che non significa
che sia alloggiato su un singolo server, LDAP supporta scalabilità e
ridondanza), sono comunque raggiungibili anche altri obiettivi usando LDAP.
</p>
<ul>
<li>Infrastruttura pe chiavi pubbliche</li>
<li>Calendari condivisi</li>
<li>Rubriche condivise</li>
<li>Depositi per DHCP, DNS, ...</li>
<li>
Direttive di classe per la configurazione di sistemi (tenendo traccia
delle configurazioni di vari server)
</li>
<li>...</li>
</ul>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione di OpenLDAP</title>
<section>
<title>Configurazione iniziale</title>
<body>
<note>
In questo documento useremo l'indirizzo genfic.com come
esempio. Voi dovrete naturalmente cambiarlo. Comunque,
assicuratevi che il nodo iniziale sia il top level di un dominio
ufficiale (net, com, cc, be, it, ...).
</note>
<p>
Prima di tutto installiamo tutti i componenti necessari
sul nostro server:
</p>
<pre caption="Installazione di OpenLDAP">
# <i>emerge openldap pam_ldap nss_ldap migrationtools</i>
# <i>chown ldap:ldap /var/lib/openldap-ldbm /var/lib/openldap-data /var/lib/openldap-slurp</i>
</pre>
<p>
Editiamo <path>/etc/openldap/slapd.conf</path> e aggiungiamo
ciò che segue a destra di <c>core.schema</c>:
</p>
<pre caption="/etc/openldap/slapd.conf">
<comment># Includiamo i data schemes necessari</comment>
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
<comment># Usare md5 per fare l'hash delle password</comment>
password-hash {md5}
<comment># Define SSL and TLS properties (optional)</comment>
TLSCertificateFile /etc/ssl/ldap.pem
TLSCertificateKeyFile /etc/openldap/ssl/ldap.pem
TLSCACertificateFile /etc/ssl/ldap.pem
<codenote>Further down...</codenote>
database ldbm
suffix "dc=genfic,dc=com"
rootdn "cn=Manager,dc=genfic,dc=com"
rootpw <i>{MD5}Xr4ilOzQ4PCOq3aQ0qbuaQ==</i>
directory /var/lib/openldap-ldbm
index objectClass eq
<codenote>
Potete avere una password cryptata come quella sopra, con slappasswd -h {Md5}</codenote>
</pre>
<p>
Ora editiamo il file di configurazione di LDAP:
</p>
<pre caption="/etc/openldap/ldap.conf">
# <i>nano -w /etc/openldap/ldap.conf</i>
<codenote>Aggiungiamo...</codenote>
BASE dc=genfic, dc=com
URI ldaps://auth.genfic.com:636/
TLS_REQCERT allow
</pre>
<p>
Generiamo ora un certificato SSL per rendere
sicura la directory. Rispondete alle domande che
ricevete nel miglior modo possibile. Quando vi viene
richiesto il vostro <e>Common Name</e>, inserite
il nome dei client che userete quando contatterete il server.
Di solito è il domainname completo (p.e. <path>auth.genfic.com</path>).
</p>
<pre caption="Generazione di un certificato SSL">
# <i>cd /etc/ssl</i>
# <i>openssl req -config /etc/ssl/openssl.cnf -new -x509 -nodes -out \
ldap.pem -keyout /etc/openldap/ssl/ldap.pem -days 999999</i>
</pre>
<p>
Editate ora <path>/etc/conf.d/slapd</path> e aggiungete ciò che
segue, scommentando le linee esistenti:
</p>
<pre caption="/etc/conf.d/slapd">
OPTS="-h 'ldaps:// ldapi://%2fvar%2frun%2fopenldap%2fslapd.sock'"
</pre>
<p>
Facciamo partire slapd:
</p>
<pre caption = "Start di SLAPd">
# <i>/etc/init.d/slapd start</i>
</pre>
<p>
Potete fare un test col seguente comando:
</p>
<pre caption = "Testiamo il daemon SLAPd">
# <i>ldapsearch -D "cn=Manager,dc=genfic,dc=com" -W</i>
</pre>
<p>
Se ricevete un errore, provate ad aggiungere <c>-d 255</c>
per incermentare la verbosità e risolvere il problema.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Migrare dati esistenti</title>
<section>
<title>Migrare account utente</title>
<body>
<p>
Migriamo ora gli account utente. Aprite
<path>/usr/share/migrationtools/migrate_common.ph</path>
e editate ciò che segue:
</p>
<pre caption="/usr/share/migrationtools/migrate_common.ph">
$DEFAULT_BASE = "dc=genfic,dc=com";
$EXTENDED_SCHEMA = 1;
<comment># Commentate queste linee a meno che non abbiate un mail sheme caricato</comment>
<comment>#$DEFAULT_MAIL_DOMAIN = "genfic.com";</comment>
<comment>#$DEFAULT_MAIL_HOST = "mail.genfic.com";</comment>
</pre>
<p>
Eseguite ora gli script per la migrazione:
</p>
<pre caption="Esecuzione dei migration scripts">
# <i>export ETC_SHADOW=/etc/shadow</i>
# <i>cd /usr/share/migrationtools</i>
# <i>./migrate_base.pl > /tmp/base.ldif</i>
# <i>./migrate_group.pl /etc/group /tmp/group.ldif</i>
# <i>./migrate_hosts.pl /etc/hosts /tmp/hosts.ldif</i>
# <i>./migrate_passwd.pl /etc/passwd /tmp/passwd.ldif</i>
</pre>
<p>
Questi ultimi passi migrano i file specificati nei file ldif
letti da LDAP. Ora aggiungiamo i file alla nostra directory:
</p>
<pre caption="Importare i dati nella nostra directory">
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/base.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/group.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/passwd.ldif</i>
# <i>ldapadd -D "cn=Manager,dc=gentoo,dc=org" -W -f /tmp/hosts.ldif</i>
</pre>
<p>
Se si raggiunge un errore nei file ldif, si può riprendere da dove
si è terminato usando <c>ldapadd -c</c>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Configurazione del client</title>
<section>
<title>Configurazione di PAM</title>
<body>
<p>
Il primo passo è di configurare PAM per permettere l'autorizzazione
LDAP. Installare
<c>net-libs/pam_ldap</c> per fornire il supporto dell'autorizzazione
LDAP a PAM e
<c>net-libs/nss_ldap</c> in modo tale che il sistema
possa far fronte ai server LDAP per informazioni aggiuntive
(usate da <path>nsswitch.conf</path>).
</p>
<pre caption="Installing pam_ldap and nss_ldap">
# <i>emerge pam_ldap nss_ldap</i>
</pre>
<p>
Now edit <path>/etc/pam.d/system-auth</path> so it looks like the following:
</p>
<pre caption="/etc/pam.d/system-auth">
auth required /lib/security/pam_env.so
auth sufficient /lib/security/pam_ldap.so use_first_pass
auth sufficient /lib/security/pam_unix.so likeauth nullok shadow
auth required /lib/security/pam_deny.so
account sufficient /lib/security/pam_unix.so
account sufficient /lib/security/pam_ldap.so
account required /lib/security/pam_deny.so
password required /lib/security/pam_cracklib.so retry=3
password sufficient /lib/security/pam_unix.so nullok use_authtok shadow md5
password sufficient /lib/security/pam_ldap.so use_authtok
password required /lib/security/pam_deny.so
session required /lib/security/pam_limits.so
session required /lib/security/pam_unix.so
session required /lib/security/pam_mkhomedir.so skel=/etc/skel/ umask=0
session optional /lib/security/pam_ldap.so
</pre>
<p>
Cambiate <path>/etc/ldap.conf</path> in modo da avere:
</p>
<pre caption="/etc/ldap.conf">
<comment>#host 127.0.0.1</comment>
<comment>#base dc=padl,dc=com</comment>
ssl start_tls
ssl on
suffix "dc=genfic,dc=com"
<comment>#rootbinddn uid=root,ou=People,dc=genfic,dc=com</comment>
uri ldaps://auth.genfic.com/
pam_password exop
ldap_version 3
pam_filter objectclass=posixAccount
pam_login_attribute uid
pam_member_attribute memberuid
nss_base_passwd ou=People,dc=genfic,dc=com
nss_base_shadow ou=People,dc=genfic,dc=com
nss_base_group ou=Group,dc=genfic,dc=com
nss_base_hosts ou=Hosts,dc=genfic,dc=com
scope one
</pre>
<p>
Configurate infine i vostri client in modo che
controllino il LDAP per gli account di sistema:
</p>
<pre caption="/etc/nsswitch.conf">
passwd: files ldap
group: files ldap
shadow: files ldap
</pre>
<p>
Per testare le modifiche, digitate:
</p>
<pre caption="Test LDAP Auth">
# <i>getent passwd|grep 0:0</i>
<codenote>Dovreste avere due righe di risposta:</codenote>
root:x:0:0:root:/root:/bin/bash
root:x:0:0:root:/root:/bin/bash
</pre>
<p>
Se notate che una delle linee che avete messo nel
vostro <path>/etc/ldap.conf</path> era commentata
(la linea <c>rootbinddn</c>), non preoccupatevi, non ne
avete bisogno a meno che non vogliate cambiare la
password degli utenti come superuser. In questo caso
avete bisogno di mettere in chiaro la password di root
in <path>/etc/ldap.secret</path>. Questo è
<brite>PERICOLOSO</brite> e dovreste cambiare l'accesso
del file in 600. Quello che faccio io è di lasciare questo
file in bianco e quando ho bisogno di cambiare la password
a qualcuno che è sia in ldap che in <path>/etc/passwd</path>,
metto la password di root nel file suddetto per 10 secondi mentre
cambio la password dell'utente e quindi la rimuovo subito
dopo che ho terminato.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Configurazioni per LDAP Server Security</title>
<section>
<title>Permessi OpenLDAP</title>
<body>
<p>
Se diamo un'occhiata a <path>/etc/openldap/slapd.conf</path>
vedremo che possiamo specificare le ACL (o permessi)
di quali dati gli utenti possono leggere e/o scrivere:
</p>
<pre caption="/etc/openldap/slapd.conf">
access to attrs="userPassword"
by dn="uid=root,ou=people,dc=genfic,dc=com" write
by dn="uid=John, ou=People,dc=genfic,dc=com" write
by anonymous auth
by self write
by * none
access to *
by dn="uid=root,ou=People,dc=genfic,dc=com" write
</pre>
<p>
Questo vi dà l'accesso a tutto ciò che un utente può modificare. Se questa è una vostra
informazione, avete l'accesso in scrittura; se l'informazione
è di un altro utente, potete leggerla; utenti anonimi devono
inviare login e password per avere l'accesso. Ci sono
quattro livelli, partendo dal più basso al più alto:
<c>auth search read write</c>.
</p>
<p>
La prossima ACL è leggermente più sicura come bloccare
ad un utente normale la lettura delle password shadow
di altri utenti:
</p>
<pre caption="/etc/openldap/slapd.conf">
access to dn=".*,dc=genfic,dc=com" attr="userPassword"
by dn="uid=root,ou=people,dc=genfic,dc=com" write
by dn="uid=John, ou=People,dc=genfic,dc=com" write
by anonymous auth
by self write
by * search
access to *
by dn="uid=root,ou=People,dc=genfic,dc=com" write
by * read
</pre>
<p>
Questo esempio dà a root e John l'accesso in
lettura/scrittura/ricerca in tutto l'albero
sotto <path>dc=genfic,dc=com</path>.
Questo permette agli utenti di cambiare le proprie
<path>userPassword</path>. Così per come finisce
la dichiarazione del filtro ognuno ha la possibilità
di ricercare ma non di leggere i risultati di tale ricerca.
Possiamo avere acl multiple ma le regole vengono processate
dal basso verso l'alto, così quelle iniziali dovrebbero essere
quelle più restrittive.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Lavorare con OpenLDAP</title>
<section>
<title>Manutenzione delle directory</title>
<body>
<p>
Potete iniziare ad usare le directory per autenticare gli utenti
in apache/proftpd/qmail/samba. Potete amministrarle con Webmin,
che provvede un'interfaccia veramente facile. Potete anche
usare gq o directory_administrator.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Riconoscimenti</title>
<section>
<body>
<p>
Vorremmo ringraziare Matt Heler per averci prestato il
suo computer per gli scopi di questa guida. Grazie anche
agli amici in #ldap @ irc.freenode.net
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #5: qmail-howto.xml --]
[-- Type: text/xml; name="qmail-howto.xml", Size: 23628 bytes --]
<?xml version = '1.0' encoding = 'UTF-8'?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/qmail-howto.xml,v 1.17 2004/04/22 07:10:38 swift Exp $ -->
<!DOCTYPE guide SYSTEM "../dtd/guide.dtd">
<guide link="/doc/en/qmail-howto.xml">
<title>qmail/vpopmail Virtual Mail Hosting System Guide</title>
<author title="Autore originale">
<mail link="vapier@gentoo.org">Mike Frysinger</mail>
</author>
<author title="Traduttore">
<mail link="gentoo-dev@gentoo.it">Enrico Morelli</mail>
</author>
<author title="Traduttore">
Team Italiano
</author>
<abstract>
Questo documento espone dettagliatamente come creare un mail server basato su qmail,
vpopmail, courier-imap, mysql e imp di horde.
</abstract>
<version>1.10</version>
<date>19 Dicembre 2004</date>
<chapter>
<title>Introduzione</title>
<section>
<body>
<p>
qmail può essere facilmente configurato per la gestione delle mail
inviate da demoni di sistema, da singoli server, da domini, o da domini virtuali.
Questa guida fornirà un aiuto per configurare qmail per tutti questi scenari
focalizzando l'attenzione sull'accesso remoto e le comunicazioni crittate.
</p>
<p>
Specificamente, i pacchetti che questa guida prenderà in esame sono qmail,
courier-imap, vpopmail e horde/imp. Insieme a questi, saranno
installati, come dipendenze, i pacchetti daemontools, ucspi-tcp, mysql, apache e mod_php.
Attraverso qmail, viene fornito il core delle funzioni mta, con courier-imap si hanno
i servizi necessari al recupero delle mail da remoto, attraverso vpopmail si ha la
gestione dei domini virtuali, infine, con horde/imp si ha l'accesso via web alle mail.
</p>
<p>
Prima di emergere tutti i pacchetti, è necessario avere le seguenti variabili USE abilitate:
(se alcuni di questi pacchetti sono già stati installati, probabilmente sarà necessario
riemergeli) <c>USE="maildir ssl imap mysql"</c>. Inoltre, per usare horde/imp
occorre abilitare <c>USE="nls"</c> prima di installare mod_php.
</p>
<note>
Questa guida comprende diversi passaggi. In ogni momento se si pensa che
la configurazione sia 'completa', non c'è bisogno di continuare.
</note>
<p>
Ci sono molti altri pacchetti per avere un sistema di gestione
delle mail, per cui questo è il momento di decidere in favore di qmail.
Altrimenti si rimanda alla lettura di <uri link="virt-mail-howto.xml">una bella guida</uri>
incentrata su <uri link="http://www.postfix.org/">Postfix</uri> o si
può dare un'occhiata a <uri link="http://www.exim.org/">exim</uri>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>qmail</title>
<section>
<body>
<pre caption="Emerge qmail">
# <i>emerge qmail</i>
</pre>
<impo>
Questa guida si incentra su qmail-1.03-r13 o superiore, ma potrebbe essere
seguita anche per versioni precedenti.
</impo>
<warn>
In caso si ottenga il messaggio <c>the virtual/mta package conflicts with another
package</c>, è necessario rimuovere l'altro MTA presente nel sistema.
Per sapere di quale pacchetto si tratta, eseguire <c>emerge qmail -p</c>.
</warn>
<p>
Insieme a qmail vengono installati anche i pacchetti ucspi-tcp e daemontools.
Si possono leggere maggiori informazioni su <uri link="http://cr.yp.to/ucspi-tcp.html">ucspi-tcp</uri>
e <uri link="http://cr.yp.to/daemontools.html">daemontools</uri>.
Basilarmente, daemontools è responsabile della gestione di qmail come servizio
mentre ucspi-tcp è responsabile della gestione delle connessioni TCP in ingresso
verso i servizi di qmail.
</p>
<p>
E' necessario eseguire alcune configurazioni post-installazione.
</p>
<pre caption="Configurazione per qmail">
<comment>(Da personalizzare per adattarle alle informzioni personali)</comment>
# <i>nano /var/qmail/control/servercert.cnf</i>
# <i>ebuild /var/db/pkg/mail-mta/qmail-1.03-r*/qmail-1.03-r*.ebuild config</i>
</pre>
<p>
Il progetto qmail si focalizza completamente sulla sicurezza. A questo fine,
nessuna mail sarà inviata all'utente 'root'. Si rende così necessario selezionare un
utente per ricevere le mail che altrimenti sarebbero destinate a 'root'.
In questa guida faremo riferimento a tale utente col nome di 'vapier'.
</p>
<pre caption="Configurazione di un utente non-root">
# <i>cd /var/qmail/alias</i>
# <i>echo vapier > .qmail-root</i>
# <i>echo vapier > .qmail-postmaster</i>
# <i>echo vapier > .qmail-mailer-daemon</i>
</pre>
<p>
Avvio dei servizi di consegna di qmail.
</p>
<pre caption="Avvio dei servizi di consegna di qmail">
# <i>rc-update add svscan default</i>
# <i>/etc/init.d/svscan start</i>
# <i>cd /service</i>
# <i>ln -s /var/qmail/supervise/qmail-send qmail-send</i>
</pre>
<p>
Test per vedere se qmail lavora correttamente.
</p>
<pre caption="Test servizio di consegna">
# <i>ssh vapier@localhost</i>
# <i>maildirmake .maildir</i>
# <i>qmail-inject root << EOF
test root e-mail!
EOF</i>
# <i>qmail-inject postmaster << EOF
test postmaster e-mail!
EOF</i>
# <i>qmail-inject vapier << EOF
test vapier e-mail!
EOF</i>
# <i>mutt</i>
<comment>(Ci dovrebbero essere tre email nella inbox)</comment>
</pre>
<p>
A questo punto è pronto un sistema di gestione mail per la macchina locale
e per utenti che utilizzano tale macchina nonché per i demoni di sistema che
necessitano di inviare mail.
</p>
<warn>
Se non si è ricevuta alcuna mail o se nei file di log sono presenti
errori (controllare in <path>/var/log/qmail</path>) che coinvologono
'localhost.localhost', il problema coinvolge la configurazione
del dominio/dns. Il comportamento predefinito di qmail è l'utilizzo
dell'output di <c>hostname --fqdn</c>. Se il comando restituisce 'localhost'
controllare la correttezza di <path>/etc/hostname</path>, <path>/etc/hosts</path> e
che il dns funzioni correttamente. Editare i file
di configurazione in <path>/var/qmail/control</path> usando gli esempi
che seguono.
</warn>
<pre caption="Esempio dei file in /var/qmail/control/ per un dominio di secondo livello">
# <i>hostname --fqdn</i>
wh0rd.org
# <i>cat me</i>
wh0rd.org
# <i>cat defaultdomain</i>
wh0rd.org
# <i>cat plusdomain</i>
wh0rd.org
# <i>cat locals</i>
wh0rd.org
# <i>cat rcpthosts</i>
wh0rd.org
</pre>
<pre caption="Esempio dei file in /var/qmail/control/ per un dominio di terzo livello">
# <i>hostname --fqdn</i>
mail.wh0rd.org
# <i>cat me</i>
mail.wh0rd.org
# <i>cat defaultdomain</i>
wh0rd.org
# <i>cat plusdomain</i>
wh0rd.org
# <i>cat locals</i>
mail.wh0rd.org
# <i>cat rcpthosts</i>
mail.wh0rd.org
</pre>
</body>
</section>
</chapter>
<chapter>
<title>vpopmail</title>
<section>
<body>
<pre caption="Emerge vpopmail">
# <i>emerge vpopmail</i>
</pre>
<impo>
Questa guida si incentra su vpopmail-5.4.0_rc1 o superiore, ma potrebbe essere
seguita anche per versioni precedenti.
</impo>
<p>
La configurazione di vpopmail è leggermente più difficile del pacchetto precedente.
Dato che l'uso di vpopmail prevede mysql, assicurarsi che il demone di mysql sia
attivo, quindi configurare il database di vpopmail.
Prima di tutto, assicurarsi di aver emerso e configurato mysql. La password usata per
il database vpopmail è 'vpoppw', si raccomanda di sceglierne una differente.
</p>
<pre caption="Configurare vpopmail in mysql">
# <i>rc-update add mysql default</i>
<comment>Se mysql è stato installato per la prima volta, assicurarsi di eseguire
il comando <i>ebuild <mysql.ebuild> config</i> e seguire le direttive che seguono
prima di far partire il server mysql.
</comment>
# <i>/etc/init.d/mysql start</i>
# <i>nano /etc/vpopmail.conf</i>
<comment>(Cambiare la password da 'secret' a 'vpoppw')</comment>
# <i>mysql -p << EOF
create database vpopmail;
use mysql;
grant select, insert, update, delete, create, drop on vpopmail.* to vpopmail@localhost identified by 'vpoppw';
flush privileges;
EOF</i>
<comment>(I passi che seguono non sono necessari, vanno eseguiti per sicurezza)</comment>
# <i>chown root:vpopmail /etc/vpopmail.conf</i>
# <i>chmod 640 /etc/vpopmail.conf</i>
# <i>chown root:vpopmail /var/vpopmail/bin/vchkpw</i>
# <i>chmod 4711 /var/vpopmail/bin/vchkpw</i>
</pre>
<warn>
Se si ha esperienza di problemi di permessi con mysql/vpopmail, riavviare mysql
eseguendo <c>/etc/init.d/mysql restart</c>.
</warn>
<p>
A questo punto vpopmail è pronto all'uso. In questa guida viene provveduto
l'hosting virtuale per il dominio 'wh0rd.org', il che significa che sarà necessario
configurare vpopmail affinché faccia da host per questo dominio.
Sarà anche creato uno user account per 'vapier'.
</p>
<pre caption="Aggiungere un dominio">
<comment>(Necessario solo se il comando <i>vadddomain</i> visualizza "command not found")</comment>
# <i>source /etc/profile</i>
<comment>(Durante il debug di vpopmail, si potrebbero consultare i log)</comment>
# <i>mysql -u vpopmail -p</i>
mysql> <i>select * from vpopmail.vlog;</i>
# <i>vadddomain wh0rd.org postpass</i>
<comment>(Verifica se il dominio è configurato correttamente)</comment>
# <i>printf "postmaster@wh0rd.org\0postpass\0blah\0" | vchkpw `which id` 3<&0</i>
uid=89(vpopmail) gid=89(vpopmail) groups=0(root)
<comment>(Se il risultato non simile al precedente, i permessi non sono corretti)</comment>
# <i>vadduser vapier@wh0rd.org vappw</i>
</pre>
<p>
Ogni dominio creato con vpopmail possiede anche un account 'postmaster'.
Nel caso specifico è stato specificato che la password per il postmaster è 'postpass'.
Prima che vpopmail possa funzionare correttamente, è necessario riuscire a ricevere
mail via courier e inviare mail via qmail e SMTP.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Courier POP/IMAP</title>
<section>
<body>
<pre caption="Emerge courier-imap">
# <i>emerge net-mail/courier-imap</i>
</pre>
<impo>
Eseguire emerge courier-imap dopo vpopmail. In questo modo verrà compilato anche il modulo
authvchkpw.
</impo>
<impo>
Questa guida si incentra su net-mail/courier-imap-2.1.2-r1 o successivi, ma potrebbe
essere seguita anche per versioni precedenti.
</impo>
<p>
Seguono i passi per la configurazione post-installazione. Questi sono
necessari solo se si vuole una comunicazione crittata via SSL.
Altrimenti si deve rimuovere '-ssl' dagli init script degli esempi che seguono.
</p>
<pre caption="Configurazione per POP3/SSL">
# <i>cd /etc/courier-imap</i>
# <i>nano authdaemonrc</i>
<comment>(Impostare la variabile authmodulelist affinché contenga "authvchkpw")</comment>
# <i>nano pop3d.cnf</i>
<comment>(Editare la sezione [ req_dn ])</comment>
# <i>mkpop3dcert</i>
# <i>rc-update add courier-pop3d-ssl default</i>
# <i>/etc/init.d/courier-pop3d-ssl start</i>
</pre>
<pre caption="Configurazione per IMAP/SSL">
# <i>cd /etc/courier-imap</i>
# <i>nano imapd.cnf</i>
<comment>(Editare la sezione [ req_dn ])</comment>
# <i>mkimapdcert</i>
# <i>rc-update add courier-imapd-ssl default</i>
# <i>/etc/init.d/courier-imapd-ssl start</i>
</pre>
<p>
A questo punto un mail client dovrebbe essere in grado di effettuare un login
sull'host in cui è in esecuzione courier e recuperare le mail per l'host virtuale.
Nel caso preso in esame, si dovrebbe essere in grado di effettuare un login
usando lo username 'vapier@wh0rd.org' e password 'vappw'.
</p>
</body>
</section>
</chapter>
<chapter>
<title>qmail</title>
<section>
<body>
<p>
Segue la messa in funzione dell'SMTP prevenendo la creazione di un sistema
di cui abusare per fare spamming.
</p>
<pre caption="Far partire il servizio qmail SMTP">
# <i>cd /var/qmail/control/</i>
# <i>nano conf-smtpd</i>
<comment>(Scommentare la variabile SMTP-AUTH e impostare QMAIL_SMTP_CHECKPASSWORD in /var/vpopmail/bin/vchkpw)</comment>
# <i>nano servercert.cnf</i>
<comment>(Editare la sezione [ req_dn ])</comment>
# <i>mkservercert</i>
# <i>cd /service</i>
# <i>ln -s /var/qmail/supervise/qmail-smtpd qmail-smtpd</i>
# <i>/etc/init.d/svscan restart</i>
</pre>
<p>
Assumendo che non siano stati modificati i file di controllo di qmail, qmail
accetterà mail per il dominio virtuale wh0rd.org e per gli utenti della
macchina locale. Inoltre, qmail invierà mail per chiunque le spedisca via 127.0.0.1 e
per chiunque sia capace di autenticarsi via vpopmail. Durante la configurazione
di un mail client per l'invio della posta, assicurarsi di selezionare l'opzione
'Server requires authentication'. Nel caso preso in esempio, verrà usato l'utente
'vapier@wh0rd.org' con password 'vappw'. Infine, assicurarsi di
configurare il mail client per usare SSL/TLS per le connessioni SMTP.
qmail non permetterà autenticazioni se la sessione non è crittata.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Horde / IMP Webmail Client</title>
<section>
<body>
<p>
Benché ci siano molti webmail client, si preferisce
<uri link="http://www.horde.org/imp/">IMP Webmail
Client</uri> che è parte dell'Horde framework. La ragione principale risiede
nel fatto che si può usare Horde semplicemente per gestire le mail via Web,
o aggiungere facilmente altri componenti per gestire Rubriche, Calendari, Appuntamenti, ecc.
Se questo non è convincente, si possono leggere ulteriori caratteristiche da
<uri link="http://www.horde.org/">Horde</uri>.
</p>
<p>
Emergere IMP.
</p>
<pre caption="Emerge IMP">
# <i>emerge horde-imp</i>
</pre>
<impo>
Questa guida si incentra su horde-2.2.x e horde-imp-3.2.x.
Le versioni del CVS (ed anche le prossime major release) avranno probabilmente
configurazioni differenti. Da notare anche che horde-2.x non funziona con php-5.x.
</impo>
<p>
Attualmente, Horde non è facile da configurare a meno che non si conosca esattamente cosa fare.
Fortunatamente l'autore di questa guida conosce esattamente cosa fare e questo potrà essere
di aiuto per il lettore.
</p>
<pre caption="Configurazione per Horde">
# <i>cd /var/www/localhost/htdocs/horde/config/</i>
# <i>for f in *.dist ; do mv ${f} ${f/.dist} ; done</i>
# <i>nano horde.php</i>
<comment>(In 'Horde Authentication':)</comment>
$conf['auth']['driver'] = 'imap';
$conf['auth']['params']['dsn'] = '{localhost:993/imap/ssl/novalidate-cert}';
<comment>(In 'Horde Logging':)</comment>
$conf['log']['name'] = '/var/log/apache2/horde.log';
<comment>(In 'Problem Reporting':)</comment>
$conf['problems']['enabled'] = true;
$conf['problems']['email'] = 'webmaster@wh0rd.org';
# <i>nano registry.php</i>
<comment>(In 'Handlers':)</comment>
$this->registry['auth']['login'] = 'imp';
$this->registry['auth']['logout'] = 'imp';
<comment>(In 'Application registry':)
Porre l'elemento 'status' di applications['imp'] da 'inactive' a 'active'</comment>
# <i>touch /var/log/apache2/horde.log</i>
# <i>chown apache:apache /var/log/apache2/horde.log</i>
</pre>
<note>
Si vorrà anche cambiare l'email per l'account 'webmaster'. Se si vuole usare
questo indirizzo, ricordarsi di aggiungere l'utente via vpopmail (o vedere sotto
per qmailadmin).
</note>
<p>
Configurazione di IMP.
</p>
<pre caption="Configurazione per IMP">
# <i>cd /var/www/localhost/htdocs/horde/imp/config/</i>
# <i>for f in *.dist ; do mv ${f} ${f/.dist} ; done</i>
# <i>nano servers.php</i>
<comment>(Editare l'array $servers['imap']:)</comment>
$servers['imap'] = array(
'name' => 'wh0rd.org',
'server' => 'localhost',
'protocol' => 'imap/ssl/novalidate-cert',
'port' => 993,
'folders' => '',
'namespace' => '',
'namespace' => 'INBOX.',
'maildomain' => 'wh0rd.org',
'smtphost' => 'localhost',
'realm' => '',
'preferred' => ''
);
</pre>
<p>
Al termine, far partire apache in modo da poter usare webmail.
</p>
<pre caption="Eseguire apache">
# <i>nano /etc/conf.d/apache2</i>
<comment>(Scommentare APACHE2_OPTS="-D SSL -D PHP4")</comment>
# <i>rc-update add apache2 default</i>
# <i>/etc/init.d/apache2 start</i>
</pre>
<warn>
Si dovrebbe forzare la connessione https per utenti di horde.
Questo è un punto importante a motivo della sicurezza.
</warn>
<p>
Per testare la configurazione di IMP, lanciare il browser e visitare
<uri>http://localhost/horde/</uri> (cambiare localhost con il server su cui si è
configurato IMP). Si dovrebbe essere in grado di vedere la pagina di benvenuto di Horde
con la richiesta di login. Sempre seguendo il nostro esempio, si dovrebbe eseguire
il login con
'vapier@wh0rd.org' e 'vappw' come
username e password.
</p>
<p>
La configurazione di Horge e IMP è terminata. Si dovrebbe, comunque,
tornare indietro attraverso le directory di configurazione e cambiare
quello che si ritiene opportuno.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Pacchetti extra</title>
<section>
<title>qmailadmin</title>
<body>
<p>
Un primo pacchetto che si suggerisce di usare è <uri
link="http://www.inter7.com/qmailadmin.html">qmailadmin</uri>.
E' un interfaccia basata su web per la gestione di domini virtuali.
Si installa con <c>emerge net-mail/qmailadmin</c> e si usa semplicemente
attraverso un browser attraverso l'indirizzo
<uri>http://localhost/cgi-bin/qmailadmin</uri>.
</p>
</body>
</section>
<section>
<title>qmHandle</title>
<body>
<p>
Se si hanno problemi con la queue di qmail e si perde tempo per il debugging,
si può dare un'occhiata a
<uri link="http://qmhandle.sourceforge.net/">qmHandle</uri>.
E' un semplice programma in perl per vedere e gestire le code dei messaggi di qmail.
Anche in questo caso per l'installazione usare <c>emerge net-mail/qmhandle</c>.
</p>
</body>
</section>
<section>
<title>Aggiunte a horde</title>
<body>
<p>
Si raccomanda uno sguardo alle altre applicazioni Horde.
Le applicazioni complementari <uri link="http://www.horde.org/turba/">Turba</uri>, <uri
link="http://www.horde.org/kronolith/">Kronolith</uri>, e <uri
link="http://www.horde.org/nag/">Nag</uri> migliorano l'uso di IMP.
La loro configurazione è simile a quella per IMP, non si dovrebbero quindi trovare
eccessivi problemi. Ricordarsi di editare registry.php nella direcotory config di horde
per inserire la nuova applicazione.
</p>
</body>
</section>
<section>
<title>ucspi-tcp</title>
<body>
<p>
qmail utilizza ucspi-tcp per gestire le connessioni in ingresso.
Se si desidera personalizzare le regole dei filtri, i file di configurazione sono in
<path>/etc/tcprules.d/</path> (vecchie versioni di qmail pongono i file in /etc).
Qui si trovano due file per ogni servizio, il file di configurazione (p.e. tcp.qmail-smtp)
e la versione compilata di questo file usato da ucspi-tcp (p.e. tcp.qmail-smtp.cdb).
Ogni volta si aggiorna il file di configurazione, si dovrà anche provvedere alla ricompilazione
della versione binaria eseguendo
<c>tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp</c>.
Ogni volta che viene creata una connessione da qmail, il file di regole compilate
viene riletto, non è quindi necessario far ripartire il servizio.
</p>
</body>
</section>
<section>
<title>qmail-scanner</title>
<body>
<p>
Se si vuole filtrare il contenuto delle mail che passano per il mail server (contro spam e virus),
si deve usare un programma di queuing differente da quello predefinito.
Un buon programma per far questo è
<uri link="http://qmail-scanner.sourceforge.net/">qmail-scanner</uri>.
Installare con <c>emerge qmail-scanner</c> e editare il file
<path>/etc/tcprules.d/tcp.qmail-smtp</path>.
</p>
<impo>
Il processo di installazione di qmail-scanner prevede la ricerca nel sistema
dei pacchetti da usare che devono essere già presenti.
E' necessario quindi provvedere ad emergere SpamAssassin e/o Clam AntiVirus
prima di emergere qmail-scanner.
</impo>
<pre caption="Modificare il queuer">
# <i>cd /etc/tcprules.d/</i>
# <i>nano tcp.qmail-smtp</i>
<comment>(Aggiungere QMAILQUEUE="/var/qmail/bin/qmail-scanner-queue" alla regola allow )</comment>
# <i>tcprules tcp.qmail-smtp.cdb tcp.qmail-smtp.tmp < tcp.qmail-smtp</i>
</pre>
<p>
La prossima sezione prende in esame come configurare un filtro contro spam e virus.
Si possono personalizzare alcune opzioni editando direttamente
<path>/var/qmail/bin/qmail-scanner-queue.pl</path>.
</p>
</body>
</section>
<section>
<title>SpamAssassin</title>
<body>
<p>
Uno dei filtri antispam Open Source è
<uri link="http://www.spamassassin.org/">SpamAssassin</uri>.
Installare con <c>emerge mail-filter/spamassassin</c>.
Il pacchetto ha sia una versione da linea di comando che una client/server.
Per server che smistano una piccola quantità di mail, si può utilizzare la versione
da linea di comando, mentre per server che gestiscono carichi abbondanti di mail
è bene usare la versione client/server.
</p>
<pre caption="Configurazione per SpamAssassin">
# <i>nano /etc/mail/spamassassin/local.cf</i>
<comment>(Aggiungere queste opzioni minime:)</comment>
required_hits 6
skip_rbl_checks 1
# <i>rc-update add spamd default</i>
# <i>/etc/init.d/spamd start</i>
# <i>nano /var/qmail/bin/qmail-scanner-queue.pl</i>
<comment>(Assicurarsi che la variabile $spamc_binary sia definita come '/usr/bin/spamc'.)</comment>
<comment>(Se fosse definita come '', guardare la nota che segue.)</comment>
</pre>
<impo>
Se non si aveva SpamAssassin nel sistema prima di emergere qmail-scanner,
sarà necessario riemergere qmail-scanner. In questo modo verranno aggiunti
i pacchetti aggiuntivi scoperti nel sistema.
</impo>
<p>
A questo punto, le mail in ingresso dovrebbero essere inviate a qmail-scanner
che eseguirà SpamAssassin.
</p>
</body>
</section>
<section>
<title>Clam AntiVirus</title>
<body>
<p>
Come SpamAssassin, <uri link="http://www.clamav.net/">Clam AntiVirus</uri>
arriva in due versioni. Si daranno indicazioni su come configurare la versione
client/server. Installare con <c>emerge app-antivirus/clamav</c>.
</p>
<pre caption="Configurazione per Clam AntiVirus">
# <i>nano /etc/conf.d/clamd</i>
<comment>(Definire START_CLAMD=yes)</comment>
# <i>nano /etc/clamav.conf</i>
<comment>(Definire cosa si vuole)</comment>
# <i>rc-update add clamd default</i>
# <i>/etc/init.d/clamd start</i>
# <i>nano /var/qmail/bin/qmail-scanner-queue.pl</i>
<comment>(Assicurarsi che la variabile $clamscan_binary sia definita come '/usr/bin/clamscan'.)</comment>
<comment>(Se fosse deinita come '', guardare la nota che segue.)</comment>
# <i>nano /var/qmail/control/conf-common</i>
<comment>(Se ClamAV riporta problemi di memoria provare a cancellare il softlimit)</comment>
</pre>
<impo>
Se non si aveva Clam AntiVirus nel sistema prima di emergere qmail-scanner,
sarà necessario riemergere qmail-scanner. In questo modo verranno aggiunti
i pacchetti aggiuntivi scoperti nel sistema.
</impo>
<p>
A questo punto, le mail in ingresso dovrebero essere inviate a qmail-scanner che
eseguirà Clam AntiVirus.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Note finali</title>
<section>
<body>
<p>
Non ci sono note finali eccetto che se si hanno problemi seguendo questa guida
si dovrebbe contattare l'
<mail link="vapier@gentoo.org">autore</mail> o inviare una segnalazione sul
<uri link="http://bugs.gentoo.org/">Gentoo's Bugtracking Website</uri>.
Se si hanno esperienze interessanti da aggiungere a questa guida, inviarle all'autore
per essere incluse.
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #6: ati-faq.xml --]
[-- Type: text/xml; name="ati-faq.xml", Size: 5180 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link="/doc/it/ati-faq.xml" lang="it">
<title>Gentoo Linux ATi FAQ</title>
<author title="Autore"><mail link="lu_zero@gentoo.org">
Luca Barbato</mail>
</author>
<author title="Editore"><mail link="peesh@gentoo.org">
Jorge Paulo</mail>
</author>
<author title="Editore"><mail link="blubber@gentoo.org">
Tiemo Kieft</mail>
</author>
<author title="Traduttore"><mail link="myzelf@omnidea.it">
Gilberto De Faveri</mail>
</author>
<author title="Traduttore"><mail link="gentoo-dev@gentoo.it">
Enrico Morelli</mail>
</author>
<abstract>Questa FAQ dovrebbe aiutare gli utenti a risolvere i più comuni problemi di installazione
e configurazione relativi a DRI e xfree per le schede ATI.</abstract>
<license/>
<version>1.0.6</version>
<date>9 Novembre 2004</date>
<chapter>
<title>Hardware Supportato</title>
<section>
<title>È supportata la mia scheda ATI?</title>
<body>
<p><uri link="http://www.freedesktop.org/Software/xorg">xorg-x11</uri> supporta quasi ogni scheda ATI,
almeno per quanto riguarda l'accelerazione delle funzioni 2D. Il supporto 3D è offerto sia dal
<uri link="http://dri.sf.net">progetto DRI</uri>, già incluso in xorg-x11, sia dai
driver closed source
<uri link="http://mirror.ati.com/support/drivers/linux/radeon-linux.html">forniti</uri> da ATI.
</p>
<table>
<tr>
<th>GPU</th>
<th>Nome Commerciale</th>
<th>Supportato da</th>
</tr>
<tr>
<ti>rage128</ti>
<ti>Rage128</ti>
<ti>xorg DRI</ti>
</tr>
<tr>
<ti>r100</ti>
<ti>Radeon7xxx, Radeon64</ti>
<ti>xorg DRI</ti>
</tr>
<tr>
<ti>r200,r250,r280</ti>
<ti>Radeon8500, Radeon9000, Radeon9200</ti>
<ti>xorg DRI, ATI DRI</ti>
</tr>
<tr>
<ti>r300, following</ti>
<ti>Radeon 9500 - 9800</ti>
<ti>xorg 2D, ATI DRI</ti>
</tr>
</table>
</body>
</section>
<section>
<title>Ho una scheda All-In-Wonder/Vivo. Sono supportate le caratteristiche multimediali?</title>
<body>
<p>Le caratteristiche multimediali sono per ora supportate dal
<uri link="http://gatos.sf.net">progetto GATOS</uri> e i driver gatos saranno
integrati direttamente in xorg.</p>
</body>
</section>
<section>
<title>Non utilizzo una macchina x86. Cosa posso fare?</title>
<body>
<p>Puoi disporre dello stesso supporto di x11 su piattaforme PPC o alpha, ma non puoi utilizzare
i driver ATI closed source. Questo significa che non potrai sfruttare l'accelerazione 3d del chip r300.
Se hai una di queste schede e vorresti vederla pienamente supportata da x11 contatta
<uri link="http://www.ati.com">ATI</uri> e chiedi loro di rendere disponibili le specifiche.</p>
</body>
</section>
<section>
<title>Ho un portatile. Il mio modello ATI "mobility" è supportato?</title>
<body>
<p>Dovrebbe esserlo, ma potresti avere qualche problema a causa del PCI id OEM che il
chip potrebbe avere. Nella maggior parte dei casi dovrai editare a mano il tuo file di configurazione
o utilizzare <c>xorgconfig</c>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Installazione</title>
<section>
<title>Pacchetti</title>
<body>
<p>
<ul>
<li>L'ebuild di <c>xorg-x11</c> fornisce l'implementazione di X11 . </li>
<li>Per un kernel 2.6 i moduli DRI possono essere inclusi col kernel o
essere forniti dall'ebuild <c>x11-drm</c></li>.
<li>Per un kernel 2.4 si deve usare l'ebuild <c>x11-drm</c> </li>
<li>L'ebuild <c>ati-drivers</c> fornisce i driver ATI per X e i moduli per il kernel, sia per la serie 2.4 che per la 2.6.
</li>
</ul>
</p>
<impo>
Il kernel deve avere il supporto per agpgart. Se si usa un kernel della serie 2.4 o si sta pianificando di usare l'ebuild x11-drm non si dovrebbe includere il modulo DRM .
</impo>
<pre caption="Installazione driver">
<comment>Per installare solo i driver ed i moduli Rage 128 con x11
</comment>
# <i>VIDEO_CARDS="rage128" emerge x11-drm</i>
<comment>Per avere solo il supporto Radeon</comment>
<comment>(r100, r200, r250, but not r300 yet)</comment>
# <i>VIDEO_CARDS="radeon" emerge x11-drm</i>
<comment>Per installare i driver ATI closed source</comment>
<comment>(r200,r250 and r300 only)</comment>
# <i>emerge ati-drivers</i>
<comment>Per installare solo X11 e nessun</comment>
<comment>modulo del kernel</comment>
# <i>emerge xorg-x11</i>
</pre>
</body>
</section>
<section>
<title>Configurazione</title>
<body>
<p>È consigliabile utilizzare <c>xorgcfg</c>, <c>xorgconfig</c> o direttamente
l'opzione di autoconfigurazione di Xorg:
</p>
<pre caption="Configurazione automatica di X">
# <i>X -configure</i>
</pre>
<p>
Per maggiori informazioni su come creare un file di configurazione <c>xorg.conf</c> minimo,
è possibile consultare la
<uri link="http://www.gentoo.org/doc/it/desktop.xml">Desktop Configuration Guide</uri>.</p>
<note> Gli utilizzatori degli ati-drivers possono usare anche <c>fglrxconfig</c>.</note>
<impo>Gli utenti PPC dovrebbero usare l'utility di configurazione <c>Xautoconf</c>,
emergendo l'ebuild <c>Xautoconf</c>.</impo>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #7: hb-portage-branches.xml --]
[-- Type: text/xml; name="hb-portage-branches.xml", Size: 4779 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/handbook/hb-portage-branches.xml,v 1.3 2004/11/15 12:47:47 swift Exp $ -->
<sections>
<version>1.3</version>
<date>5 Aprile 2005</date>
<section>
<title>Usare una branca</title>
<subsection>
<title>La branca stabile</title>
<body>
<p>
La variabile ACCEPT_KEYWORDS definisce la branca usata dal sistema. Il suo valore
predefinito è la branca stabile per l'architettura del sistema in uso, per
esempio <c>x86</c>
</p>
<p>
La raccomandazione è di usare solo la branca stabile, comunque, se non si
è preoccupati eccessivamente per la stabilità e si vuole aiutare Gentoo
sottomettendo rapporti di problemi su
<uri>http://bugs.gentoo.org</uri>, si può proseguire con la lettura.
</p>
</body>
</subsection>
<subsection>
<title>La branca di test</title>
<body>
<p>
Se si vogliono usare i software più recenti si può considerare l'uso
della branca test. Per far usare al Portage la branca di test occorre aggiungere
il simbolo ~ prima dell'architettura del sistema in uso.
</p>
<p>
Per esempio, per selezionare la branca di test per architetture x86, editare
<path>/etc/make.conf</path> e definire:
</p>
<pre caption="Definire la variabile ACCEPT_KEYWORDS">
ACCEPT_KEYWORDS="~x86"
</pre>
<p>
Se si aggiorna il sistema dopo questa modifica, si avranno <e>molti</e> pacchetti
da aggiornare. Una cosa da tenere bene in mente è che se si aggiorna il sistema
in uso alla branca di test non c'è un modo semplice per tornare alla branca
stabile (eccetto l'uso di backup naturalmente).
</p>
</body>
</subsection>
</section>
<section>
<title>Miscelare branche stabili e test</title>
<subsection>
<title>Il file package.keywords</title>
<body>
<p>
Si può chiedere al Portage di permettere la branca di test per particolari
pacchetti ma usare la branca stabile per il resto del sistema.
Per questo, si deve aggiungere la categoria ed il nome del pacchetto che
si vuole usare dalla branca di test al file <path>/etc/portage/package.keywords</path>.
Per esempio, per usare la branca di test di <c>gnumeric</c>:
</p>
<pre caption="Definizione di /etc/portage/package.keywords per gnumeric, linea completa">
app-office/gnumeric ~x86
</pre>
</body>
</subsection>
<subsection>
<title>Sperimentare versioni particolari</title>
<body>
<p>
Se si vuole usare una versione specifica di software dalla branca di test
ma non si vuole che Portage usi la branca di test per le versioni successive,
si può aggiungere la versione nel file
<path>package.keywords</path>.
In questo caso si <e>deve</e> usare l'operatore =. Si può anche inserire
un intervallo di versioni usando gli operatori
<=, <, > o >=.
</p>
<p>
In ogni caso, volendo aggiungere una versione si <e>deve</e> usare un operatore.
Se non si specifica alcuna versione <e>non si possono</e> usare operatori.
</p>
<p>
Il seguente esempio mostra come accettare gnumeric-1.2.13:
</p>
<pre caption="Usare una particolare versione di gnumeric">
=app-office/gnumeric-1.2.13 ~x86
</pre>
</body>
</subsection>
</section>
<section>
<title>Usare pacchetti mascherati</title>
<subsection>
<title>Il file package.unmask</title>
<body>
<p>
Quando un pacchetto è stato mascherato dagli sviluppatori di Gentoo e si
vuole comunque installare il file a dispetto della ragione menzionata
nel file <path>package.mask</path> (ubicato di default in <path>/usr/portage/profiles</path>), aggiungere la stessa <e>identica</e> linea in <path>/etc/portage/package.unmask</path>.
</p>
<p>
Per esempio, se <c>=net-mail/hotwayd-0.8</c> è mascherato, si può comunque
installarlo aggiungendo la stessa identica linea nel file
<path>package.unmask</path>:
</p>
<pre caption="/etc/portage/package.unmask">
=net-mail/hotwayd-0.8
</pre>
</body>
</subsection>
<subsection>
<title>Il file package.mask</title>
<body>
<p>
Se non si vuole che Portage installi un certo pacchetto o una specifica versione
di un pacchetto, lo si può mascherare autonomamente aggiungendo una riga
appropriata in
<path>/etc/portage/package.mask</path>.
</p>
<p>
Per esempio, se non si vuole che Portage installi nuove versioni del kernel dopo
<c>development-sources-2.6.8.1</c>, si aggiunga la seguente linea a
<path>package.mask</path>:
</p>
<pre caption="/etc/portage/package.mask esempio">
>sys-kernel/development-sources-2.6.8.1
</pre>
</body>
</subsection>
</section>
</sections>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #8: hb-working-portage.xml --]
[-- Type: text/xml; name="hb-working-portage.xml", Size: 19100 bytes --]
<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE sections SYSTEM "../../dtd/book.dtd">
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/1.0 -->
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/it/handbook/hb-working-portage.xml,v 1.1 2004/03/24 10:11:46 mush Exp $ -->
<sections>
<version>1.44</version>
<date>8 Febbraio 2005</date>
<section>
<title>Benvenuti in Portage</title>
<body>
<p>
Portage è probabilmente l'innovazione di Gentoo più rilevante nella gestione software. La grande flessibilità e l'enorme quantità di caratteristiche ne fanno
uno dei migliori programmi per la gestione del software disponibili
per Linux.
</p>
<p>
Portage è completamente scritto in <uri link="http://www.python.org">Python</uri> e <uri link="http://www.gnu.org/software/bash">Bash</uri> e perciò
completamente visibile agli utenti essendo entrambi linguaggi di scripting.
</p>
<p>
Molti utenti useranno Portage attraverso il tool <c>emerge</c>. Questo
capitolo non è un duplicato delle informazioni disponibili attraverso
le pagine man di emerge. Per avere la lista completa delle opzioni di
emerge, consultare la pagina man:
</p>
<pre caption="Leggere la pagina man di emerge">
# <i>man emerge</i>
</pre>
</body>
</section>
<section>
<title>L'albero del Portage</title>
<subsection>
<title>Gli ebuild</title>
<body>
<p>
Quando si parla di pacchetti si intendono spesso titoli software che sono
disponibili agli utenti Gentoo attraverso l'albero del Portage.
L'albero del Portage è una collezione di file <e>ebuild</e> che contengono
tutte le informazioni necessarie al Portage per manutenere il software
(installare, ricercare,....). Questi ebuild risiedono di default in <path>/usr/portage</path>.
</p>
<p>
Ogni qualvolta si chiede al Portage di eseguire alcune azioni riguardanti
i titoli software, vengono usati gli ebuild del sistema come base.
Diviene, così, importante aggiornare regolarmente gli ebuild del sistema
in modo tale che Portage sia a conoscenza del nuovo software, degli aggiornamenti, ecc.
</p>
</body>
</subsection>
<subsection>
<title>Aggiornamento dell'albero del Portage</title>
<body>
<p>
L'albero del Portage viene di solito aggiornato con <uri
link="http://rsync.gentoo.org">rsync</uri>, una utility
per il trasferimento incrementale di file.
L'aggiornameto è realmente semplice dato che il comando <c>emerge</c>
fornisce un'interfaccia per rsync:
</p>
<pre caption="Aggiornamento dell'albero del Portage">
# <i>emerge --sync</i>
</pre>
<p>
Se non si riesce ad usare rsync a causa di un firewall si può aggiornare
l'albero del Portage usando lo snapshot che viene generato giornalmente.
Il tool <c>emerge-webrsync</c> scarica ed installa automaticamente l'ultimo
snapshot dai sistemi Gentoo.
</p>
<pre caption="Eseguire emerge-webrsync">
# <i>emerge-webrsync</i>
</pre>
</body>
</subsection>
</section>
<section>
<title>Manutenzione del software</title>
<subsection>
<title>Ricerca del software</title>
<body>
<p>
La ricerca dei titoli software attraverso l'albero del Portage si esegue
utilizzando la funzione di ricerca di <c>emerge</c>. Di default
<c>emerge --search</c> restituisce i nomi dei pacchetti i cui titoli
corrispondono (per intero o parzialmente) a quelli forniti per la ricerca.
</p>
<p>
Per esempio, dovendo cercare tutti i pacchetti che hanno "pdf" nel
loro nome:
</p>
<pre caption="Cercare i pacchetti che contengono pdf nel nome">
$ <i>emerge --search pdf</i>
</pre>
<p>
Se si vuole cercare attraverso la descrizione si può usare l'opzione
<c>--searchdesc</c> ( o <c>-S</c>):
</p>
<pre caption="Cercare i pacchetti che contengono pdf nella descrizione">
$ <i>emerge --searchdesc pdf</i>
</pre>
<p>
Da uno sguardo all'output si nota che vengono fornite diverse informazioni.
I campi sono chiaramente identificati così che non saranno esaminati:
</p>
<pre caption="Esempio dell'output di 'emerge --search'">
* net-print/cups-pdf
Latest version available: 1.5.2
Latest version installed: [ Not Installed ]
Size of downloaded files: 15 kB
Homepage: http://cip.physik.uni-wuerzburg.de/~vrbehr/cups-pdf/
Description: Provides a virtual printer for CUPS to produce PDF files.
License: GPL-2
</pre>
</body>
</subsection>
<subsection>
<title>Installazione del software</title>
<body>
<p>
Una volta trovato il titolo del software che interessa, lo si può facilmente
installare con <c>emerge</c> facendolo seguire dal nome del pacchetto.
Per esempio, per installare <c>gnumeric</c>:
</p>
<pre caption="Installare gnumeric">
# <i>emerge gnumeric</i>
</pre>
<p>
Dato che molte applicazioni dipendono da altre ogni tentativo di installare
certi pacchetti software potrebbe portare all'installazione di alcuni
pacchetti aggiuntivi. Se si vuol sapere cosa verrà installato dal
Portage quando viene richiesta un'installazione, si deve aggiungere l'opzione
<c>--pretend</c>. Per esempio:
</p>
<pre caption="Fingere di installare gnumeric">
# <i>emerge --pretend gnumeric</i>
</pre>
<p>
Quando si chiede al Portage di installare un pacchetto, verrà scaricato il
codice sorgente necessario da internet e memorizzato di default in
<path>/usr/portage/distfiles</path>. Il pacchetti verrà quindi scompresso, compilato e installato. Se si vuole che Portage scarichi solo i sorgenti senza
installarli, si aggiunga al comando <c>emerge</c> l'opzione <c>--fetchonly</c>:
</p>
<pre caption="Scaricare il codice sorgente di gnumeric">
# <i>emerge --fetchonly gnumeric</i>
</pre>
</body>
</subsection>
<subsection>
<title>Rimozione del software</title>
<body>
<p>
Se si vuole rimuovere un pacchetto dal sistema, usare <c>emerge --unmerge</c>.
Questo comando rimuoverà tutti i file installati dal pacchetto
<e>eccetto</e> i file di configurazione che sono stati alterati
dopo l'installazione. In questo modo si permette di
continuare a lavorare con il pacchetto nel caso si decidesse di installarlo
nuovamente.
</p>
<p>
<brite>Attenzione</brite>: Portage <e>non</e> controllerà se il
pacchetto che si vuole rimuovere sia richiesto da un altro pacchetto.
Verrà solo emesso un avviso del fatto che la rimozione di pacchetti importanti
potrebbe danneggiare il sistema.
</p>
<pre caption="Rimozione di gnumeric">
# <i>emerge --unmerge gnumeric</i>
</pre>
<p>
Quando si rimuove un pacchetto dal sistema, le sue dipendenze saranno
lasciate. Per far trovare al Portage tutte le dipendenze che potrebbero
essere rimosse, usare la funzionalità <c>--depclean</c> di <c>emerge</c>.
Se ne parlerà in seguito.
</p>
</body>
</subsection>
<subsection>
<title>Aggiornare il software</title>
<body>
<p>
Per mantenere il sistema in perfetta forma (e non solo con gli ultimi
aggiornamenti sulla sicurezza) si dovrà mantenere aggiornato il sistema
regolarmente. Dato che Portage controlla gli ebuild dell'albero del Portage
si dovrà prima aggiornare l'albero. Quindi, si potrà aggiornare il sistema
con <c>emerge --update world</c>:
</p>
<pre caption="Aggiornare il sistema">
# <i>emerge --update world</i>
</pre>
<p>
Portage cercherà quindi le nuove versioni delle applicazioni installate.
Verranno comunque verificate solo le versioni per le applicazioni che
si sono esplicitamente installate e non le dipendenze.
Se si vuole aggiornare ogni singolo pacchetto del sistema, occorre
aggiungere l'argomento <c>--deep</c>:
</p>
<pre caption="Aggiornare l'intero sistema">
# <i>emerge --update --deep world</i>
</pre>
<p>
Se è stato alterato qualche <uri link="?part=2&chap=2">USE flag</uri>
si può aggiungere l'opzione <c>--newuse</c>. Portage verificherà
se la modifica richiede l'installazione di nuovi pacchetti o la ricompilazione
di quelli esistenti:
</p>
<pre caption="Eseguire un aggiornamento completo">
# <i>emerge --update --deep --newuse world</i>
</pre>
</body>
</subsection>
<subsection>
<title>Pseudo pacchetti</title>
<body>
<p>
Alcuni pacchetti presenti nell'albero del Portage non hanno un contenuto reale
ma sono usati per installare una collezione di pacchetti. Per esempio,
il pacchetto <c>kde</c> installa un ambiente KDE sul sistema ricercando tra
i vari pacchetti legati al KDE come dipendenze.
</p>
<p>
La rimozione di un tale pacchetto dal sistema usando <c>emerge --unmerge</c>,
non avrà successo dato che le numerose dipendenze rimarranno sul sistema.
</p>
<p>
Portage ha anche la funzionalità di rimozione delle dipendenze orfane, ma dato che
la disponibilità del software è dinamicamente dipendente, occorre prima
aggiornare completamente l'intero sistema, includendo, se ci sono state, le
modifiche alle flag USE. Quindi sarà possibile eseguire <c>emerge --depclean</c>
per rimuovere le dipendenze orfane. Fatto ciò, ci sarà bisogno di
ricompilare le applicazioni che erano dinamicamente linkate al software
rimosso ma non più richiesto.
</p>
<p>
Tutto ciò può essere fatto con un seguenti tre comandi:
</p>
<pre caption="Rimozione delle dipendenze orfane">
# <i>emerge --update --deep --newuse world</i>
# <i>emerge --depclean</i>
# <i>revdep-rebuild</i>
</pre>
<p>
<c>revdep-rebuild</c> viene provveduto col pacchetto <c>gentoolkit</c>, che deve
essere quindi emerso prima:
</p>
<pre caption="Installazione del pacchetto gentoolkit">
# <i>emerge gentoolkit</i>
</pre>
</body>
</subsection>
</section>
<section>
<title>Errori durante l'uso del Portage</title>
<subsection>
<title>Slot, virtualità, branche, architetture e profili</title>
<body>
<p>
Portage è estremamente potente e supporta molte
caratteristiche che altri gestori di software omettono. Si vedranno ora
altri aspetti del Portage senza andare troppo nei dettagli.
</p>
<p>
Portage permette la coesistenza di differenti versioni dello stesso pacchetto.
A differenza di altre distribuzioni che tendono a chiamare i propri pacchetti
con le versioni (come <c>freetype</c> e <c>freetype2</c>), Portage usa una
tecnica chiamata <e>SLOT</e>. Un ebuild dichiara un certo SLOT per le proprie
versioni. Ebuild con SLOT differenti possono coesistere sullo stesso sistema.
Per esempio, il pacchetto <c>freetype</c> ha un ebuild con <c>SLOT="1"</c>
e <c>SLOT="2"</c>.
</p>
<p>
Ci sono anche pacchetti che provvedono la stessa funzionalità ma
con un'implementazione diversa. Per esempio, <c>metalogd</c>, <c>sysklogd</c>
e <c>syslog-ng</c>, tutti gestori di eventi di sistema. Applicazioni che fanno
assegnamento sulla disponibilità di un gestore di eventi di sistema, non
possono dipendere da uno in particolare. Per esempio, <c>metalogd</c>, come altri
sistemi di gestione di eventi, sono tutti un'ottima scelta. Portage permette
l'uso di <e>virtualità</e>: ogni sistema di gestione degli eventi provvede
un <c>virtual/syslog</c> in modo tale che le applicazioni possano dipendere
da tale <c>virtual/syslog</c>.
</p>
<p>
Il software all'interno dell'albero del Portage, può risiedere in differenti
branche. Di default il sistema accetta solo pacchetti che Gentoo giudica
stabili. Molti nuovi software una volta raccomandati, vengono aggiunti
ad una branca di test, il che significa che sarà necessario procedere
ad ulteriori verifiche prima di marcarli come stabili. Anche se gli ebuild
per tali software sono presenti nell'albero del Portage, non vengono aggiornati
prima di raggiungere la branca stabile.
</p>
<p>
Alcuni software sono disponibili solo per alcune architetture. Oppure
il software non gira su altre architetture o ha necessità di essere
ulteriormente testato o gli sviluppatori che raccomandano il software
non sono in grado di verificare se il pacchetto gira su differenti architetture.
</p>
<p>
Ogni installazione di Gentoo aderisce ad un certo <c>profilo</c> che contiene
tra le altre informazioni, la lista dei pacchetti che sono richiesti
affinché un sistema funzioni normalmente.
</p>
</body>
</subsection>
<subsection id="blocked">
<title>Pacchetti bloccati</title>
<body>
<pre caption="Portage avverte circa i pacchetti bloccati (con --pretend)">
[blocks B ] gnome-base/bonobo-activation (from pkg gnome-base/libbonobo-2.4.0)
</pre>
<pre caption="Portage avverte circa i pacchetti bloccati (senza --pretend)">
!!! Error: the gnome-base/bonobo-activation package conflicts with another package.
!!! both can't be installed on the same system together.
!!! Please use 'emerge --pretend' to determine blockers.
</pre>
<p>
Gli ebuild contengono specifici campi che informano il Portage sulle
dipendenze. Ci sono due possibili dipendenze: dipendenze in fase di compilazione dichiarate in <c>DEPEND</c> e dipendenze per l'esecuzione dichiarate in <c>RDEPEND</c>.
Quando una di queste dipendenze marca un pacchetto o un virtuale come
<e>non</e> compatibile, questo viene bloccato.
</p>
<p>
Per correggere il blocco, si può scegliere tra il non installare il pacchetto
o rimuovere prima il pacchetto che causa il conflitto. Nel precedente
esempio si può scegliere tra il non installare <c>libbonobo</c> o rimuovere
prima <c>bonobo-activation</c>.
</p>
</body>
</subsection>
<subsection id="masked">
<title>Pacchetti mascherati</title>
<body>
<pre caption="Portage avverte circa i pacchetti mascherati">
!!! all ebuilds that could satisfy "bootsplash" have been masked.
</pre>
<pre caption="Portage avverte circa i pacchetti mascherati - la ragione">
!!! possible candidates are:
- gnome-base/gnome-2.8.0_pre1 (masked by: <i>~x86 keyword</i>)
- lm-sensors/lm-sensors-2.8.7 (masked by: <i>-sparc keyword</i>)
- sys-libs/glibc-2.3.4.20040808 (masked by: <i>-* keyword</i>)
- dev-util/cvsd-1.0.2 (masked by: <i>missing keyword</i>)
- media-video/ati-gatos-4.3.0 (masked by: <i>package.mask</i>)
- sys-libs/glibc-2.3.2-r11 (masked by: <i>profile</i>)
</pre>
<p>
Quando si desidera installare un pacchetto che non è disponibile per il
nostro sistema, si riceverà un errore di pacchetto mascherato.
Si dovrà quindi installare un'applicazione differente disponibile per
il nostro sistema oppure aspettare finché il pacchetto divenga
disponibile. C'è sempre una ragione perché un pacchetto viene mascherato:
</p>
<ul>
<li>
<b>~arch keyword</b> significa che l'applicazione non è stata sufficientemente testata per essere inserita nella branca stabile.
Aspettare alcuni giorni o alcune settimane e provare nuovamente.
</li>
<li>
<b>-arch keyword</b> o <b>-* keyword</b> significa che l'applicazione non funziona sulla nostra architettura. Se si crede che il pacchetto giri, aprire un
bug sul <uri link="http://bugs.gentoo.org">bugzilla</uri> di Gentoo.
</li>
<li>
<b>missing keyword</b> significa che l'applicazione non è ancora stata testata sulla nostra architettura.
Chiedere al gruppo che si occupa del porting per l'architettura di
testare il pacchetto o testarlo per loro e riportare i risultati sul
<uri link="http://bugs.gentoo.org">bugzilla</uri> di Gentoo.
</li>
<li>
<b>package.mask</b> significa che il pacchetto è corrotto, instabile o difettoso ed è stato deliberatamente marcato come non-usare.
</li>
<li>
<b>profile</b> significa che il pacchetto non è stato trovato appropriatamente nel vostro profilo.
Le applicazioni potrebbero danneggiare il sistema se installate o sono solo
non compatibili col profilo in uso.
</li>
</ul>
</body>
</subsection>
<subsection id="missingdependencies">
<title>Dipendenze omesse</title>
<body>
<pre caption="Portage avverte circa le dipendenze omesse">
emerge: there are no ebuilds to satisfy ">=sys-devel/gcc-3.4.2-r4".
!!! Problem with ebuild sys-devel/gcc-3.4.2-r4
!!! Possibly a DEPEND/*DEPEND problem.
</pre>
<p>
L'applicazione che si sta provando ad installare dipende da un altro
pacchetto che non è disponibile per il sistema. Controllare
su <uri
link="http://bugs.gentoo.org">bugzilla</uri> se la cosa è segnalata
altrimenti la si può riportare. A meno che non si stia mescolando
le branche, questo non dovrebbe accadere ed è perciò un bug.
</p>
</body>
</subsection>
<subsection id="ambiguousebuild">
<title>Nomi di ebuild ambigui</title>
<body>
<pre caption="Portage avverte circa l'ambiguità di nomi di ebuild">
!!! The short ebuild name "aterm" is ambiguous. Please specify
!!! one of the following fully-qualified ebuild names instead:
dev-libs/aterm
x11-terms/aterm
</pre>
<p>
L'applicazione che si vuole installare ha un nome che corrisponde con un altro
pacchetto. Occorre specificare la categoria. Portage informa sulle scelte
possibili.
</p>
</body>
</subsection>
<subsection id="circulardependencies">
<title>Dipendenze circolari</title>
<body>
<pre caption="Portage avverte circa le dipendenze circolari">
!!! Error: circular dependencies:
ebuild / net-print/cups-1.1.15-r2 depends on ebuild / app-text/ghostscript-7.05.3-r1
ebuild / app-text/ghostscript-7.05.3-r1 depends on ebuild / net-print/cups-1.1.15-r2
</pre>
<p>
Due (o più) pacchetti che si vuole installare dipendono l'uno dall'altro e non
possono perciò essere installati. Questo è probabilmente un bug del Portage.
Provare ad eseguire un rsync e provare nuovamente. Si può anche controllare
su <uri link="http://bugs.gentoo.org">bugzilla</uri> se è un caso conosciuto
oppure no, nel qual caso lo si può riportare.
</p>
</body>
</subsection>
<subsection id="fetchfailed">
<title>Scaricamento non riuscito</title>
<body>
<pre caption="Portage avverte circa un download non riuscito">
!!! Fetch failed for sys-libs/ncurses-5.4-r5, continuing...
<comment>(...)</comment>
!!! Some fetch errors were encountered. Please see above for details.
</pre>
<p>
Portage non è riuscito a scaricare i sorgenti per una data applicazione
e proverà a proseguire con l'installazione delle altre applicazioni
se ci sono. Questo problema può essere causato da un mirror che non è
stato sincronizzato appropriatamente o perché l'ebuild punta ad una locazione
incorretta. Il server dove risiedono i sorgenti potrebbe anche non essere
disponibile per qualche ragione.
</p>
<p>
Riprovare dopo un'ora e vedere se la situazione persiste.
</p>
</body>
</subsection>
<subsection id="profileprotect">
<title>Protezione dei profili di sistema</title>
<body>
<pre caption="Portage avverte circa la protezione dei profili">
!!! Trying to unmerge package(s) in system profile. 'sys-apps/portage'
!!! This could be damaging to your system.
</pre>
<p>
Si è richiesto la rimozione di un pacchetto che fa parte del core del
sistema. Tale pacchetto è listato nel vostro profile come richiesto e
dovrebbe perciò non essere rimosso dal sistema.
</p>
</body>
</subsection>
</section>
</sections>
^ permalink raw reply [flat|nested] 39+ messages in thread
* [gentoo-docs-it] Aggiornamenti
@ 2005-03-29 16:00 Francesco Grieco
2005-04-03 22:28 ` Stefano Rossi
0 siblings, 1 reply; 39+ messages in thread
From: Francesco Grieco @ 2005-03-29 16:00 UTC (permalink / raw
To: gentoo-docs-it
[-- Attachment #1: Type: text/plain, Size: 127 bytes --]
Doc: cron-guide.xml
Ver: 1.3
Rev: 1.4
Doc: power-management-guide.xml
Ver: 1.20
Rev: 1.10
Saluti a tutti
Francesco Grieco
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: cron-guide.xml --]
[-- Type: text/xml; charset="us-ascii"; name="cron-guide.xml", Size: 19802 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/cron-guide.xml,v 1.4 2005/03/18 09:48:15 swift Exp $ -->
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<guide link="/doc/it/cron-guide.xml" lang="it">
<title>Guida a Cron per Gentoo Linux</title>
<author title="Autore">
<mail link="airuike@gmail.com">Eric Brown</mail>
</author>
<author title="Editor">
<mail link="neysx@gentoo.org">Xavier Neys</mail>
</author>
<author title="Traduzione">
<mail link="frgrieco@aliceposta.it">Francesco Grieco</mail>
</author>
<abstract>
Questa guida tratta la configurazione e l'uso di cron.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<license/>
<version>1.3</version>
<date>18 marzo 2005</date>
<chapter>
<title>Le basi di Cron</title>
<section>
<title>Cosa fa cron</title>
<body>
<p>
Cron è un demone che esegue operazioni pianificate gestite tramite il comando
<c>crontab</c>. Porta a termine questo compito attivandosi ogni minuto e controllando
la presenza di operazioni da eseguire (cron-job) in tutti i crontab degli utenti.
</p>
<note>
<e>crontab</e> è sia il nome di una lista di cron-job (operazioni da eseguire)
che il nome del comando necessario alla configurazione di tale lista.
</note>
</body>
</section>
<section>
<title>Cron</title>
<body>
<p>
In Portage ci sono almeno tre implementazioni differenti di cron tra cui scegliere.
Tutte presentano una interfaccia simile, vale a dire l'uso di <c>crontab</c> o
di un comando simile. E' presente, inoltre, una utility strettamente collegata a
cron, Anacron; funziona in simbiosi con cron su sistemi che non sono in continua esecuzione.
</p>
<p>
Prima di analizzare il funzionamento di cron, è necessario scegliere quale
variante tra quelle disponibili utilizzare. Segue, quindi, una breve
descrizione per ognuna.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Quale implementazione di cron utilizzare</title>
<section>
<title>Vixie cron</title>
<body>
<p>
Vixie cron è una completa implementazione di cron basata su SysV cron.
Ogni utente ha un proprio crontab ed è autorizzato a specificare
proprie variabili d'ambiente al suo interno. Diversamente da altre
varianti di cron, supporta SELinux e PAM. Supporta, inoltre, meno architetture rispetto
a Dcron, ma più di Fcron.
</p>
<p>
Caratteristiche di <c>sys-process/vixie-cron</c>:
</p>
<ul>
<li>
Supporto per SELinux
</li>
<li>
Supporto per PAM <path>/etc/security/limits.conf</path>
</li>
<li>
Configurazione di variabili d'ambiente in crontab (PATH, SHELL, HOME, ecc.)
</li>
<li>
Ogni utente può avere il proprio crontab; l'accesso è controllato da cron.allow
e cron.deny
</li>
</ul>
</body>
</section>
<section>
<title>Il Cron di Dillon</title>
<body>
<p>
Dcron aspira ad essere la più semplice, elegante e sicura implementazione di cron.
Non permette la configurazione delle variabili d'ambiente in crontab e tutti i
cron-job sono eseguiti da <path>/bin/sh</path>. Come Vixie cron, ogni utente ha il proprio
crontab.
</p>
<p>
Caratteristiche di <c>sys-process/dcron</c>:
</p>
<ul>
<li>
Veloce, semplice e privo di funzioni inutili
</li>
<li>
L'accesso a <c>crontab</c> è limitato agli utenti del gruppo cron.
</li>
</ul>
</body>
</section>
<section>
<title>Fcron</title>
<body>
<p>
Fcron mira a rimpiazzare Vixie cron e Anacron. E' progettato per funzionare su
sistemi che non sono continuamente in esecuzione e si presenta con caratteristiche
extra. Possiede un job startup constraint, un job serialization control, l'abilità
di assegnare valori di nice (priorità) alle operazioni pianificate e l'abilità di pianificare
operazioni da eseguire all'avvio del sistema. Per maggiori informazioni è possibile
consultare la sua <uri link="http://fcron.free.fr/">pagina ufficiale</uri>.
</p>
<p>
Caratteristiche di <c>sys-process/fcron</c>:
</p>
<ul>
<li>
Progettato per funzionare su sistemi in esecuzione non continua; in pratica
può eseguire operazioni dopo un riavvio nel caso la normale esecuzione pianificata
fosse stata "mancata".
</li>
<li>
Configurazione di variabili d'ambiente e molte altre opzioni in crontab.
</li>
<li>
Ogni utente può avere il proprio crontab, l'accesso è controllato da cron.allow e
da cron.deny
</li>
<li>
Sintassi avanzata di crontab per il supporto di molte nuove caratteristiche
</li>
</ul>
</body>
</section>
<section>
<title>Anacron</title>
<body>
<p>
Anacron non è un demone cron, ma qualcosa che di solito funziona in simbiosi con esso.
Esegue comandi a intervalli specificati in giorni e considera il sistema sul quale
è eseguito in non continua esecuzione; eseguirà le operazioni pianificate "mancate" (se
ad esempio il sistema è spento nel momento in cui un'operazione doveva essere eseguita).
Anacron dipende dal demone cron.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Uso di cron</title>
<section>
<title>Installazione</title>
<body>
<p>
Scelta l'implementazione di cron ritenuta più adatta alle proprie esigenze,
la si installi con il comando emerge.
</p>
<pre caption="Installazione di cron">
# <i>emerge dcron</i>
# <i>rc-update add dcron default</i>
# <i>/etc/init.d/dcron start</i>
</pre>
<p>
A meno che non si abbia installato Fcron, si consiglia l'utilizzo anche di Anacron.
</p>
<pre caption="Installazione di anacron">
# <i>emerge anacron</i>
# <i>rc-update add anacron default</i>
# <i>/etc/init.d/anacron start</i>
</pre>
</body>
</section>
<section>
<title>Crontab di Sistema</title>
<body>
<p>
Terminata l'installazione, verrà chiesta l'esecuzione dell'istruzione
<c>crontab /etc/crontab</c>. Il file <path>/etc/crontab</path> è il proprio
<e>crontab di sistema</e>. Una installazione default di Gentoo utilizza questo file
per eseguire gli script presenti in <path>/etc/cron.{daily,hourly,weekly,monthly}</path>.
Si noti che Vixie cron gestisce le operazioni in <path>/etc/crontab</path> in maniera
automatica.
Gli utilizzatori di Dcron e Fcron dovranno eseguire <c>crontab /etc/crontab</c> ogni
qual volta vengano apportati dei cambiamenti a <path>/etc/crontab</path>.
</p>
<p>
Le operazioni pianificate nel crontab di sistema non saranno mostrate nella
lista dei cron-job visualizzata tramite <c>crontab -l</c>.
</p>
<p>
Naturalmente è anche possibile non utilizzare nessun crontab di sistema. Se si è scelto
uno fra Dcron e Fcron, <e>non</e> si esegua <c>crontab /etc/crontab</c>.
Se si è scelto Vixie cron, si dovrebbero commentare (per escludere) tutte le linee presenti in
<path>/etc/crontab</path>.
</p>
<pre caption="Commento (per l'esclusione) di tutte le linee presenti in /etc/crontab">
# <i>sed -i -e "s/^/#/" /etc/crontab</i>
</pre>
</body>
</section>
<section>
<title>Dare l'accesso a cron ad altri utenti</title>
<body>
<p>
Se si vuole che anche altri utenti al di fuori di root abbiano accesso al demone cron,
la lettura di questa sezione è obbigata; in caso contrario la si può tranquillamente saltare
seguendo invece la sezione <uri link="#scheduling">Organizzazione dei cron-job</uri>.
</p>
<note>
Dando ad un altro utente l'accesso a crontab non gli si permetterà di eseguire cron-job
come root. Se si vuole rendere un utente in grado di editare il crontab di root,
si deve utilizzare <c>sudo</c>.
</note>
<p>
Se si vuole permettere ad un utente di utilizzare crontab, indipendentemente dall'implementazione
di cron utilizzata, questo dovrà essere prima aggiunto al gruppo cron. Ad esempio, se si
vuole aggiungere l'utente <e>wepy</e> al gruppo cron, si dovrà digitare:
</p>
<pre caption="Aggiunta di un utente al gruppo cron">
gpasswd -a wepy cron
</pre>
<p>
E' tutto quello che bisogna fare per dare ad un utente l'accesso a crontab,
se si sta utilizzando <b>Dcron</b>. Gli utilizzatori di Dcron possono passare alla
lettura della sezione successiva <uri link="#scheduling">Organizazzione dei cron-job</uri>,
tutti gli altri dovranno continuare nella normale lettura.
</p>
<p>
Nel caso di utilizzo di <b>Fcron</b>, sarà necessario editare
<path>/etc/fcron/fcron.deny</path> e <path>/etc/fcron/fcron.allow</path>.
Il metodo più sicuro è quello per prima cosa di negare l'accesso a tutti in
<path>/etc/fcron/fcron.deny</path> e in seguito permettere l'accesso
in maniera esplicita all'utente in <path>/etc/fcron/fcron.allow</path>.
</p>
<impo>
<b>Se nè <path>/etc/fcron/fcron.allow</path> nè <path>/etc/fcron/fcron.deny</path>
esistono, tutti gli utenti del gruppo cron saranno in grado di utilizzare crontab.</b>
Per fcron, il file di configurazione <path>fcron.allow</path> di default, permette a <b>tutti gli utenti</b> del gruppo cron l'accesso a fcrontab.
</impo>
<pre caption="Permessi in fcron.deny">
all
</pre>
<p>Ora, se per ipotesi avessimo un utente <e>wepy</e> e volessimo che fosse in grado
di gestire le proprie operazioni pianificate, andrebbe aggiunto a <path>/etc/fcron/fcron.allow</path>
in questo modo:
</p>
<pre caption="Permessi in fcron.allow">
wepy
</pre>
<p>
Se si è scelto <b>Vixie cron</b>, sarà solamente necessario editare
<path>/etc/cron.allow</path>.
</p>
<impo>
E' importante notare che se esiste solamente <path>/etc/cron.allow</path>, allora
solamente gli utenti del gruppo cron elencati al suo interno avranno accesso;
se esiste un <path>/etc/cron.deny</path> anche vuoto, allora tutti gli utenti
del gruppo cron saranno autorizzati!
<b>Non si lasci per questo vuoto <path>/etc/cron.deny</path> se non si ha nessun
<path>/etc/cron.allow</path>.</b>
</impo>
<p>
Per esempio, se si vuole permettere l'accesso all'utente <e>wepy</e>, questo
andrebbe aggiunto a <path>/etc/cron.allow</path> come mostrato:
</p>
<pre caption="Permessi in /etc/cron.allow">
wepy
</pre>
</body>
</section>
<section id="scheduling">
<title>Organizzazione dei cron-job</title>
<body>
<p>
Il processo di configurazione dei crontab è differente a seconda dell'implementazione
di cron che si è scelta. Tutte, però, supportano gli stessi set di comandi di base:
aggiunta e sostituzione dei crontab, modifica dei crontab, cancellazione dei crontab
e visualizzazione dei cron-job in crontab. La lista seguente mostra come eseguire questi
comandi per ogni implementazione.
</p>
<table>
<tr>
<th>Versione</th>
<th>Comando di edit </th>
<th>Comando di rimozione </th>
<th>Comando di aggiunta </th>
<th>Comando di visualizzazione </th>
</tr>
<tr>
<ti>dcron</ti>
<ti><c>crontab -e</c></ti>
<ti><c>crontab -d</c></ti>
<ti><c>crontab <e>file</e></c></ti>
<ti><c>crontab -l</c></ti>
</tr>
<tr>
<ti>fcron</ti>
<ti><c>fcrontab -e</c></ti>
<ti><c>fcrontab -r</c></ti>
<ti><c>fcrontab <e>file</e></c></ti>
<ti><c>fcrontab -l</c></ti>
</tr>
<tr>
<ti>vixie-cron</ti>
<ti><c>crontab -e</c></ti>
<ti><c>crontab -r</c></ti>
<ti><c>crontab <e>file</e></c></ti>
<ti><c>crontab -l</c></ti>
</tr>
</table>
<note>
Fcron crea un link simbolico a <c>crontab</c>.
</note>
<p>
Prima di utilizzare uno qualsiasi di questi comandi, è necessario sapere come è fatto
crontab. Ogni linea in un crontab necessita di cinque campi nell'ordine seguente:
i minuti (0-59), le ore (0-23), i giorni del mese (1-31), i mesi (1-12), e i giorni
della settimana (0-7, Lunedì è 1, Domenica è 0 e 7). I giorni della settimana e i
mesi possono essere inseriti anche tramite delle abbreviazioni inglesi di tre
lettere come mon, tue, jan, feb, ecc. Ogni campo può anche contenere un campo
di valori (ad esempio 1-5 per lun-ven), una lista di valori separati da virgole
(ad esempio 1,2,3 o mon,tue,wed) oppure un campo di valori a <e>salti</e>
(ad esempio 1-6/2 indica 1,3,5).
</p>
<p>
Tutto questo inizialmente può sembrare confusionario ma, con pochi esempi,
risulterà molto semplice.
</p>
<pre caption="Esempi">
<comment># Esegue /bin/false ogni minuto</comment>
* * * * * /bin/false
<comment># Esegue /bin/false all'1:35 di mon,tue,wed (lun,mar,mer) e il 4 di ogni mese</comment>
35 1 4 * mon-wed /bin/false
<comment># Esegue /bin/true alle 22:25 del 2 Marzo</comment>
25 22 2 3 * /bin/true
<comment># Esegue /bin/false alle 2:00 ogni Lunedì Mercoledì e Venerdì</comment>
0 2 * * 1-5/2 /bin/false
</pre>
<note>
Si noti come si debba specificare giorni della settimana e giorni del mese prima di
combinarli. Se si ha * per uno solo di questi, l'altro campo ha precedenza, mentre
* per entrambi ha il significato di tutti i giorni.
</note>
<p>
Per provare tutto quello che si è imparato, saranno illustrati i passaggi per
inserire alcuni cron-job. Prima di tutto si crei un file chiamato <path>crons.cron</path>
e lo si editi come di seguito riportato:
</p>
<pre caption="Modifica di crons.cron">
$ <i>nano crons.cron</i>
<comment>#Min Ore Giorni Mesi Giorno della settimana</comment>
10 3 1 1 * /bin/echo "i don't really like cron"
30 16 * 1,2 * /bin/echo "i like cron a little"
* * * 1-12/2 * /bin/echo "i really like cron"
</pre>
<p>
Ora si può aggiungere questo crontab al sistema con un "comando di aggiunta", come mostrato
di seguito.
</p>
<pre caption="Un nuovo crontab">
# <i>crontab crons.cron</i>
</pre>
<note>
Non seguirà nessun output a questo comando a meno che non si utilizzi la redirezione dell'output.
</note>
<p>
Per verificare le operazioni pianificate, si userà l'appropriato <e>comando di
visualizzazione</e> dalla tabella precedentemente mostrata.
</p>
<pre caption="Visualizzazione dei cron-job">
# <i>crontab -l</i>
</pre>
<p>
Dovrebbe apparire una lista con il contenuto di <path>crons.cron</path>, in caso
contrario si potrebbe avere utilizzato un comando errato per l'aggiunta del crontab.
</p>
<p>
Questo crontab dovrebbe mostrare sullo schermo un "i really like cron" ogni minuto di ogni ora
di ogni giorno di ogni mese. Inoltre il crontab dovrebbe stampare un "i like cron a little"
alle 16.30 per ogni giorno di Gennaio e di Febbraio. Per finire si dovrebbe
anche vedere un "i don't really like cron" alle 3:10 del primo giorno di Gennaio.
</p>
<p>
Se si sta utilizzando Anacron, si dovrebbe continuare la lettura di questa
sezione. In caso contrario, si passi alla prossima <uri link="#editing">modifica dei crontab</uri>.
</p>
<p>
Gli utilizzatori di Anacron dovranno editare il file <path>/etc/anacrontab</path>.
Questo file ha quattro campi: il numero di giorni tra ogni esecuzione, il ritardo in
minuti dopo il quale eseguire l'operazione, il nome dell'operazione pianificata e il comando da eseguire.
</p>
<p>
Per esempio, per fare eseguire <c>echo "i like anacron"</c> ogni 5 giorni, 10
minuti dopo l'avvio di Anacron:
</p>
<pre caption="/etc/anacrontab">
5 10 wasting-time /bin/echo "i like anacron"
</pre>
<p>
Anacron termina dopo l'esecuzione di tutte le operazioni, così se si volesse che
controlli queste operazioni ogni giorno, sarà necessario utilizzare cron.
Le istruzioni alla fine della prossima sezione mostreranno come farlo.
</p>
</body>
</section>
<section id="editing">
<title>Modifica dei crontab</title>
<body>
<p>
Ovviamente, non si vuole che il proprio sistema ripeta quanto vi piaccia cron ("i really
like cron") ogni minuto. Per questo, ora si passerà alla rimozione del crontab con il
corrispondente <e>comando di rimozione</e>. Mostreremo la lista dei cron-job successiva
a questa operazione, per essere sicuri che tutto sia andato nel verso giusto.
</p>
<pre caption="Rimozione di un crontab">
# <i>crontab -d</i>
# <i>crontab -l</i>
</pre>
<p>
Non si dovrebbe vedere nessun cron-job nell'output da <c>crontab -l</c>. Se si dovessero
vedere operazioni elencate, questo vorrà dire che i crontab non saranno stati rimossi,
bisognerà controllare di avere usato il corretto <e>comando di rimozione</e> per la
propria implementazione di cron.
</p>
<p>
Creato uno stato "pulito" di cron, si cercherà ora di inserire qualcosa di utile
nel crontab di <b>root</b>. Molte persone vorrebbero eseguire <c>updatedb</c> settimanalmente
per essere sicure del corretto funzionamento di <c>slocate</c>. Per aggiungere
questa operazione al crontab, bisogna per prima cosa editare ancora
<path>crons.cron</path> in modo simile a quanto di seguito riportato:
</p>
<pre caption="Un vero crontab">
22 2 * * 1 /usr/bin/updatedb
</pre>
<p>
Questo farà eseguire updatedb alle 2:22 A.M. di lunedì mattina ogni settimana.
Si dovrà ora immettere il crontab con il comando di <e>nuova operazione</e> dalla
tabella e controllare nuovamente la lista.
</p>
<pre caption="Lista dei cron-job">
# <i>crontab crons.cron</i>
# <i>crontab -l</i>
</pre>
<p>
Ora, vogliamo, ad esempio, inserire un <c>emerge --sync</c> alle operazioni
automatiche giornaliere. Si potrebbe farlo editando <path>crons.cron</path>
e in seguito utilizzando <c>crontab crons.cron</c> proprio come prima oppure
utilizzando l'apposito <e>comando di edit</e> dalla tabella. Questo procedimento
dà la possibilità di editare il proprio crontab senza dipendere da file esterni
quali ad esempio <path>crons.cron</path>.
</p>
<pre caption="Edit di un crontab">
# <i>crontab -e</i>
</pre>
<p>
Questo dovrebbe aprire il crontab dell'utente con un editor. Se si vuole un
<c>emerge --sync</c> giornaliero alle 6:30 del mattino, si dovrà inserire
qualcosa del genere:
</p>
<pre caption="Un vero crontab">
22 2 * * 1 /usr/bin/updatedb
30 6 * * * /usr/bin/emerge --sync
<comment>(se si sta utilizzando anacron, si aggiunga questa linea)</comment>
30 7 * * * /usr/sbin/anacron -s
</pre>
<p>
Ancora, si controlli la lista dei cron-job come fatto nell'esempio precendente per
essere sicuri di avere inserito le operazione pianificate. Se visualizzate,
si sarà certi della correttezza delle operazioni effettuate.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Note Finali</title>
<section>
<title>Problemi</title>
<body>
<p>
Se si dovessero avere problemi nel far funzionare correttamente cron, questa sezione
potrebbe essere d'aiuto.
</p>
<ul>
<li>
<b>Cron è in esecuzione?</b><br/>
Esegui <c>ps ax | grep cron</c>, assicurati che cron sia mostrato!
</li>
<li>
<b>Cron sta funzionando?</b><br/>
Prova: * * * * * /bin/echo "foobar" >> /file_che_possiedi, e assicurati che funzioni
</li>
<li>
<b>Il tuo comando funziona?</b><br/>
Prova: * * * * * /bin/foobar > /file_che_possiedi 2>&1, cerca gli errori
in /file_che_possiedi
</li>
<li>
<b>Cron riesce ad eseguire le tue operazioni?</b><br/>
Controlla il log di cron, di solito <path>/var/log/cron.log</path> oppure
<path>/var/log/messages</path> per gli errori
</li>
<li>
<b>Ci sono dead.letter?</b><br/>
Di solito cron manda mail in presenza di un problema, controlla la tua posta oppure
guarda in ~/dead.letter
</li>
</ul>
<p>
Si ricordi che ogni implementazione di cron è differente dalle altre e il campo delle
caratteristiche/funzioni può variare di molto. Ci si assicuri di controllare
le pagine di man per crontab, fcrontab o anacrontab a seconda di quello
che si sta utilizzando.
</p>
<p>
Buona fortuna!
</p>
</body>
</section>
</chapter>
</guide>
[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #3: power-management-guide.xml --]
[-- Type: text/xml; charset="us-ascii"; name="power-management-guide.xml", Size: 45886 bytes --]
<?xml version='1.0' encoding="UTF-8"?>
<!DOCTYPE guide SYSTEM "/dtd/guide.dtd">
<!-- $Header: /var/www/www.gentoo.org/raw_cvs/gentoo/xml/htdocs/doc/en/power-management-guide.xml,v v 1.10 2005/03/19 16:48:25 yoswink Exp $ -->
<guide link="power-management-guide.xml">
<title>Guida alla Gestione Energetica</title>
<author title="Autore">
<mail link="fragfred@gmx.de">Dennis Nienhüser </mail>
</author>
<author title="Traduzione">
<mail link="frgrieco@aliceposta.it">Francesco Grieco</mail>
</author>
<abstract>
La gestione energetica è l'unica soluzione per estendere la durata della batteria
sui sistemi mobile come i notebook. Questa guida ne illustra la sua configurazione.
</abstract>
<!-- The content of this document is licensed under the CC-BY-SA license -->
<!-- See http://creativecommons.org/licenses/by-sa/2.0 -->
<license/>
<version>1.20</version>
<date>19 Marzo 2005</date>
<chapter>
<title>Introduzione</title>
<section>
<title>A cosa serve la Gestione Energetica?</title>
<body>
<p>
Capacità e durata delle batterie dei notebook sono migliorate molto nel corso
degli ultimi anni. Tuttavia i moderni processori consumano molta più energia dei
vecchi e ad ogni nuova generazione di notebook si aggiungono nuove periferiche
"affamate" di energia. Ecco il perchè dell'importanza della gestione energetica.
Applicando buone politiche di risparmio energetico non sarà sempre necessario
acquistare un'altra batteria.
</p>
</body>
</section>
<section>
<title>Breve panoramica</title>
<body>
<p>
Questa guida tratta della gestione energetica per i <e>notebook</e>.
Alcune sezioni potrebbero essere valide anche per i <e>server</e>, altre
non lo sono sicuramente e potrebbero causare problemi. Si consiglia
fortemente di non applicare niente di quello contenuto in questa guida
a macchine server a meno che non si sappia veramente quello che si
sta facendo.
</p>
<p>
Poichè questa guida diventa sempre più lunga, segue una breve panoramica di
ciò che sarà trattato.
</p>
<p>
La sezione <e>Prerequisiti</e> tratta di alcuni requisiti di base necessari
per tutte le sezioni a seguire della guida. Include settaggi del BIOS e
particolari configurazioni nel kernel. I seguenti tre capitoli pongono
l'attenzione sui componenti che tipicamente consumano maggiore energia -
il processore, il display e l'hard disk. Ognuno di essi pùo essere configurato
separatamente. <e>Power Management della CPU</e> mostra come modificare la frequenza del
processore al fine di risparmiare energia senza un eccessivo calo delle performance.
Alcuni stratagemmi in <e>Power Management dell'Hard Disk</e> permettono di
allegerire il carico di lavoro del disco (avendo come effetto anche una
riduzione del livello di rumore). Indicazioni anche per le card Wireless LAN e
per le periferiche USB in <e>Power Management delle altre periferiche</e> mentre
un altro intero capitolo è dedicato agli (ancora sperimentali) <e>Stati di Sleep</e>.
Infine un ultimo capitolo dedicato ai <e>Problemi</e> più comuni in cui
è possibile incorrere.
</p>
</body>
</section>
<section>
<title>Bilancio energetico per ogni componente</title>
<body>
<figure link="/images/energy-budget.png" short="Quale componente consuma quanta
energia?" caption="Peso energetico per ogni componente"/>
<p>
Quasi tutti i componenti possono funzionare in differenti stati - off, sleep, idle, active -
consumando a seconda dei casi diverse quantità di energia. La maggior parte dell'energia
viene consumata dal display LCD, dalla CPU e dagli hard disk. Spesso alcuni di essi
sono in grado di attivare politiche di gestione energetica attraverso il BIOS, ma
una configurazione intelligente del proprio sistema operativo adattabile
a diverse situazioni può ottenere molto di più.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Prerequisiti</title>
<section>
<title>Prima di tutto</title>
<body>
<p>Prima di entrare nei dettagli della gestione energetica per le singole periferiche,
vi sono alcuni requisiti. Dopo aver controllato i settaggi del BIOS, è necessario
attivare alcune opzioni del kernel - in breve ACPI, sleep states e CPU frequency scaling.
Poichè il risparmio energetico comporta una perdita delle prestazioni o un aumento
della latenza, deve essere attivato, naturalmente, solamente in assenza di una
connessione a rete elettrica. Da qui la necessità di un nuovo runlevel <e>battery</e>.
</p>
</body>
</section>
<section>
<title>Il BIOS</title>
<body>
<p>
Per prima cosa è necessario controllare i settaggi relativi al Power Management
nel BIOS. Di solito la soluzione migliore è combinare i settaggi del BIOS alle
politiche del sistema operativo, ma per il momento è meglio disabilitare le
funzioni del BIOS. In questo modo niente interferisce con le nuove politiche
imposte dal sistema operativo. Dopo aver configurato tutto per bene, sarà
necessario riabilitare tutte le funzioni del BIOS.
</p>
</body>
</section>
<section>
<title>Configurazione del Kernel</title>
<body>
<p>
Il supporto dell'ACPI (Advanced Configuration and Power Interface) nel kernel
è ancora in fase di sviluppo. Pertanto è consigliabile usare sempre il kernel
più recente.
</p>
<p>
Nella configurazione del kernel si devono attivare le seguenti opzioni:
</p>
<pre caption="Settaggi minimi del kernel per il Power Management (Kernel 2.6)">
Power Management Options --->
[*] Power Management Support
[ ] Software Suspend
[ ] Suspend-to-Disk Support
ACPI( Advanced Configuration and Power Interface ) Support --->
[*] ACPI Support
[ ] Sleep States
<M> AC Adapter
<M> Battery
<M> Button
<M> Fan
<M> Processor
<M> Thermal Zone
< > ASUS/Medion Laptop Extras
< > Toshiba Laptop Extras
[ ] Debug Statements
CPU Frequency Scaling --->
[*] CPU Frequency scaling
Default CPUFreq governor (userspace)
<*> 'performance' governor
<*> 'powersave' governor
<*> 'ondemand' cpufreq policy governor
<*> CPU frequency table helpers
<M> ACPI Processor P-States driver
<*> <i>driver CPUFreq a seconda del processore</i>
</pre>
<p>
E' possibile anche attivare Software Suspend, Suspend-to-Disk e Sleep States.
I possessori di notebook ASUS, Medion o Toshiba devono anche attivare i relativi
moduli specifici. Le ultime versioni del kernel (dalla 2.6.9 in avanti) includono una nuova sottovoce <e>'ondemand' governor</e> per il CPU Frequency Scaling. Anche questa opzione è da attivare.
</p>
<p>
Il kernel deve essere in grado di attivare il CPU frequency scaling (cambio di frequenza della CPU) sul processore. Poichè ogni CPU presenta una interfaccia differente dalle altre, è necessario scegliere il driver giusto per il proprio processore. Si presti attenzione - ad esempio attivando
<e>Intel Pentium 4 clock modulation</e> su un Pentium M, si otterà molto probabilmente un sistema poco stabile. La documentazione del kernel può chiarire qualsiasi dubbio in proposito.
</p>
<p>
Dopo la compilazione del kernel bisogna assicurarsi del corretto caricamento dei moduli
all'avvio e riavviare il notebook con il nuovo kernel. Per installare il demone acpi,
da riga di comando <c>emerge sys-power/acpid</c>. Il suddetto demone gestisce
eventi quali il passaggio da corrente a batteria o la chiusura del lid. E' necessario
assicurarsi che il modulo <e>button</e> sia caricato se non compilato direttamente
all'interno del proprio kernel. Ora si avvii il demone acpid con <c>/etc/init.d/acpid
start</c> e si esegua <c>rc-update add acpid default</c> per caricarlo all'avvio. Il suo
utilizzo verrà spiegato in seguito.
</p>
<pre caption="Installazione di acpid">
# <i>emerge sys-power/acpid</i>
# <i>modprobe button</i>
# <i>/etc/init.d/acpid start</i>
# <i>rc-update add acpid default</i>
</pre>
</body>
</section>
<section>
<title>Creazione del runlevel "battery"</title>
<body>
<p>
La configurazione di default attiverà il risparmio energetico solo quando
necessario - in pratica quando il notebook funziona con la propria
batteria. Per effettuare il passaggio fra stato di corrente e di batteria,
sarà necessario creare un runlevel <e>battery</e> in grado di gestire
l'avvio e il blocco degli script di risparmio energetico.
</p>
<note>
Se l'idea di avere un ulteriore runlevel non convince, è possibile saltare
questa sezione. Naturalmente ciò renderà tutto un pò più complicato. La
sezione seguente considera l'esistenza di un runlevel <e>battery</e>.
</note>
<pre caption="Creazione di un runlevel battery">
# <i>cd /etc/runlevels</i>
# <i>cp -a default battery</i>
</pre>
<p>
Finito. Il nuovo runlevel <e>battery</e> contiene tutto come <e>default</e>, ma
non c'è ancora nessun cambio automatico tra i due livelli.
</p>
</body>
</section>
<section>
<title>Risposta agli eventi ACPI</title>
<body>
<p>
Di solito gli eventi ACPI sono la chiusura del lid, il cambio della sorgente
energetica e il bottone di sleep. Il cambio di sorgente energetica è un evento
importante e deve necessariamente generare un cambio di runlevel. La creazione dei file
seguenti permetterà un cambio fra i runlevel <e>default</e> e <e>battery</e>
a seconda del tipo di sorgente energetica utilizzata.
</p>
<pre caption="/etc/acpi/switch_runlevel.sh">
#!/bin/bash
RUNLEVEL_AC="default"
RUNLEVEL_BATTERY="battery"
function on_ac () {
if which on_ac_power &> /dev/null
then
on_ac_power
else
grep --quiet on-line /proc/acpi/ac_adapter/*/state
fi
}
function SwitchRunlevel () {
if [ ! -d "/etc/runlevels/${RUNLEVEL_AC}" ]
then
logger "${0}: Runlevel ${RUNLEVEL_AC} does not exist. Aborting."
exit 1
fi
if [ ! -d "/etc/runlevels/${RUNLEVEL_BATTERY}" ]
then
logger "${0}: Runlevel ${RUNLEVEL_BATTERY} does not exist. Aborting."
exit 1
fi
if on_ac
then if [[ "$(cat /var/lib/init.d/softlevel)" != "${RUNLEVEL_AC}" ]]
then
logger "Switching to ${RUNLEVEL_AC} runlevel"
/sbin/rc ${RUNLEVEL_AC}
fi
elif [[ "$(cat /var/lib/init.d/softlevel)" != "${RUNLEVEL_BATTERY}" ]]
then
logger "Switching to ${RUNLEVEL_BATTERY} runlevel"
/sbin/rc ${RUNLEVEL_BATTERY}
fi
}
</pre>
<pre caption="/etc/acpi/events/pmg_ac_adapter">
event=ac_adapter.*
action=/etc/acpi/actions/pmg_ac_adapter.sh %e
</pre>
<pre caption="/etc/acpi/events/pmg_battery">
event=battery.*
action=/etc/acpi/actions/pmg_battery.sh %e
</pre>
<pre caption="/etc/acpi/actions/pmg_ac_adapter.sh">
#!/bin/bash
source /etc/acpi/switch_runlevel.sh
SwitchRunlevel
</pre>
<pre caption="/etc/acpi/actions/pmg_battery.sh">
#!/bin/bash
source /etc/acpi/switch_runlevel.sh
SwitchRunlevel
</pre>
<p>
Alcuni di questi file devono essere resi eseguibili.
Inoltre, per rendere effettive le modifiche apportate, sarà necessario riavviare
il demone acpid.
</p>
<pre caption="File per il cambio dei runlevel con acpid">
<i># chmod +x /etc/acpi/switch_runlevel.sh</i>
<i># chmod +x /etc/acpi/actions/pmg_*</i>
<i># /etc/init.d/acpid restart</i>
</pre>
<p>
Provando ora ad attaccare e staccare l'alimentazione a corrente, nei log di
sistema dovrebbero apparire a seconda dei casi i messaggi "Switching to AC
mode" o "Switching to battery mode".
Se lo script non è in grado di rilevare correttamente la sorgente di energia
utilizzata, è possibile consultare la sezione Problemi.
</p>
<p>
A causa della natura del meccanismo degli eventi, il notebook, al boot,
passa al runlevel default che sia o meno collegato alla rete elettrica.
E' necessario aggiungere, per questo, una nuova entry al boot
loader con l'opzione <c>softlevel=battery</c>; soluzione scomoda. Una soluzione
migliore è quella di creare un evento ACPI finto alla fine del processo di boot
e lasciare che lo script <path>/etc/acpi/default.sh</path> decida quale
runlevel utilizzare. Si apra con il proprio editor il file <path>/etc/conf.d/local.start</path>
e si aggiungano le linee:
</p>
<pre caption="Cambio del runlevel al boot del notebook con la modifica di local.start">
<comment># Finto evento acpi per cambiare runlevel se scollegati da rete elettrica</comment>
/etc/acpi/actions/pmg_battery.sh "battery/battery"
</pre>
<p>
Conclusa questa parte preparativa, è ora possibile attivare le politiche di
gestione energetica per ogni singolo componente.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Power Management della CPU</title>
<section>
<title>Terminologia tecnica</title>
<body>
<p>
Il CPU frequency scaling introduce alcuni termini tecnici che potrebbero
essere non conosciuti. Segue, per questo motivo, una breve introduzione.
</p>
<p>
Prima di tutto, il kernel deve essere in grado di cambiare la frequenza
di funzionamento della CPU. Il <e>CPUfreq processor driver</e> contiene
i comandi per effettuare questa operazione su ogni tipo di CPU. Per questo motivo è importante
indicare il driver giusto da utilizzare nel proprio kernel (operazione già
effettuata precedentemente). Inoltre, il kernel deve anche scegliere la
frequenza corretta di funzionamento da utilizzare nelle diverse situazioni. Questa viene
fissata in base ad una <e>policy</e> (politica di gestione) che consiste in
una <e>CPUfreq policy</e> e in un <e>governor</e> (regolatore).
Una CPUfreq policy non è altro che un insieme di due numeri che definiscono
un campo all'interno del quale la frequenza può oscillare - un valore minimo e
uno massimo. Il governor, invece, decide quale delle frequenze disponibili fra la
minima e la massima utilizzare. Ad esempio, il <e>powersave governor</e> utilizza
sempre la frequenza più bassa disponibile, il <e>performance governor</e>, invece,
la più alta. L'<e>userspace governor</e> non sceglie nessuna frequenza in particolare
ma utilizza quella indicata dall'utente (o da un programma in
userspace); il valore della frequenza viene letto da
<path>/sys/devices/system/cpu/cpu0/cpufreq/scaling_setspeed</path>.
</p>
<p>
Questo può non sembrare un cambiamento dinamico della frequenza e in effetti non lo
è. La dinamicità può essere realizzata con diversi approcci.
Ad esempio, <e>ondemand governor</e> prende le sue decisioni in
base al carico di lavoro della CPU. La stessa cosa viene fatta
da utility come <c>cpudyn</c>, <c>speedfreq</c>, <c>powernowd</c> e
molte altre. Gli eventi ACPI possono essere utilizzati per attivare o
disattivare i cambi dinamici della frequenza a seconda della sorgente energetica utilizzata.
</p>
</body>
</section>
<section>
<title>Settaggio manuale della frequenza</title>
<body>
<p>
Diminuendo la velocità e il voltaggio della CPU si hanno due vantaggi: viene
consumata meno energia e il notebook non si riscalda eccessivamente. Il grande
svantaggio, naturalmente, è una perdita di performance. La diminuzione della
velocità del processore resta in ogni caso un buon compromesso fra calo di
performance e risparmio energetico.
</p>
<note>
Non tutti i notebook supportano il frequency scaling. In caso di dubbi, una lista
dei processori supportati si trova nella sezione <e>Problemi</e>.
</note>
<p>
E' ora di provare il corretto funzionamento del cambio di frequenza della CPU.
Per impratichirsi con l'interfaccia del kernel, è possibile effettuare qualche
modifica manuale della velocità. Per settare un'altra velocità della CPU:
</p>
<pre caption="Modifiche manuali della velocità della CPU">
<comment>(Legge la frequenza attuale)</comment>
# <i>grep "cpu MHz" /proc/cpuinfo</i>
<comment>(Lista delle frequenza supportate. Potrebbe dare un errore)</comment>
# <i>cd /sys/devices/system/cpu/cpu0/cpufreq/</i>
# <i>cat scaling_available_frequencies</i>
<comment>(Cambia la frequenza ad 1 GHz (1000000 KHz)
Sostituire con una frequenza supportata dal notebook)</comment>
# <i>echo -n userspace > scaling_governor</i>
# <i>echo -n 1000000 > scaling_setspeed</i>
<comment>(Verifica che la frequenza sia stata cambiata)</comment>
# <i>grep "cpu MHz" /proc/cpuinfo</i>
</pre>
<p>
In caso di messaggi di errore, è possibile consultare la sezione <e>Problemi</e>
alla fine di questa guida.
</p>
<p>
E' possibile anche scrivere in <path>scaling_max_freq</path> e in
<path>scaling_min_freq</path> per fissare il massimo e il minimo di
un intervallo in cui far oscillare la frequenza.
</p>
<note>
Alcuni kernel sembrano avere un bug riguardo l'aggiornamento di <path>/proc/cpuinfo</path>.
Se non fosse presente il valore atteso, questo non nessariamente potrebbe indicare
che la frequenza della CPU non è stata cambiata. Se ciò dovessa avvenire, sarà
necessario eseguire un <c>emerge x86info</c>, aggiornare il proprio kernel come richiesto
e controllare l'esatta frequenza di funzionamento della CPU con <c>x86info -mhz</c>.
</note>
</body>
</section>
<section>
<title>Adattamento automatico della frequenza</title>
<body>
<p>
Tutto questo è molto semplice, ma scomodo da effettuare tutti i giorni. Meglio lasciare che sia
il proprio sistema a settare automaticamente la frequenza appropriata.
La tabella seguente presenta una panoramica delle utility necessarie a questo compito. E' suddivisa
in tre categorie: <e>kernel</e> per soluzioni che hanno bisogno solo
del supporto del kernel, <e>demone</e> per programmi che lavorano in
background e <e>GUI</e> per programmi che forniscono una interfaccia
grafica per una configurazione più semplice.
</p>
<table>
<tr>
<th>Nome</th>
<th>Categoria</th>
<th>Causa cambio</th>
<th>Governor del kernel</th>
<th>Governor supportati</th>
<th>Note</th>
</tr>
<tr>
<ti>'ondemand' governor</ti>
<ti>Kernel</ti>
<ti>Carico della CPU</ti>
<ti>N.A.</ti>
<ti>N.A.</ti>
<ti>
Configurazione attraverso i file presenti in
<path>/sys/devices/system/cpu/cpu0/cpufreq/ondemand/</path>.
Richiede ancora tool in userspace (programmi, script) in caso
di utilizzo del cambio di governor.
</ti>
</tr>
<tr>
<ti><uri link="http://mnm.uib.es/~gallir/cpudyn/">cpudyn</uri></ti>
<ti>Demone</ti>
<ti>Carico della CPU</ti>
<ti>Nessuno</ti>
<ti>Dynamic</ti>
<ti>
Supporta anche lo standby dei dischi - si noti, però, che il <e>laptop mode</e>
in molti casi funziona decisamente meglio.
</ti>
</tr>
<tr>
<ti><uri link="http://sourceforge.net/projects/cpufreqd/">cpufreqd</uri></ti>
<ti>Demone</ti>
<ti>Stato della batteria, Carico della CPU, Programmi in esecuzione</ti>
<ti>Tutti disponibili</ti>
<ti>Nessuno</ti>
<ti>
Configurazione sofisticata (ma anche complessa). Una configurazione ottimale
richiede una conoscenza dettagliata del proprio sistema.
</ti>
</tr>
<tr>
<ti>
<uri link="http://www.deater.net/john/powernowd.html">powernowd</uri>
</ti>
<ti>Demone</ti>
<ti>Carico della CPU</ti>
<ti>Nessuno</ti>
<ti>Passive, sine, aggressive</ti>
<ti>
Supporta SMP.
</ti>
</tr>
<tr>
<ti><uri link="http://www.goop.org/~jeremy/speedfreq/">speedfreq</uri></ti>
<ti>Demone</ti>
<ti>Carico della CPU</ti>
<ti>Nessuno</ti>
<ti>Dynamic, powersave, performance, fixed speed</ti>
<ti>
Piccola ma efficace con una utile interfaccia client/server. Richiede un
kernel della serie 2.6
</ti>
</tr>
<tr>
<ti><uri link="http://cpuspeedy.sourceforge.net/">gtk-cpuspeedy</uri></ti>
<ti>GUI</ti>
<ti>Nessuno</ti>
<ti>Nessuno</ti>
<ti>Nessuno</ti>
<ti>
Applicazione per Gnome, utility grafica per configurare manualmente la
frequenza della CPU. Non offre nessun tipo di automazione e viene elencata
solamente per completezza.
</ti>
</tr>
<tr>
<ti>klaptopdaemon</ti>
<ti>GUI</ti>
<ti>Stato della batteria</ti>
<ti>Tutti disponibili</ti>
<ti>Nessuno</ti>
<ti>
Solamente per KDE, 'ondemand' governor necessario per il cambio dinamico della
frequenza.
</ti>
</tr>
</table>
<p>
L'adattamento della frequenza della CPU al carico di lavoro corrente del notebook
può sembrare semplice da attuare ad una prima occhiata, ma in realtà non lo è.
Un algoritmo errato può causare cambi continui fra due frequenze o
spreco di energia quando la frequenza viene portata inutilmente a valori troppo alti.
</p>
<p>
Quale scegliere? Iniziamo con <c>speedfreq</c>:
</p>
<pre caption="Installazione di speedfreq">
# <i>emerge speedfreq</i>
# <i>rc-update add speedfreq battery</i>
</pre>
<p>
<c>speedfreq</c> può essere configurato editando il file
<path>/etc/conf.d/speedfreq</path>. Ad esempio, modificando
<c>SPEEDFREQ_OPTS=""</c> in <c>SPEEDFREQ_OPTS="-u"</c>, gli utenti
saranno in grado di cambiare le politiche di gestione energetica.
Completate le modifiche, si avvia il demone.
</p>
<pre caption="Avvio di speedfreq">
# <i>/etc/init.d/speedfreq start</i>
</pre>
<p>
Configurare cpufreqd è leggermente più complicato.
</p>
<warn>
Naturalmente bisogna evitare di eseguire più di uno dei suddetti programmi contemporaneamente.
Potrebbero, infatti, esserci problemi come un cambio continuo fra due frequenze. Se si è
installato speedfreq, si può saltare la sezione dedicata a cpufreqd.
</warn>
<pre caption="Installazione di cpufreqd">
# <i>emerge cpufreqd</i>
# <i>rc-update add cpufreqd battery</i>
</pre>
<p>
<c>cpufreqd</c> ha una configurazione di default in
<path>/etc/cpufreqd.conf</path>. Si può editare il file di configurazione a
seconda delle proprie necessità. Le modifiche seguenti porteranno un maggior
risparmio energetico rispetto alla configurazione di default - a costo, ovviamente,
di un maggior calo di performance.
</p>
<pre caption="Un esempio di file di configurazione di cpufreqd">
[General]
pidfile=/var/run/cpufreqd.pid
poll_interval=2
pm_type=acpi
<comment># Decomenttando questa linea si attiva l'ACPI workaround (leggere cpufreqd.conf(5))
# acpi_workaround=1</comment>
verbosity=4 <comment>#(per avere un minimo logging si porti questo valore a 5)</comment>
<comment># Massime performance</comment>
[Profile]
name=ac
minfreq=600000
maxfreq=1400000
policy=performance
<comment># Massimo risparmio energetico</comment>
[Profile]
name=battery
minfreq=600000
maxfreq=900000
policy=powersave
<comment># Frequenza costante</comment>
[Profile]
name=dvd
minfreq=900000
maxfreq=1100000
policy=powersave
<comment># Massime performance quando collegati a corrente</comment>
[Rule]
name=ac_on
ac=on
profile=ac
<comment># La compilazione dovrebbe essere più veloce se lo stato della batteria è ok</comment>
[Rule]
name=compiling
ac=off
battery_interval=30-100
programs=emerge,make,gcc,cpp
cpu_interval=0-100
profile=ac
<comment># Guardare film in DVD potrebbe non essere possibile con basse frequenze di CPU
# Può essere usato anche per i giochi</comment>
[Rule]
name=dvd_watching
ac=off
battery_interval=15-100
programs=xine,mplayer,avidemux,kaffeine,kmplayer
cpu_interval=0-100
profile=dvd
<comment># Se le scelte precedenti non sono applicabili, massimizza il risparmio energetico</comment>
[Rule]
name=battery_on
ac=off
battery_interval=0-100
cpu_interval=0-100
profile=battery
</pre>
<p>
<c>cpudyn</c> e <c>powernowd</c> possono essere installati allo stesso modo di
<c>speedfreq</c>.
</p>
</body>
</section>
<section>
<title>Verifica di funzionamento a seguito delle modifiche apportate</title>
<body>
<p>
L'ultima cosa da controllare è che le nuove politiche di risparmio energetico
facciano bene il loro lavoro. Un modo semplice per verificare ciò è il
monitoraggio della velocità della CPU mentre è al lavoro sul notebook:
</p>
<pre caption="Monitoraggio della velocità della CPU">
# <i>watch -n 1 'grep "cpu MHz" /proc/cpuinfo'</i>
</pre>
<p>
Se <path>/proc/cpuinfo</path> non dovesse venire aggiornato, si provi a monitorare
la frequenza della CPU con:
</p>
<pre caption="Monitoraggio alternativo della velocità della CPU">
# <i>watch -n 1 x86info -mhz</i>
</pre>
<p>
A seconda dei settaggi, la velocità della CPU dovrebbe aumentare in caso di richieste
d'uso, diminuire in mancanza di attività o, semplicemente, rimanere costante.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Power Management del display LCD</title>
<section>
<title>Il maggior consumatore di energia</title>
<body>
<p>
Come si può vedere dalla <uri link="#doc_chap1_fig1">figura 1.1</uri>, il display
LCD consuma la maggior parte dell'energia (questo potrebbe non valere nel caso
di CPU non mobile). Per questo non solo è importante spegnere il display quando
non utilizzato, ma anche ridurre il backlight (retroilluminazione) se possibile.
Molti notebook offrono la possibilità di regolare il backlight.
</p>
<p>
La prima cosa da controllare sono i settaggi di standby/suspend/off del display.
Questi sono tutti valori che dipendono dal windowmanager. L'oscuramento del
terminale può essere effettuato con <c>setterm -blank <numero-di-minutiM></c>,
<c>setterm -powersave on</c> e <c>setterm -powerdown <numero-di-minutiM></c>.
Per Xorg, si può editare <path>/etc/X11/xorg.conf</path> come di seguito riportato:
</p>
<pre caption="Settaggi dell'LCD suspend in Xorg e in XFree86">
Section "ServerLayout"
Identifier [...]
[...]
Option "BlankTime" "5" <comment># Oscura lo schermo dopo cinque minuti (Fake)</comment>
Option "StandbyTime" "10" <comment># Spegne lo schermo dopo 10 minuti (DPMS)</comment>
Option "SuspendTime" "20" <comment># Suspend dopo 20 minuti</comment>
Option "OffTime" "30" <comment># Spegne dopo mezz'ora</comment>
[...]
EndSection
[...]
Section "Monitor"
Identifier [...]
Option "DPMS" "true"
[...]
EndSection
</pre>
<p>
Vale lo stesso per XFree86 e <path>/etc/X11/XF86Config</path>.
</p>
<p>
Probabilmente la gestione del backlight (retroilluminazione) è il punto più importante.
Se si è in grado di accedere al controllo tramite un tool, bisogna scrivere un piccolo
script in grado di settare il backlight nella modalità batteria e inserirlo nel
runlevel <e>battery</e>.
</p>
</body>
</section>
</chapter>
<chapter>
<title>Power Management dell'Hard Disk</title>
<section>
<title>Sleep quando in idle</title>
<body>
<p>
L'obiettivo è portare l'hard disk nello stato di sleep il prima possibile
quando non viene utilizzato. Verranno analizzate due possibilità. La prima
è <c>cpudyn</c>. Bisogna decommentare le linee nella sezione "Disk Options" in
<path>/etc/conf.d/cpudyn</path>. Per portare l'hard disk in sleep dopo 60 secondi
di inattività si deve agire nel modo seguente:
</p>
<pre caption="Uso di cpudyn per lo standby dell'hard disk">
<comment>################################################
# DISK OPTIONS
# (opzioni disabilitate di default)
################################################
#
# Tempo dopo il quale porre il disco in modalità standby
# in mancanza di operazioni IO (in secondi)
#
</comment>
TIMEOUT=60
<comment>
#
# Dischi sui quali effettuare lo spindown (separati da virgole)
#
</comment>
DISKS=/dev/hda
</pre>
<p>
La seconda possibilità è quella di usare un piccolo script e hdparm.
Si crei <path>/etc/init.d/pm.hda</path> come riportato di seguito:
</p>
<pre caption="Uso di hdparm per lo standby dell'hard disk">
#!/sbin/runscript
start() {
ebegin "Activating Power Management for Hard Drives"
hdparm -q -S12 /dev/hda
eend $?
}
stop () {
ebegin "Deactivating Power Management for Hard Drives"
hdparm -q -S253 /dev/hda
eend $?
}
</pre>
<p>
Con <c>man hdparm</c> è possibile avere informazioni sulle varie opzioni.
Una volta pronto, è necessario aggiungere lo script al runlevel battery.
</p>
<pre caption="Configurazione per lo standby automatico del disco">
# <i>chmod +x /etc/init.d/pm.hda</i>
# <i>/sbin/depscan.sh</i>
# <i>rc-update add pm.hda battery</i>
</pre>
<impo>
Si presti molta attenzione ai settaggi di sleep e di spin down del proprio hard disk.
Settaggi troppo spinti (valori molto piccoli) possono danneggiare l'hardware e invalidare
la garanzia.
</impo>
</body>
</section>
<section>
<title>Aumento del tempo di idle - laptop-mode</title>
<body>
<p>
Gli ultimi kernel (2.6.6 e maggiori, gli ultimi della serie 2.4 e altri con alcune patch)
includono il così detto <e>laptop-mode</e>. Quando attivato, le operazioni
di scrittura avvengono ogni 10 minuti (invece di 30 secondi). Questo fà si che l'hard disk
non lavori in maniera continuativa.
</p>
<p>
<!-- TODO: bug #45593 -->
Oltre al supporto da parte del kernel, è necessario uno script in grado di
controllare l'avvio e il blocco del laptop-mode. La documentazione del kernel
in <path>/usr/src/linux/Documentation/laptop-mode.txt</path> ne contiene
uno così come i <c>laptop-mode-tools</c>. Tuttavia nessuno di essi è
semplice da installare.
</p>
<p>
Gli ebuild per i laptop-mode-tools non sono in Portage perchè gli sviluppatori
di Gentoo non li ritengono abbastanza maturi. Si consideri questo prima
di utilizzare gli ebuild presenti in <uri
link="http://bugs.gentoo.org/show_bug.cgi?id=45593">Bugzilla</uri>. Il Manuale
Gentoo spiega come utilizzare ebuild esterni se non si è a conoscenza sul
dove installarli. Inseriti gli ebuild nel proprio PORTDIR_OVERLAY, è possibile
installare lo script con:
</p>
<warn>
Questo package non è considerato maturo e l'installazione di ebuild tratti da Bugzilla
non è raccomandata. Se non si dovesse essere sicuri, non si utilizzino i
laptop-mode-tools.
</warn>
<pre caption="Avvio automatico del laptop-mode">
# <i>emerge laptop-mode-tools</i>
</pre>
<p>
I <c>laptop-mode-tools</c> hanno la propria configurazione in
<path>/etc/laptop-mode/laptop-mode.conf</path>. E' possibile
adattarla alle proprie esigenze; la documentazione è presente nel file di configurazione stesso.
Se nelle proprie USE flag si ha <e>apm</e> oppure <e>acpi</e>, il laptop-mode
si avvierà automaticamente nella modalità batteria. In caso contrario
è possibile automatizzare questo processo eseguendo <c>rc-update add laptop-mode battery</c>.
</p>
</body>
</section>
<section>
<title>Altri consigli</title>
<body>
<p>
Oltre a portare il proprio hard disk nello stato di sleep il prima possibile,
una buona idea è minimizzare gli accessi al disco. Si osservino i processi che
scrivono sul disco frequentemente - syslogd è un buon candidato. Non sarà necessario
fermarlo completamente, ma è possibile modificare il suo file di configurazione in
modo tale che non tutto venga loggato, riducendo in questo modo gli accessi al disco.
Cups scrive sul disco periodicamente, quindi fermarlo e attivarlo manualmente
solo quando necessario è una buona idea.
</p>
<pre caption="Disattivare cups nella modalità batteria">
# <i>rc-update del cupsd battery</i>
</pre>
<p>
Un'altra possibilità è la disattivazione dello swap nella modalità batteria.
Prima di scrivere qualcosa che attivi e disattivi lo swap, bisogna assicurarsi
che ci sia abbastanza RAM e che lo swap non sia usato pesantemente, altrimenti
si potrebbero avere problemi.
</p>
<p>
Se non si vuole utilizzare il laptop-mode, è sempre possibile minimizzare gli
accessi al disco montando alcune directory come <e>tmpfs</e> - gli accessi in
scrittura non avvengono sul disco, ma nella memoria principale e vengono
persi con l'operazione di unmount. Spesso è utile montare <path>/tmp</path>
allo stesso modo - il suo contenuto viene in ogni caso perso ad ogni reboot
che sia montato o meno sul disco o in RAM. Bisogna solo essere certi
di avere RAM a sufficienza e nessun programma (come un client per i download o
un programma di compressione) che abbia bisogno di molto spazio in <path>/tmp</path>.
Per usare questa soluzione è necessario avere il supporto tmpfs abilitato
nel kernel e aggiungere una linea come la seguente in <path>/etc/fstab</path>:
</p>
<pre caption="Modifica di /etc/fstab per rendere /tmp volatile">
none /tmp tmpfs size=32m 0 0
</pre>
<warn>
Si presti attenzione al parametro size e lo si modifichi per il proprio sistema.
Se non si è sicuri, non lo si modifichi, in quanto si creerebbero facilmente
grossi cali di performance (effetto collo di bottiglia). Se si volesse montare
<path>/var/log</path> nello stesso modo, non bisogna dimenticare di unire i file
di log al disco prima di effettuare l'unmounting. Sono essenziali. Montare anche
/var/tmp allo stesso modo è inutile. Portage usa questa directory per la compilazione...
</warn>
</body>
</section>
</chapter>
<chapter>
<title>Power Management delle altre periferiche</title>
<section>
<title>Power Management del Wireless</title>
<body>
<p>
Le card Wireless LAN consumano poca energia. E' possibile inserirle nella modalità
risparmio energetico in analogia allo script pm.hda.
</p>
<pre caption="Power Management automatico per le WLAN">
#!/sbin/runscript
start() {
ebegin "Activating Power Management for Wireless LAN"
iwconfig wlan0 power on power max period 3
eend $?
}
stop () {
ebegin "Deactivating Power Management for Wireless LAN"
iwconfig wlan0 power off
eend $?
}
</pre>
<p>
L'esecuzione di questo script porta la wlan0 in modalità risparmio energetico
ponendola in stato di sleep dopo tre secondi di assenza di traffico.
Lo si salvi come <path>/etc/init.d/pm.wlan0</path> e lo si aggiunga al runlevel
battery come gli altri. Per dettagli e maggiori opzioni <c>man iwconfig</c>.
Se i propri driver oppure l'access point supportano il cambio del beacon time,
questo può essere un altro modo per risparmiare ancora più energia.
</p>
<pre caption="Power Management for WLAN">
# <i>chmod +x /etc/init.d/pm.wlan0</i>
# <i>/sbin/depscan.sh</i>
# <i>rc-update add pm.wlan0 battery</i>
</pre>
</body>
</section>
<section>
<title>USB Power Management</title>
<body>
<p>
Ci sono due problemi riguardo il consumo di energia delle periferiche USB:
primo, periferiche come i mouse USB, le fotocamere digitali o le USB stick consumano
energia appena inserite. Non si può ovviare in nessun modo a questo problema
(a meno che non vengano rimosse se non necessarie). Secondo, quando ci sono
periferiche USB collegate, l'USB host controller accede periodicamente al bus
non permettendo alla CPU di passare nelle modalità sleep C3/4. Il Sistema
Operativo risolve questo problema attraverso l' "USB selective
suspend", non ancora implementato nel kernel. L'USB selective suspend permette
l'accesso al bus solo quando la periferica è in uso. L'unico modo, al momento,
per aggirare questo problema (fino alla sua implementazione nel kernel) è
compilare il supporto USB e le sue periferiche come moduli e rimuoverli attraverso
uno script quando non utilizzati (ad esempio alla chiusura del lid).
</p>
</body>
</section>
</chapter>
<chapter>
<title>Stati di Sleep: sleep, standby, suspend to disk</title>
<section>
<title>Cosa sono</title>
<body>
<p>
L'ACPI definisce differenti stati di sleep. I più importanti sono
</p>
<ul>
<li>S1 ossia Standby</li>
<li>S3 ossia Suspend to RAM ossia Sleep</li>
<li>S4 ossia Suspend to Disk ossia Hibernate</li>
</ul>
<p>
Possono essere chiamati quando il sistema non è in uso, ma non si vuole
effettuare lo shutdown a causa del lungo tempo di boot.
</p>
</body>
</section>
<section>
<title>Sleep, Standby & Hibernate</title>
<body>
<p>
Il supporto ACPI per questi stati di sleep è instabile per alcune buone ragioni.
Gli stati di sleep APM sembrano più stabili, ma non è possibile utilizzare
contemporaneamente l'APM e l'ACPI.
</p>
<warn>
Nonostante il supporto agli stati di sleep vada continuamente migliorando, resta
tuttora in una fase sperimentale. Swsusp2 e Suspend to Ram sembrano funzionare bene ma
è necessario prestare attenzione: si potrebbe facilmente andare incontro a perdita dati.
</warn>
<p>
Attualmente ci sono tre implementazioni per S4. Quella originale è swsusp,
a seguire swsusp2 che ha l'interfaccia più carina (include il supporto del
bootsplash), ma richiede l'applicazione manuale di una patch al kernel. Ed
infine Suspend-to-Disk, un fork di swsusp.
</p>
<p>
Per un'analisi comparativa delle caratteristiche si veda <uri
link="http://softwaresuspend.berlios.de/features.html#compare"> qui</uri>.
Se non si dovesse ancora sapere quale scegliere, swsusp2
sembra al momento la soluzione più promettente.
</p>
<p>
La sezione del kernel a riguardo è la seguente:
</p>
<pre caption="Configurazione del kernel per i vari stati di sospensione">
Power Management Options --->
<comment>(sleep e standby)</comment>
ACPI( Advanced Configuration and Power Interface ) Support --->
[*] ACPI Support
[*] Sleep States
<comment>(hibernate con swsusp)</comment>
[*] Software Suspend (EXPERIMENTAL)
<comment>(hibernate con swsusp2)</comment>
Software Suspend 2
--- Image Storage (you need at least one writer)
[*] Swap Writer
--- Page Transformers
[*] LZF image compression
(/dev/"your-swap-here") Default resume device name
<comment>(hibernate con Suspend-to-Disk)</comment>
[*] Suspend-to-Disk Suport
(/dev/"your-swap-here") Default resume partition
</pre>
<p>
Si compili il kernel con le appropriate opzioni abilitate e si controlli, tramite
<c>cat /proc/acpi/sleep</c> per il 2.4 e <c>cat /sys/power/state</c> per il 2.6,
ciò che si ha di supportato. Per swsusp è necessario passare al kernel il parametro
<c>resume=/dev/"propria-partizione-di-swap"</c>. Se questo non fosse possibile,
si usi <c>noresume</c> per swsusp, <c>pmdisk=off</c> per Suspend-to-Disk e
<c>noresume2</c> per swsusp2.
</p>
<p>
Per portare il proprio sistema in uno degli stati di sleep:
</p>
<pre caption="Attivazione degli stati di sleep">
<comment>(per i kernel 2.4)</comment>
# <i>echo 1 > /proc/acpi/sleep</i> <comment>(standby)</comment>
# <i>echo 3 > /proc/acpi/sleep</i> <comment>(sleep)</comment>
<comment>(per i kernel 2.6)</comment>
# <i>echo -n standby > /sys/power/state</i> <comment>(standby)</comment>
# <i>echo -n mem > /sys/power/state</i> <comment>(sleep)</comment>
<comment>(swsusp)</comment>
# <i>echo 4 > /proc/acpi/sleep</i> <comment>(hibernate)</comment>
<comment>(Suspend-to-Disk)</comment>
# <i>echo -n disk > /sys/power/state</i> <comment>(hibernate)</comment>
<comment>(swsusp2)</comment>
# <i>/usr/sbin/hibernate</i> <comment>(hibernate, si legga di seguito)</comment>
</pre>
<warn>
E' consigliabile effettuare un backup dei propri dati. Eseguendo <c>sync</c> prima
dell'esecuzione di uno dei comandi, i dati di cache verranno scritti sul disco.
Provare il tutto al di fuori dell'ambiente grafico X e, in seguito, con X in
esecuzione senza essere loggati al suo interno.
</warn>
<p>
Se dovesse capitare un kernel panic a causa di uhci o simili, è utile provare
a compilare il supporto USB come modulo per poterlo eventualmente "scaricare"
prima che il laptop vada nello stato di sleep.
</p>
<p>
Mentre tutto ciò che si è visto fino ad ora è sufficiente per eseguire
swsusp e Suspend-to-Disk (non si è detto funzionare!), swsusp2 richiede
maggiori attenzioni. La prima cosa da fare è applicare la patch fornita da
<uri link="http://softwaresuspend.berlios.de/">http://softwaresuspend.berlios.de/</uri>
al kernel. In seguito sarà necessario installare l'<c>hibernate-script</c>.
Una volta installato, si passerà alla sua configurazione tramite il file
<path>/etc/hibernate/hibernate.conf</path> e a provare a vedere se funziona:
</p>
<pre>
<i># emerge hibernate-script</i>
<i># $EDITOR /etc/hibernate/hibernate.conf</i>
<comment>(Ultima occasione per effettuare un backup dei propri dati)</comment>
<i># hibernate</i>
</pre>
</body>
</section>
</chapter>
<chapter>
<title>Problemi</title>
<section>
<title>Se qualcosa dovesse andare male...</title>
<body>
<p>
<e>D:</e> Sto cercando di cambiare la frequenza della CPU, ma
<path>/sys/devices/system/cpu/cpu0/cpufreq/scaling_governor</path> non esiste.
</p>
<p>
<e>R:</e> Assicurati che il tuo processore supporti il frequency scaling e di
aver scelto il driver giusto. Ecco una lista di processori supportati dal cpufreq
(kernel 2.6.7): ARM Integrator, ARM-SA1100, ARM-SA1110, AMD Elan - SC400, SC410, AMD mobile K6-2+, AMD mobile K6-3+, AMD mobile Duron, AMD mobile Athlon, AMD Opteron, AMD Athlon 64, Cyrix Media GXm,
Intel mobile PIII e Intel mobile PIII-M su alcuni chipset, Intel Pentium 4,
Intel Xeon, Intel Pentium M (Centrino), National Semiconductors Geode GX,
Transmeta Crusoe, VIA Cyrix 3 / C3, UltraSPARC-III, SuperH SH-3, SH-4, alcuni
"PowerBook" e "iBook2" e vari processori su alcuni sistemi compatibili ACPI 2.0 (solo se
gli "ACPI Processor Performance States" sono disponibili attraverso l'interfaccia
ACPI/BIOS).
</p>
<p>
<e>D:</e> Il mio notebook supporta il frequency scaling, ma
<path>/sys/devices/system/cpu/cpu0/cpufreq/</path> è vuoto.
</p>
<p>
<e>R:</e> Cerca messaggi d'errore relativi all'ACPI con <c>dmesg | grep ACPI</c>.
Prova ad aggiornare il BIOS, specialmente se vedi errori riguardo il DSDT.
Puoi anche provare a corregge il problema manualmente (ma ciò è al di fuori degli
scopi di questa guida).
</p>
<p>
<e>D:</e> Il mio notebook supporta il frequency scaling, ma secondo /proc/cpuinfo
la velocità non cambia mai.
</p>
<p>
<e>R:</e> Probabilmente hai attivato il supporto al symmetric multiprocessing
nel kernel (CONFIG_SMP). Disattivalo e dovrebbe funzionare. Alcune vecchie versioni
del kernel presentano un bug al riguardo. In questo caso, esegui <c>emerge x86info</c>,
aggiorna il tuo kernel come richiesto e controlla il valore della frequenza con
<c>x86info -mhz</c>.
</p>
<p>
<e>D:</e> Posso cambiare la frequenza della CPU, ma la scelta non è così ampia come
quella disponibile in un altro OS.
</p>
<p>
<e>R:</e> Puoi combinare il frequency scaling con l'ACPI throttoling per ottenere
frequenza minori. Ricorda comunque che il throttoling non risparmia molta energia
e viene usato solo per una gestione termica (mantiene il notebook freddo). Puoi
leggere lo stato attuale del throttoling con <c>cat
/proc/acpi/processor/CPU/throttling</c> a cambiarlo con <c>echo -n "0:x" >
/proc/acpi/processor/CPU/limit</c>, dove la x è una degli stati Tx elencati in
<path>/proc/acpi/processor/CPU/throttling</path>.
</p>
<p>
<e>D:</e> Nella configurazione del kernel powersave, performance e userspace
governors vengono mostrati, ma non vedo la voce ondemand. Dove la trovo?
</p>
<p>
<e>R:</e> Ondemand governor è incluso solamente nelle ultime versioni del kernel. Prova
ad aggiornarlo.
</p>
<p>
<e>D:</e> Il cambio di runlevel non funziona - lo script non è in grado di determinare correttamente
la sorgente elettrica utilizzata.
</p>
<p>
<e>R:</e> Su alcuni sistemi, la sorgente elettrica non può essere determinata dalla
lettura del file <path>/proc/acpi/ac_adapter/*/state</path>. Se dovesse essere
questo il tuo caso, crea uno script <c>on_ac_power</c> oppure utilizza quello
incluso in <c>powermgmt-base</c>. Un ebuild può essere trovato su <uri
link="http://bugs.gentoo.org/show_bug.cgi?id=76516">Bug #76516</uri>. Basta
solamente effettuare l'emerge. Funziona in maniera trasparente con lo script
mostrato sopra.
</p>
<p>
<e>D:</e> La durata della batteria sembra essere peggiorata rispetto a prima.
</p>
<p>
<e>R:</e> Controlla i settaggi del tuo BIOS. Potresti aver dimenticato di riattivare
alcuni settaggi.
</p>
<p>
<e>D:</e> La mia batteria è carica, ma per KDE è del tutto scarica (riporta 0%) e,
quindi, viene avviato la sequenza di shutdown.
</p>
<p>
<e>R:</e> Controlla che il supporto batteria sia attivato nel tuo kernel. Se lo hai compilato
come modulo, assicurati di averlo caricato correttamente.
</p>
<p>
<e>D:</e> Ho un Dell Inspiron 51XX e non riesco ad ottenere eventi ACPI.
</p>
<p>
<e>R:</e> Sembra essere un bug del kernel. Leggi <uri
link="http://bugme.osdl.org/show_bug.cgi?id=1752">qui</uri>.
</p>
<p>
<e>D:</e> Ho appena comprato una nuova batteria, ma dura solo per pochi minuti! Cosa faccio
di sbagliato?
</p>
<p>
<e>R:</e> Prima di tutto segui le istruzioni del venditore su come caricare correttamente la batteria.
</p>
<p>
<e>D:</e> Niente, è inutile. Cosa faccio ora?
</p>
<p>
<e>R:</e> Alcune batterie vendute come "nuove" sono in realtà vecchie. Prova questo:
</p>
<pre caption="Stato della batteria">
$ <i>grep capacity /proc/acpi/battery/BAT0/info</i>
design capacity: 47520 mWh
last full capacity: 41830 mWh
</pre>
<p>
Se il valore di "last full capacity" differisce di molto da quello di design capacity,
la tua batteria è probabilmente rotta. Usa la garanzia.
</p>
<p>
<e>D:</e> Non ho trovato una soluzione al mio problema. Cosa faccio?
</p>
<p>
<e>R:</e> Prova a contattarmi direttamente, <mail link="fragfred@gmx.de">Dennis
Nienhüser</mail>.
</p>
</body>
</section>
</chapter>
</guide>
^ permalink raw reply [flat|nested] 39+ messages in thread
end of thread, other threads:[~2012-03-30 0:04 UTC | newest]
Thread overview: 39+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2005-07-16 10:40 [gentoo-docs-it] Aggiornamenti frgrieco
2005-07-19 23:56 ` Stefano Rossi
-- strict thread matches above, loose matches on Subject: below --
2012-03-29 21:54 [gentoo-docs-it] aggiornamenti HUjuice
2007-07-24 8:29 [gentoo-docs-it] Aggiornamenti Francesco Grieco
2007-07-24 11:55 ` Davide Cendron
2007-06-29 14:13 Enrico Morelli
2007-06-29 17:26 ` Davide Cendron
2007-07-02 7:33 ` Enrico Morelli
2006-11-24 10:45 Enrico Morelli
2006-12-11 20:22 ` Marco Mascherpa
2006-07-20 9:54 Enrico Morelli
2006-07-20 18:48 ` Marco Mascherpa
2005-12-21 9:24 Enrico Morelli
2005-12-21 18:47 ` Marco Mascherpa
2005-11-06 11:12 Francesco Grieco
2005-11-07 21:04 ` Marco Mascherpa
2005-10-20 10:29 Enrico Morelli
2005-10-20 22:20 ` Marco Mascherpa
2005-08-29 10:20 il Sasdo
2005-07-19 16:36 [gentoo-docs-it] aggiornamenti micron
2005-07-20 22:35 ` Stefano Rossi
2005-07-19 15:43 [gentoo-docs-it] Aggiornamenti Enrico Morelli
2005-07-20 22:05 ` Stefano Rossi
2005-05-02 10:36 Enrico Morelli
2005-05-04 18:00 ` Stefano Rossi
2005-04-21 22:13 [gentoo-docs-it] aggiornamenti Stefano Rossi
2005-04-11 13:11 [gentoo-docs-it] Aggiornamenti Stefano Rossi
2005-04-11 11:18 ` Dungeon01
2005-04-11 16:53 ` Stefano Rossi
2005-04-11 11:21 ` Dungeon01
2005-04-11 13:00 Stefano Rossi
2005-04-11 11:05 ` Dungeon01
2005-04-11 12:43 Stefano Rossi
2005-04-11 10:59 ` Dungeon01
2005-04-06 11:37 Enrico Morelli
2005-04-10 16:45 ` Marco Mascherpa
2005-04-11 6:12 ` Dungeon01
2005-03-29 16:00 Francesco Grieco
2005-04-03 22:28 ` Stefano Rossi
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox