<!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook V4.1//EN">

<book id="lwce20010827" lang="it">

  <bookinfo>
    <title>LTSP - Linux Terminal Server Project - v3.0</title>

    <authorgroup>
        <author>
           <firstname>James</firstname>
           <surname>McQuillan</surname>
           <affiliation>
              <address><email>jam@LTSP.org</email>
              </address>
           </affiliation>
        </author>
    </authorgroup>

    <revhistory>
       <revision>
         <revnumber>1.0.4&nbsp;</revnumber>
         <date>02-03-2002</date>
         <authorinitials>jam</authorinitials>
       </revision>
    </revhistory>

    <copyright>
        <year>2002</year>
        <holder>James A. McQuillan</holder>
    </copyright>

    <abstract>
       <para>
           Il sistema operativo GNU/Linux e una piattaforma ideale per 
           lutilizzo di piccoli terminali senza disco fisso. Lobbiettivo 
           principale di questo documento e di mostrarti come installare tali
           clients usando LTSP ed inoltre altre utili informazioni sulle 
           workstations senza disco fisso piu in generale.
       </para>
    </abstract>
  </bookinfo>

<preface>
    <title>Introduzione</title>

    <para>
        LTSP fornisce un modo semplice per riutilizzare computers a basso costo
        come terminali grafici o in modo testo collegandoli ad un server
        GNU/Linux.
    </para>

    <para>
        In un moderno ufficio, generalmente I PC utilizzati sono relativamente
        potenti basati su processori Intel o compatibili distribuiti su ogni
        scrivania. Ognuno di essi con alcuni gigabyte di disco fisso. Gli utenti
        memorizzano i loro dati su questi dischi fissi su cui raramente viene
        effettuato il back-up.
    </para>

    <para>
        Siamo veramente certi che abbia senso avere un PC completo su ogni
        scrivania?
    </para>

    <para>
        Noi crediamo di no.
    </para>

    <para>
        Fortunatamente ce unalternativa. Usando LTSP, puoi acquistare PC
        datati, rimuovere il disco fisso, il floppy ed il cdrom, ed aggiungere
        una scheda di rete con supporto per la partenza da rete. Molte schede
        di rete hanno questa caratteristica ed aspettano solo una eeprom per
        partire.
    </para>

    <para>
        Durante la fase di partenza, la workstation (il pc senza disco fisso)
        ottiene il suo indirizzo IP ed il suo kernel dal server e poi monta un
        filesystem tramite la rete ed il protocollo NFS.
    </para>

    <para>
        Questa workstation puo essere configurata in tre modi:
        <itemizedlist>
            <listitem>
                <para><command>Grafica usando X windows</command></para>
                <para>
                    Usando X window, la workstation puo essere usata per
                    lanciare qualsiasi applicazione sul server di partenza, o
                    su qualunque altro server sulla rete.
                </para>
            </listitem>
        </itemizedlist>

        <itemizedlist>
            <listitem>
                <para><command>Testo basato su sessioni telnet</command></para>
                <para>
                    La workstation puo collegarsi in telnet sul server. Ogni
                    sessione sara messa sun un differente schermo virtuale,
                    selezionato tramite la pressione dei tasti ALT+F1 fino a 
                    ALT+F9 per un totale di 9 sessioni separate.
                </para>
            </listitem>
        </itemizedlist>

        <itemizedlist>
            <listitem>
                <para><command>Prompt dei comandi</command></para>
                <para>
                    La workstation ti lascia alla console per debuggare
                    problemi con NFS o con il sistema grafico X windows. 
                    Questa modalita e motlo utile durante la fase di 
                    configurazione per risolvere vari problemi.
                </para>
            </listitem>
        </itemizedlist>
    </para>

    <para>
        La cosa veramente bella e che puoi avere molte workstations che
        funzionano con un unico server GNU/Linux. Quante? Beh, questo dipende
        dalle dimensioni del server e dal tipo di applicazioni usate.
    </para>

    <para>
        Non e raro avere 40 workstations, tutte con Netscape e StarOfficeł
        caricato, che girano con un server equipaggiato con doppio Pentium3 a
        650Mhz ed 1 Gb di ram. Noi sappiamo bene che questa configurazione 
        funziona egregiamente, ed il carico medio va raramente sopra 1.0!
    </para>

    <sect1>
        <title>Dichiarazioni</title>
        <para>
            Ne lautore, ne il distributore, ne altre persone che 
            contribuiscono a questa documentazione sono in alcun modo 
            responsabili per alcun tipo di danno fisico, finanziario, morale o
            in altri tipi di danneggiamento che seguiranno la lettura di questo
            testo.
        </para>
    </sect1>

    <sect1 id="copyright">
        <title>Copyright and Licenze</title>
        <para>
            Questo documento e copyright 2001 di James McQuillan, e viene 
            rilasciato sotto I termini della licenza GNU Free Documentation, 
            che viene quindi incorporata dalla citazione.
        </para>
    </sect1>
</preface>

<chapter>
    <title>Teoria del funzionamento</title>
    <para>
        Far partire una workstation senza disco include molte diverse fasi. 
        Capire cosa sta accadendo mentre si procede rendera piu facile la 
        risoluzione di eventuali problemi, nel caso dovessero sorgere.
    </para>
    <para>
        Questo esempio si basa sulla seguente configurazione:
        <itemizedlist>
            <listitem>
                <para>Una workstation standard basata su processore x86</para>
            </listitem>
            <listitem>
                <para>
                    Scheda di rete Linksys LNE100TX con una eeprom Etherboot
                    installata 
                </para>
            </listitem>
            <listitem>
                <para>Chipset grafico Intel i810</para>
            </listitem>
            <listitem>
                <para>Server con sistema operativo Redhat 7.2</para>
            </listitem>
            <listitem>
                <para>DHCP</para>
            </listitem>
            <listitem>
                <para>Sottorete IP 192.168.0.0/24</para>
            </listitem>
        </itemizedlist>
    </para>

    <para>
    Supponendo che il server abbia il pacchetto LTSP installato, questo e 
    quello che succede:
    </para>

    <orderedlist spacing="normal">
        <listitem>
            <para>
                Quando accendi la workstation, questa iniziera il suo test
                hardware, chiamato POST (Power On Self Test).
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Durante il POST, il bios cerca le eventuali rom di espansione.
                La scheda di rete ne contiene una, la eeprom Etherboot. Il bios
                quindi ne prendera atto.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Una volta che il POST sara terminato, verra eseguito il
                codice Etherboot contenuto nella eeprom.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il codice Etherboot cerchera una scheda di rete. Una volta 
                trovata, questa verra inizializzata.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il codice Etherboot fara quindi una richiesta DHCP sulla rete 
                locale. La richiesta includera il MAC address della scheda di
                rete.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il processo dhcpd sul server leggera la richiesta e cerchera 
                nel suo file di configurazione se e presente un MAC address 
                corrispondente.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il processo dhcpd costruira un pacchetto di risposta contenente
                molte informazioni. Questo pacchetto sara inviato indietro alla
                workstation ed includera:
                <itemizedlist>
                    <listitem>
                        <para>
                            Indirizzo IP per la workstation
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Settaggio NETMASK per la rete locale
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Directory e nome del kernel da scaricare (dal server)
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Directory e nome del filesystem NFS da montare come 
                            root
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Parametri opzionali da passare al kernel, tramite 
                            linterfaccia comandi standard del kernel di Linux.
                        </para>
                    </listitem>
                </itemizedlist>
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il codice Etherboot ricevera la risposta del server, e 
                configurera linterfaccia TCP/IP nella scheda di rete con i 
                parametri ricevuti.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Usando il protocollo TFTP (Trivial File Transfer Protocol), il
                codice Etherboot contattera il server e scarichera il kernel.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Una volta che il kernel sara stato completamente scaricato
                sulla workstation, il codice Etherboot lo mettera nella 
                corretta locazione di memoria.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il controllo viene quindi passato al kernel, che inizializzera
                lintero sistema e tutte le periferiche che potra riconoscere.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Qui comincia il divertimento. Attaccata alla fine del kernel, 
                ce unimmagine di un filesystem. Questa viene caricata in 
                memoria come se fosse un normale ramdisk, e temporaneamente 
                montata come filesystem di root. Un parametro del kernel 
                (root=/dev/ram0) gli dice di montare limmagine come filesystem
                di root.
            </para>
            <para></para>
        </listitem>
                 
        <listitem>
            <para>
                Normalmente, quando il kernel finisce loperazione di boot, 
                viene lanciato il programma <command>init</command>. Ma in 
                questo caso, abbiamo istruito il kernel per fare altrimenti, e 
                lanciare un nostro script, tramite un altro parametro 
                <command>(init=/linuxrc)</command>.
            </para>
            <para></para>
        </listitem>
                
        <listitem>
            <para>
                Lo script <command>/linuxrc</command> esegue una scansione del
                bus PCI cercando una scheda di rete. Ogni volta che ne trova
                una, esso guarda nel file /etc/niclist per vedere se 
                corrisponde. Trovata una corrispondenza, il nome del modulo 
                driver viene stabilito e caricato. Nel caso di schede di rete 
                ISA, questo driver deve essere specificato come parametro del
                kernel, assieme a qualunque parametro aggiuntivo richiesto, 
                come indirizzi IRQ ecc.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il programma <command>dhclient</command> verra quindi eseguito 
                per fare unaltra richiesta al server DHCP. Siamo costretti a 
                fare questa ulteriore richiesta perche la prima viene 
                utilizzata dal kernel, ed inoltre il kernel ignorera qualsiasi
                server NFS specificato dal DHCP. Questo e particolarmente 
                importante nel caso to voglia usare un server NFS diverso dal
                server TFTP.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Quando <command>dhclient</command> riceve una risposta dal 
                server, il file <command>/etc/dhclient-script</command> verra
                eseguito, le informazioni verranno recuperate e la scheda eth0
                verra configurata usando quelle informazioni.
            </para>
            <para></para>
        </listitem>


        <listitem>
            <para>
                Fino ad ora, il filesystem di root e stato un ramdisk. Ora, lo
                script /linuxrc montera un nuovo filesystem su root attraverso
                NFS. La directory che viene esportata per questo scopo e 
                generalmente <command>/opt/ltsp/i386</command>. Ma non puo
                montare semplicemente il nuovo filesystem su /. Deve infatti 
                prima montarlo su /mnt. Eseguira quindi unoperazione chiamata
                <command>pivot_root</command>. pivot_root scambiera il root 
                filesystem corrente con un nuovo filesystem. Quando 
                loperazione sara ultimata, il filesystem NFS sara montato su
                /, ed il vecchio ramdisk su /oldroot.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Ona volta che il filesystem NFS sara montato, il compito di
                /linuxrc sara finito, e potra essere eseguito il vero 
                programma <command>init</command>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Init leggera il file <filename>/etc/inittab</filename> ed 
                iniziera a configurare lambiente della workstation.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Una caratteristica di init e quella della presenza dei 
                cosidetti <emphasis>runlevel</emphasis>. Ogni runlevel fa 
                partire diversi set di servizi per la workstation. Le 
                workstation LTSP partono con runlevel '2'. Questa opzione viene
                settata dalla riga <emphasis>initdefault</emphasis> nel file
                inittab.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Una delle prime cose che inittab fa e lanciare il comando 
                <command>rc.local</command> quando la workstation e nello stato
                '<command>sysinit</command>'.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Lo script rc.local creera un ramdisk di 1mb che dovra
                contenere tutti I files che necessitano di essere modificati 
                durante il normale funzionamento. 
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Questo ramdisk verra montato sulla directory
                <filename class="directory">/tmp</filename>. Ogni file che deve
                essere scritto sara messo qui, ed alcuni links provvederanno a
                far si che questi files si trovino anche nella giusta 
                collocazione della root directory.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Viene montato il filesystem 
                <filename class="directory">/proc</filename>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Se la workstation e stata configurata per eseguire lo swap 
                della ram su NFS, la directory 
                <command>/var/opt/ltsp/swapfiles</command> verra montata su 
                /tmp/swapfiles. Quindi, se qui non e presente nessun file di 
                swap, ne verra automaticamente creato uno. La grandezza di 
                questo file viene stabilita allinterno del file
                <filename>lts.conf</filename>.
            </para>
            <para>
                Il file di swap verra infine abilitato tramite il comando 
                <command>swapon</command>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Linterfaccia di <emphasis role="strong">loopback</emphasis> per
                la rete viene configurata. Questa e la scheda di rete virtuale
                che ha <emphasis>127.0.0.1</emphasis> come suo indirizzo IP.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Se le applicazioni locali sono abilitate, la directory 
                <command>/home</command> verra montata, in modo che le varie
                applicazioni possano accedere alle directory degli utenti.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Alcune directory vengono greate nel filesystem 
                <filename class="directory">/tmp</filename> per contenere alcuni
                files temporanei che sono necessari quando la workstation 
                lavora. Ad esempio:
                <orderedlist>
                    <listitem>
                        <para>
                            <filename>/tmp/compiled</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/run</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/log</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/lock</filename>
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <filename>/tmp/var/lock/subsys</filename>
                        </para>
                        <para></para>
                    </listitem>
                </orderedlist>
            </para>
            <para></para>

            <para>
                verranno tutte create.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il sistema X Windows verra ora configurato. Nel file 
                <command>lts.conf</command>, ce un parametro chiamato 
                <command>XSERVER</command>. Se questo parametro e mancante 
                oppure settato su "<command>auto</command>", verra tentata la
                ricerca automatica della scheda video. Se questa scheda e PCI,
                otterremo il codice PCI Vendor e Device id, e vedremo se questa
                scheda e presente nel file <command>/etc/vidlist</command>.
            </para>
            <para>
                Se la scheda e supportata da XFree86 4.X, la routine pci_scan
                ritornera il nome del modulo driver da caricare. Se la scheda
                e invece solo supportata da XFree86 3.3.6, pci_scan ritornera
                il nome del server X da usare. Lo script rc.local puo 
                distinguere la differenza di questo output poiche I server
                3.3.6 iniziavano tutti con 'XF86_'.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Se viene utilizzato XFree86 4.x, verra richiamato lo script 
                <command>/etc/rc.setupx</command> che genera il file di 
                configurazione XF86Config per X4. Se invece viene usato XFree86
                3.3.6, verra richiamato lo script 
                <command>/etc/rc.setupx3</command> per produrre lo stesso file,
                ma in formato X3.
            </para>
            <para>
                Il file XF86Config verra creato in base alle informazioni
                contenute nel file di configurazione 
                <command>/etc/lts.conf</command>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Quando lesecuzione dello script rc.setupx termina, il controllo
                tornera ad rc.local. Quindi lo script 
                <command>/tmp/start_ws</command> sara creato. Questo script e
                responsabile della partenza corretta del server X.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il file <filename>/tmp/syslog.conf</filename> verra creato. 
                Questo file conterra informazioni che diranno, al processo 
                <command>syslogd</command>, a quale host sulla rete dovra 
                inviare i dati di log. Questo host viene specificato sempre 
                allinterno del file <filename>lts.conf</filename>. Ce un link
                chiamato <filename>/etc/syslog.conf</filename> che punta al file
                <filename>/tmp/syslog.conf</filename>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il processo <command>syslogd</command> viene fatto partire,
                usando il file di configurazione di cui abbiamo parlato nel
                passo precedente.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Il controllo viene passato di nuovo ad <command>init</command>.
                Init guardera al parametro 
                <emphasis role="strong">initdefault</emphasis> per determinare
                in quale <emphasis role="strong">runlevel</emphasis> entrare. A 
                partire da lts_core-2.08, il valore di default e 
                <emphasis role="strong">2</emphasis>.
            </para>
            <para></para>
        </listitem>

        <listitem>
            <para>
                Un runlevel di <emphasis role="strong">2</emphasis> fara 
                partire lo script <command>set_runlevel</command> che leggera
                il file lts.conf per determinare quale sara il vero runlevel 
                nel quale girera la workstation.
            </para>
            <para>
                I runlevels standard in LTSP sono
                <emphasis role="strong">3</emphasis>,
                <emphasis role="strong">4</emphasis> e
                <emphasis role="strong">5</emphasis>.
                <itemizedlist>
                    <listitem>
                        <para>
                            <emphasis role="strong">3</emphasis> - Partira una
                            shell, utile per debuggare problemi vari alla 
                            workstation.
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <emphasis role="strong">4</emphasis> - Partiranno 
                            una o piu sessioni telnet, utile nel caso si stiano
                            sostituendo vecchi terminali testuali.
                        </para>
                        <para></para>
                    </listitem>
                    <listitem>
                        <para>
                            <emphasis role="strong">5</emphasis> - Modalita 
                            grafica (GUI). Verra lanciato X windows, e verra
                            inviata una richiesta XDMCP al server, che portera
                            una finestra di login per permetterti di entrare. 
                            Avrai bisogno di un display manager in ascolto sul
                            server, come ad esempio
                            <emphasis role="strong">XDM</emphasis>,
                            <emphasis role="strong">GDM</emphasis> o
                            <emphasis role="strong">KDM</emphasis>.
                        </para>
                        <para></para>
                    </listitem>
                </itemizedlist>
            </para>
            <para></para>
        </listitem>
    </orderedlist>
    <para></para>
</chapter>

<chapter>
    <title>Installazione di LTSP sul server</title>
    <para>
        Il pacchetto LTSP e disponibile nei formati 
        <emphasis role="strong">RPM</emphasis> e 
        <emphasis role="strong">TGZ</emphasis>. Scegli quello che preferisci e
        segui la sezione appropriata.
    </para>

    <para>
        Se vuoi far girare X windows sulla workstation, sono 4 I pacchetti da
        scaricare. Tieni presente che, per lo scopo di questo documento, abbiamo
        una workstation con una scheda di rete Tulip e un chipset video Intel 
        i810.
            
        <orderedlist>
            <listitem>
                <para>
                    LTSP Core package
                </para>
            </listitem>
            <listitem>
                <para>
                    Kernel package
                </para>
            </listitem>
            <listitem>
                <para>
                    X Core package
                </para>
            </listitem>
            <listitem>
                <para>
                    X Fonts package
                </para>
            </listitem>
        </orderedlist>

        Il pacchetto X Fonts package non e proprio necessario, ma per le 
        prime installazioni e raccomandato. Una volta che avrai fatto pratica
        sui settaggi di server e workstation, potrai settare lX Font Server
        (XFS) sul server.
     </para>

     <para>
        Dopo che i pacchetti sono installati, il sistema LTSP deve essere 
        configurato. Questo vuol dire modificare i files di configurazione in
        modo da abilitare il server ad offrire i servizi necessari alle varie
        workstations.
    </para>

    <sect1>
        <title>Installare la versione RPM</title>
        <para>
            Scarica lultima versione dei pacchetti ltsp ed installali tramite
            i seguenti comandi:
            <programlisting>
rpm -ivh ltsp_core-3.0.0-1.i386.rpm

rpm -ivh ltsp_kernel-3.0.1-1.i386.rpm

rpm -ivh ltsp_x_core-3.0.1-1.i386.rpm

rpm -ivh ltsp_x_fonts-3.0.0-0.i386.rpm</programlisting>
            Questa procedura installera i pacchetti nella directory
            <filename class="directory">/opt/ltsp/i386</filename>.
        </para>
    </sect1>

    <sect1>
        <title>Installare la versione TGZ</title>

        <para>
            Scarica lultima versione dei pacchetti ltsp ed installali tramite
            i seguenti comandi:
            <programlisting>
tar xzf ltsp_core-3.0.0-1-i386.tgz
cd ltsp_core
./install.sh
cd ..

tar xzf ltsp_kernel-3.0.1-1-i386.tgz
cd ltsp_kernel
./install.sh
cd ..

tar xzf ltsp_x_core-3.0.1-1-i386.tgz
cd ltsp_x_core
./install.sh
cd ..

tar xzf ltsp_x_fonts-3.0.0-0-i386.tgz
cd ltsp_x_fonts
./install.sh
cd ..</programlisting>
            Questa procedura installera i pacchetti nella directory
            <filename class="directory">/opt/ltsp/i386</filename>.
        </para>
    </sect1>

    <sect1>
        <title>Configurazione del server</title>
        <para>
            Una volta terminata linstallazione dei pacchetti, devi entrare 
            nella directory 
            <filename class="directory">/opt/ltsp/templates</filename>. Qui ci
            sono diversi files che configureranno I files di sistema allinterno
            del tuo server. Ognuno di questi e responsabile di un file di 
            sistema. Da unocchiata ad ognuno di questi files per essere sicuro
            che concordino con quello che vuoi ottenere. Questi files potrebbero
            rendere il tuo server vulnerabile ad attacchi esterni, quindi
            potresti voler modificare tutti I files a mano. Nel caso invece tu 
            voglia far tutto in automatico, lancia, come utente root, il comando
            ltsp_initialize:

            <programlisting>
cd /opt/ltsp/templates
./ltsp_initialize </programlisting>

            Questo comando ti chiedera alcune informazioni sui servizi che vuoi
            configurare. Esso inizializzera' i seguenti servizi:

            <itemizedlist>
                <listitem>
                    <para>XDM - X Display Manager</para>
                </listitem>
                <listitem>
                    <para>GDM - Gnome Display Manager</para>
                </listitem>
                <listitem>
                    <para>Script di partenza del Display manager</para>
                </listitem>
                <listitem>
                    <para>bootp</para>
                </listitem>
                <listitem>
                    <para>Il file /etc/exports di NFS</para>
                </listitem>
                <listitem>
                    <para>tcpwrappers</para>
                </listitem>
                <listitem>
                    <para>Port mapper</para>
                </listitem>
                <listitem>
                    <para>syslogd</para>
                </listitem>
                <listitem>
                    <para>Script di partenza di TFTP</para>
                </listitem>
            </itemizedlist>
        </para>
    </sect1>

    <sect1>
        <title>Configurazione specifica delle workstations (clients senza 
        disco)</title>
        <para>
            Questo e il momento di dire ad LTSP le caratteristiche delle tue
            workstations. Ci sono tre files che contengono queste informazioni.

            <orderedlist>

                <listitem>
                    <para>/etc/dhcpd.conf</para>
                </listitem>

                <listitem>
                    <para>/etc/hosts</para>
                </listitem>

                <listitem>
                    <para>/opt/ltsp/i386/etc/lts.conf</para>
                </listitem>

            </orderedlist>

        </para>

        <sect2>
            <title>/etc/dhcpd.conf</title>
            <para>
                La workstation ha bisogno del suo indirizzo IP e di altre cose.
                Essa prendera le seguenti informazioni dal server DHCP:
                <itemizedlist>
                    <listitem> <para>indirizzo IP</para> </listitem>
                    <listitem> <para>hostname</para> </listitem>
                    <listitem> <para>indirizzo IP del server</para> </listitem>
                    <listitem> <para>Default gateway</para> </listitem>
                    <listitem> <para>directory e nome del kernel da scaricare</para> </listitem>
                    <listitem> <para>server e directory da montare come 
                               filesystem di root
                               </para> </listitem>
                </itemizedlist>
            </para>
            <para>
                Per il nostro ambiente di esempio, abbiamo scelto DHCP per 
                assegnare questi dati alle workstation.
            </para>
            <para>
                Durante lo script ltsp_initialize , viene installato un file 
                dhcpd.conf desempio. Viene chiamato 
                <filename>/etc/dhcpd.conf.example</filename> e puo essere 
                copiato sopra il file <filename>/etc/dhcpd.conf</filename> come
                base per la tua configurazione reale. Dovrai modificarne solo le
                parti che sono diverse nel tuo caso reale.
                <figure float="1">
                <title>/etc/dhcpd.conf</title>
                <programlisting>
default-lease-time            21600;
max-lease-time                21600;
    
option subnet-mask            255.255.255.0;
option broadcast-address      192.168.0.255;
option routers                192.168.0.254;
option domain-name-servers    192.168.0.254;
option domain-name            "ltsp.org";
option root-path              "192.168.0.254:/opt/ltsp/i386";
    
shared-network WORKSTATIONS {
    subnet 192.168.0.0 netmask 255.255.255.0 {
    }
}
    
group	{
    use-host-decl-names       on;
    option log-servers        192.168.0.254;
    
    host ws001 {
        hardware ethernet     00:E0:18:E0:04:82;
        fixed-address         192.168.0.1;
        filename              "/lts/vmlinuz.ltsp";
    }
} </programlisting>
                </figure>
            </para>

            <para>
                Dalla versione 2.09pre2 di LTSP, non dovrai piu specificare un 
                particolare kernel da scaricare. Il kernel specificato di 
                default abilita gia tutte le schede di rete supportate da 
                Linux. Ci sono due kernels inclusi nel pacchetto LTSP: uno ha la
                patch Linux Progress Patch (LPP) applicata, laltro no. I nomi 
                sono:
                <programlisting>
vmlinuz-2.4.9-ltsp-5
vmlinuz-2.4.9-ltsp-lpp-5 </programlisting>
            </para>
            <para>
                Potrai aver notato che il kernel se ne sta nella directory 
                <filename class="directory">/tftpboot/lts</filename> , ma che
                nel file <filename>/etc/dhcpd.conf</filename> la voce filename
                non presenta la parte iniziale 
                <filename class="directory">/tftpboot</filename>. Questo perche
                dalla Redhat versione 7.1, il servizio TFTP viene lanciato con
                il parametro -s; questo fa si che tftpd parta in modalita
                <emphasis role="strong">sicura</emphasis>, facendo un
                <command>chroot</command> sulla directory 
                <filename class="directory">/tftpboot</filename> prima di 
                partire. Quindi, i file disponibili al servizio tftpd sono solo
                quelli contenuti nella directory 
                <filename class="directory">/tftpboot</filename>.
            </para>
            <para>
                Altre distribuzioni Linux potrebbero non avere questa opzione 
                settata, quindi avrai bisogno di editare il file dhcpd.conf di 
                conseguenza.
            </para>
        </sect2>

        <sect2>
            <title>/etc/hosts</title>
            <para>
                I computers comunicano piuttosto bene usando gli indirizzi IP.
                Ma poi arriviamo noi umani, e mettiamo dei bei nomi sui di essi,
                perche non riusciamo a ricordare gli indirizzi.E qui dove il
                DNS o il file <filename>/etc/hosts</filename> entrano in gioco:
                questo passaggio da indirizzi IP a nomi non e normalmente 
                rischiesto, tranne che in un ambiente LTSP. Questo perche senza
                i nomi, NFS darebbe errori di permesso negato quando la 
                workstation tenta di montare il filesystem di root.
            </para>
            <para>
                Oltre a cio, se la workstation non e elencata nel file 
                <filename>/etc/hosts</filename> , potresti aver problemi anche 
                con i display manager <command>GDM</command> e 
                <command>KDM</command>.
            </para>
        </sect2>

        <sect2>
            <title>/opt/ltsp/i386/etc/lts.conf</title>
            <para>
                Ci sono molte voci che possono essere specificate in questo file.
            </para>

            <para>
                Il file <filename>lts.conf</filename> ha una sintassi molto 
                semplice ed e diviso in piu sezioni. Ce la sezione chiamata
                <command>[default]</command> e ci possono essere tante altre 
                sezioni, una per ogni workstation, identificate attraverso 
                lhostname, lindirizzo IP o il MAC address.
            </para>

            <para>
                Un tipico <filename>lts.conf</filename>:
                <example>
                    <title>lts.conf file</title>
                    <programlisting>
#
# Config file for the Linux Terminal Server Project (www.ltsp.org)
#

[Default]
        SERVER             = 192.168.0.254
        XSERVER            = auto
        X_MOUSE_PROTOCOL   = "PS/2"
        X_MOUSE_DEVICE     = "/dev/psaux"
        X_MOUSE_RESOLUTION = 400
        X_MOUSE_BUTTONS    = 3
        USE_XFS            = N
        LOCAL_APPS         = N
        RUNLEVEL           = 5

[ws001]
        USE_NFS_SWAP       = Y
        SWAPFILE_SIZE      = 48m
        RUNLEVEL           = 5

[ws002]
        XSERVER            = XF86_SVGA
        LOCAL_APPS         = N
        USE_NFS_SWAP       = Y
        SWAPFILE_SIZE      = 64m
        RUNLEVEL           = 3</programlisting>
                </example>
            </para>

            <para>
                Segue un breve elenco di alcune di queste voci:
                <variablelist>
                    <varlistentry>
                        <term><command>XSERVER</command></term>
                        <listitem>
                            <para>
                                Se la tua scheda video e PCI ed e supportata
                                da Xfree86 4.1, avrai solo bisogno del pacchetto
                                lts_x_core. Questo infatti contiene tutti i 
                                drivers disponibili per X4.
                            </para>
                            <para>
                                Ci sono diversi pacchetti di XFree86 3.3.6 
                                disponibili per LTSP, giusto nel caso in cui la
                                tua scheda non sia supportata da XFree86 4.1.
                            </para>
                            <para>
                                Puoi scrivere voci per ognuna delle workstations,
                                o puoi modificare la sezione di default per 
                                interessare tutte le workstations assieme.
                            </para>
                            <para>
                                La nostra workstation di esempio ha un chipset 
                                video Intel i810 che puo essere riconosciuto 
                                automaticamente, quindi non abbiamo bisogno di
                                nessuna voce XSERVER in questo file. Ad ogni
                                modo, la voce XSERVER puo essere specificata 
                                ugualmente, se vuoi, o puo anche essere settata
                                ad auto.
                            </para>
                        </listitem>
                    </varlistentry>

                    <varlistentry>
                        <term><command>RUNLEVEL</command></term>
                        <listitem>
                            <para>
                                Noi vogliamo la modalita grafica, quindi 
                                setteremo questa voce a 5.
                            </para>
                        </listitem>
                    </varlistentry>
                </variablelist>
            </para>
        </sect2>
    </sect1>
</chapter>



<chapter>
    <title>Configurazione delle workstations</title>
    <para>
        Una volta che il server e a posto, e tempo di focalizzare la nostra 
        attenzione sulla workstation.
    </para>
    <para>
        Il pacchetto LTSP riguarda tutto quello che succede dopo che il kernel 
        e entrato in memoria. Ci sono molti modi per far entrare il kernel in 
        memoria, come ad esempio Etherboot, Netboot, PXE e anche il normale 
        floppy disk.
    </para>

    <para>
        Per lo scopo di questo documento useremo un floppy disco contenente il
        codice del progetto <command>Etherboot</command>.
    </para>

    <sect1>
        <title>Creare il dischetto di partenza</title>
        <blockquote><attribution>Ken Yap</attribution>
        <para>
            Etherboot e un pacchetto software per creare immagini ROM che
            possono scaricare codice tramite un collegamento di rete per essere
            eseguito su computers x86. Molte schede di rete hanno uno zoccolo
            dove puo essere installata una eeprom o una ROM. Il codice
            Etherboot puo essere caricato su di essa.
        </para>
        </blockquote>

        <para></para>

        <para>
            Anche Etherboot e Open Source e soggetta alla licenza GNU General
            Public License, Versione 2 (GPL2).
        </para>

        <para>
            Puoi scaricare il pacchetto Etherboot e configurarlo per il tipo di
            rom di cui hai bisogno. Poi, puoi compilarne i sorgenti per produrre
            unimmagine rom chepuo essere scritta in una eeprom o direttamente
            su un floppy disk per scopi di test.
        </para>

        <para>
            Unalternativa molto piu semplice e andare al sito di Marty Connor
            <ulink url="http://www.rom-o-matic.net"><citetitle>www.Rom-O-Matic.net</citetitle></ulink>.
        </para>

        <para>
            Marty ha fatto un lavoro eccellente mettendo a disposizione un sito 
            web che compila in modo automatico I sorgenti di Etherboot e 
            fornisce limmagine della rom gia pronta. Su questo sito, tu 
            selezioni il tipo di scheda di rete ed il tipo di immagine che vuoi;
            poi si possono modificare altre opzioni. Quindi, premendo sul 
            bottone 'Get ROM' limmagine potra essere scaricata dopo pochi 
            istanti.
        </para>

        <para>
            La nostra workstation ha una scheda di rete Linksys LNE100TX, 
            versione 4.1. Questa scheda ha un chipset ADMTek Centaur-P, quindi
            selezioniamo dal sito la scheda tipo 
            <emphasis role="strong">centaur-p</emphasis>.
        </para>

        <para>
            Non abbiamo bisogno di fare altri cambiamenti alla configurazione di
            default, quindi passiamo oltre.
        </para>

        <para>
            Per quanto riguarda il tipo di formato, selezioneremo 'Floppy
            Bootable ROM Image'. Questo formato inizia con una testata di 512
            byte contenente il codice per caricare Etherboot in memoria quando
            eseguito.
        </para>

        <para>
            Premiamo ora il tasto 'Get ROM'. In pochi secondi limmagine verra
            generata e si aprira la finestra di dialogo per salvare limmagine
            sul nostro disco fisso.
        </para>

        <para>
            Solitamente, io salvo il file nella directory
            <filename class="directory">/tmp</filename>. Quindi per questa
            immagine, specifico qualcosa come:
            <filename>/tmp/eb-5.0.2-centaur-p.lzdsk</filename>
        </para>

        <para>
            Una volta salvata, dovrai scrivere limmagine sul floppy disk:
            inserisci quindi un dischetto vuoto nel drive e lancia il seguente
            comando:
            <programlisting>
cat   /tmp/eb-5.0.2-centaur-p.lzdsk > /dev/fd0 </programlisting>
        </para>

    </sect1>

</chapter>

<chapter>
    <title>Usare la workstation</title>
    <para>
        Supponendo che il server e la workstation siano configurati 
        correttamente, tutto quello che ce da fare sarebbe inserire il 
        dischetto nel drive della workstation ed accenderla.
    </para>

    <para>
        Il codice Etherboot sara letto dal froppy e trasferito in memoria, la 
        scheda di rete verra riconosciuta ed inizializzata, la richiesta dhcp
        verra inviata sulla rete ed una risposta tornera dal server e il 
        kernel verra scaricato alla workstation. Una volta che il kernel avra
        inizializzato lhardware della workstation, Xwindow partira e la
        finestra della login dovrebbe apparire sulla workstation come lesempio
        sottostante riporta.
    </para>

    <figure><title>Schermata di login</title>
        <GRAPHIC FILEREF="ltsplogin1.gif"
                 FORMAT="GIF"
                 SRCCREDIT="James McQuillan, 2001" >
    </figure>

    <para>
        A questo punto puoi entrare. Una cosa importante da tenere a mente e
        che tu stai entrando tramite login nel server. Tutti i comandi che
        imposti vengono eseguiti sul server e mostrano il loro output sul 
        monitor della workstation. Questa e la potenza di X windows.
    </para>

    <para>
        Puoi eseguire qualunque programma supportato dal server.
    </para>

</chapter>

<chapter>
    <title>Stampa</title>
    <para>
        Oltre alla funzionalita di terminale grafico o testo, la workstation
        puo funzionare anche come print server, permettendo allutente di 
        collegare fino a tre stampanti seriali o parallele.
    </para>

    <para>
        Questa funzionalita e completamente trasparente, in termini di
        prestazioni, allutente, che non notera nemmeno il piccolo traffico di
        rete con il server.
    </para>

    <sect1>
        <title>Settaggi sul client</title>

        <para>
            LTSP ustilizza il programma <command>lp_server</command> sulla 
            workstation per redirigere le stampe dal server alla stampante 
            collegata alla workstation.
        </para>

        <para>
            Per abilitare la stampante sulla workstation, ci sono un set di voci
            da inserire allinterno del file <command>lts.conf</command>.
            <programlisting>
[ws001]
    PRINTER_0_DEVICE = /dev/lp0
    PRINTER_0_TYPE   = P </programlisting>
            Lesempio qui riportato fara partire il programma lp_server come 
            servizio, il quale ascoltera sulla porta TCP/IP 9100, in attesa di
            una stampa dal server. I dati di stampa saranno convogliati sulla 
            porta parallela /dev/lp0.
        </para>

        <para>
            Ci sono molte altre opzioni disponibili. Controlla la sezione sul
            file lts.conf piu avanti in questo documento per ulteriori
            informazioni sulla configurazione delle stampanti.
        </para>
    </sect1>

    <sect1>
        <title>Settaggi sul server</title>

        <para>
            Configurare la stampante sul server si riduce a definire la coda di
            stampa, utilizzando gli strumenti di configurazione gia presenti 
            sul server.
        </para>

        <para>
            In Redhat 7.2, ci sono sia strumenti grafici che testuali. Lo 
            strumento grafico e chiamato <command>printconf-gui</command>, 
            mentre quello testuale <command>printconf-tui</command>. Versioni
            meno recenti di Redhat avevano un programma chiamato 
            <command>printtool</command>. Questo esiste ancora anche in Redhat
            7.2, ma serve solo a richiamare printconf-gui. Altre distribuzioni
            di Linux hanno altri software.
        </para>

        <figure>
            <title>Il software printconf-gui mentre si aggiunge una stampante</title>
            <GRAPHIC FILEREF="printconf-gui-add.gif"
                     FORMAT="GIF"
                     SRCCREDIT="James McQuillan, 2001" >
        </figure>

        <para>
            Una volta lanciato il software di configurazione per la stampante,
            devi ovviamente aggiungerne una. Il programma lp_server permette 
            alla workstation di emulare un server HP JetDirect. Tu dovrai quindi
            creare solamente una normale stampante <command>JetDirect</command>.
        </para>

        <para>
            Inoltre, dovrai dare un nome alla coda di stampa; questo puo essere
            un nome di pura fantasia, ma dandone uno sensato sara piu facile
            da gestire in futuro. In piu il nome puo contenere solo i 
            seguenti caratteri:
            <itemizedlist>
                <listitem>
                    <para>
                        <computeroutput>
                            "a-z"  lettere minuscole
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "A-Z"  lettere maiuscole
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "0-9"  numeri
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "-"    &nbsp;&nbsp;simbolo di sottrazione
                        </computeroutput>
                    </para></listitem>
                <listitem>
                    <para>
                        <computeroutput>
                            "_"    &nbsp;&nbsp;underscore
                        </computeroutput>
                    </para></listitem>
            </itemizedlist>
        </para>
        <para>
            Il nome usato nel nostro esempio e <command>ws001_lp</command>. 
            Questo nome permette di identificare semplicemente la stampante 
            collegata alla workstation <command>ws001</command>.
        </para>

        <figure>
            <title>Informazioni di Printconf-gui</title>
            <GRAPHIC FILEREF="printconf-gui-detail.gif"
                     FORMAT="GIF"
                     SRCCREDIT="James McQuillan, 2001" >
        </figure>
        <para>
            Ci sono due campi richiesti per comunicare con la stampante:
            <orderedlist>
                <listitem>
                    <para>
                        Indirizzo IP o hostname della workstation dove e
                        collegata la stampante.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        La porta TCP dove il servizio 
                        <command>lp_server</command> sta ascoltando per le
                        stampe.
                    </para>
                    <para>
                        La prima stampante collegata alla workstation prende 
                        la porta <command>9100</command>, la seconda prende
                        <command>9101</command>, la terza <command>9102</command>.
                    </para>
                </listitem>
            </orderedlist>
        </para>
    </sect1>

</chapter>

<chapter>
    <title>Soluzione dei problemi</title>
    <para>
        Se seguendo tutte le istruzioni la workstation non dovesse partire, 
        dovrai iniziare la fase di debug dellinstallazione.
    </para>

    <para>
        La prima cosa da fare e capire fino a che punto del processo di
        partenza e arrivata la tua workstation prima di incontrare problemi.
    </para>

    <sect1>
        <title>Problemi con limmagine del dischetto di partenza</title>
        <para>
            Quando esegui la partenza tramite il dischetto, dovresti vedere 
            qualcosa come questo:
        </para>
        <para>
        <screen>
loaded ROM segment 0x0800 length 0x4000 reloc 0x9400
Etherboot 5.0.1 (GPL) Tagged ELF for [LANCE/PCI]
Found AMD Lance/PCI at 0x1000, ROM address 0x0000
Probing...[LANCE/PCI] PCnet/PCI-II 79C970A base 0x1000, addr 00:50:56:81:00:01
Searching for server (DHCP)...
&#60;sleep&#62; </screen>
        </para>
        <para>
            Lesempio qui riportato mostra quello che dovresti aspettarti sullo
            schermo quando parti da un floppy disk. Se non vedi questi messaggi
            che segnalano la partenza di Etherboot, potresti avere un floppy
            difettoso, oppure limmagine non e stata scritta correttamente.
        </para>

        <para>
        Se invece vedi un messaggio simile al seguente, limmagine che hai usato
        non e quella corretta per la tua scheda di rete.
        <screen>
ROM segment 0x0800 length 0x8000 reloc 0x9400
Etherboot 5.0.2 (GPL) Tagged ELF for [Tulip]
Probing...[Tulip]No adapter found
&#60;sleep&#62;
&#60;abort&#62; </screen>
        </para>

        <para>
            Se invece arriviamo fino al punto in cui ci viene mostrato il MAC
            address della scheda di rete, il floppy e probabilmente a posto.
        </para>
 
    </sect1>

    <sect1>
        <title>Problemi con il DHCP</title>
        <para>
            Una volta che la scheda di rete e stata inizializzata, verranno 
            inviate le richieste DHCP sulla rete, per cercare il server.
        </para>

        <para>
            Se la workstation ottiene una risposta valida dal server DHCP, 
            configurera la scheda di rete di conseguenza. Puoi capire se tutto
            funziona quando vedi il settaggio di rete sul monitor. Qui ce un 
            esempio di quello che dovresti vedere:
            <screen>
ROM segment 0x0800 length 0x4000 reloc 0x9400
Etherboot 5.0.1 (GPL) Tagged ELF for [LANCE/PCI]
Found AMD Lance/PCI at 0x1000, ROM address 0x0000
Probing...[LANCE/PCI] PCnet/PCI-II 79C970A base 0x1000, addr 00:50:56:81:00:01
Searching for server (DHCP)...
&#60;sleep&#62;
Me: 192.168.0.1, Server: 192.168.0.254, Gateway 192.168.0.254 </screen>
            Se vedi una linea che inizia con 'Me:' seguito da unindirizzo IP,
            saprai che il sistema DHCP sta funzionando bene. Puoi procedere per
            vedere se funziona altrettanto bene il sistema TFTP.
        </para>

        <para>
            Se invece vedi il messaggio seguente sulla workstation, seguito da
            molti &#60sleep&#62, qualcosa e andato storto. Potrebbe essere
            normale vedere uno o due &#60sleep&#62, ma non di piu.
            <screen>
Searching for server (DHCP)...  </screen>
        </para>

        <para>
            Sapere cosa non sta funzionando non e sempre facile, ma qui ci sono
            un po di cose da controllare per facilitarti il compito.
        </para>
            <sect2>
                <title>Controllare le connessioni</title>
                <para>
                    La workstation e fisicamente collegata alla stessa rete
                    del server?
                </para>
                <para>
                    Quando la workstation e accesa, assicurati che le varie 
                    spie che indicano il collegamento fisico siano accese, sia 
                    sulla workstation stessa, sia su eventuali hubs.
                </para>

                <para>
                    Se workstation e server sono collegati direttamente, 
                    assicurati che il cavo utilizzato sia invertente 
                    (cross-over). Se invece usi hubs o switch, assicurati di 
                    usare cavi pin-to-pin, ossia non invertenti.
                </para>

            </sect2>

            <sect2>
                <title>Il processo dhcpd e attivo?</title>
                <para>
                    Devi essere sicuro se il processo <command>dhcpd</command>
                    sia attivo o meno sul server; possiamo saperlo in un paio di
                    modi.
                </para>

                <para>
                    Normalmente, il processo <command>dhcpd</command> funziona 
                    in backgroung, in ascolto sulla porta udp 67. Prova ad usare
                    il comando <command>netstat</command> per vedere se qualcosa
                    sta effettivamente ascoltando su quella porta:
                    <programlisting>
netstat -an | grep ":67 " </programlisting>
                    Dovresti vedere qualcosa di simile a questo:
                    <programlisting>
udp     0    0   0.0.0.0:67         0.0.0.0:*</programlisting>
                    La quarta colonna contiene lindirizzo IP e la porta 
                    separati da un simbolo (:). Un indirizzo formato da quattro
                    zeri ('0.0.0.0') indica che il processo ascolta su tutti gli
                    indirizzi disponibili, cioe se si hanno 2 o piu interfacce
                    di rete, questo ascolta su tutte contemporaneamente.
                </para>

                <para>
                    Comunque, solo perche netstat dice che qualcosa ascolta 
                    sulla porta udp 67, non vuol dire che sia proprio il 
                    processo <command>dhcpd</command> a farlo. Potrebbe essere
                    ad esempio il processo <command>bootpd</command>, anche se 
                    questo e piuttosto improbabile, poiche non viene piu 
                    inserito nelle distribuzioni Linux da tempo.
                </para>

                <para>
                    Per essere sicuri che sia proprio <command>dhcpd</command> a
                    girare, prova ad utilizzare il comando <command>ps</command>.
                    <programlisting>
ps aux | grep dhcpd </programlisting>

                    Dovresti vedere qualcosa come:

                    <programlisting>
root 23814 0.0 0.3 1676 820 ?      S 15:13 0:00 /usr/sbin/dhcpd
root 23834 0.0 0.2 1552 600 pts/0  S 15:52 0:00 grep dhcp </programlisting>

                    La prima riga indica che il processo
                    <command>dhcpd</command> sta effettivamente girando, mentre
                    la seconda rappresenta solamente il comando
                    <command>grep</command> appena lanciato.
                </para>

                <para>
                    Se non vedi alcuna riga che dimostra che il dhcpd sta girando,
                    devi controllare che il tuo server sia configurato per il
                    runlevel 5, e che il <command>dhcpd</command> parta in questo
                    runlevel. Su sistemi Redhat, puoi usare <command>ntsysv</command>
                    per controllare che il <command>dhcpd</command> sia configurato
                    per partire.
                </para>

                <para>
                    Puoi provare a far partire <command>dhcpd</command> a mano
                    con questo comando:
                    <programlisting>
service dhcpd start</programlisting>

                    Fa attenzione al suo output, in quento potrebbe mostrare
                    errori.
                </para>

            </sect2>

            <sect2>
                <title>Controlla due volte la configurazione DHCP...</title>
                <para>
                    Nel file <filename>/etc/dhcpd.conf</filename> e presente
                    una voce per la tua workstation?
                </para>
                <para>
                    Dovresti anche controllare bene il parametro 'fixed-address'
                    nel file di configurazione, per essere sicuro che 
                    corrisponda al MAC address della tua scheda di rete.
                </para>
            </sect2>
           
            <sect2>
                <title>E ipchains o iptables a bloccare le richieste?</title>
                <sect3>
                    <title>Controllare ipchains</title>
                    <para>
                        Lancia il seguente comando per vedere cosa esce:
                        <programlisting>
ipchains -L -v </programlisting>
                        Se vedi qualcosa come:
                        <programlisting>
Chain input (policy ACCEPT: 229714 packets, 115477216 bytes):
Chain forward (policy ACCEPT: 10 packets, 1794 bytes):
Chain output (policy ACCEPT: 188978 packets, 66087385 bytes): </programlisting>
                        significa che non e ipchains a bloccare le richieste.
                    </para>
                </sect3>
                <sect3>
                    <title>Controllare iptables</title>
                    <para>
                        Lancia il seguente comando:
                        <programlisting>
iptables -L -v </programlisting>
                        Se vedi qualcosa come questo:
                        <programlisting>
Chain INPUT (policy ACCEPT 18148 packets, 2623K bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination

Chain OUTPUT (policy ACCEPT 17721 packets, 2732K bytes)
 pkts bytes target     prot opt in     out     source               destination</programlisting>
                        significa che non e iptables a bloccare le richieste.
                    </para>
                </sect3>
            </sect2>
           
            <sect2>
                <title>La workstation manda le richieste?</title>
                <para>
                    Prova a controllare il file 
                    <filename>/var/log/messages</filename> mentre la workstation
                    esegue il boot; puoi farlo con questo comando:
                    <programlisting>
tail -f /var/log/messages </programlisting>
                    Tail terra sottocchio il file di log mentre viene 
                    aggiornato in tempo reale.
                    <programlisting>
server dhcpd: DHCPDISCOVER from 00:50:56:81:00:01 via eth0
server dhcpd: no free leases on subnet WORKSTATIONS
server dhcpd: DHCPDISCOVER from 00:50:56:81:00:01 via eth0
server dhcpd: no free leases on subnet WORKSTATIONS </programlisting>
                    Se vedi messaggi come questi, che dicono 'no free leases',
                    significa che il <command>dhcpd</command> sta girando, ma 
                    non ha informazioni riguardo la workstation che richiede
                    lindirizzo IP.
                </para>
            </sect2>
           
    </sect1>

    <sect1>
        <title>Problemi con TFTP</title>
        <para>
            Il software Etherboot utilizza TFTP per scaricare il kernel Linux
            dal server. Questo protocollo e semplice, ma alcune volte ci sono
            problemi a farlo funzionare.
        </para>

        <para>
            Se vedi messaggi come questo:
        <screen>
Loading 192.168.0.254:/lts/vmlinuz-2.4.9-ltsp-5 | </screen>
          con lultimo carattere sulla linea che cambia da | a \ e ancora a
          /, formando quella che sembrerebbe una barra rotante, vuol dire che
          il kernel e in fase di scaricamento. Che a sua volta significa che
          TFTP sta funzionando bene.
        </para>

        <para>
          Se invece non vedi la barra ruotare, ci sono dei problemi, che possono
          includere:
        </para>

        <sect2>
            <title>Il processo <command>tftpd</command> non e attivo</title>
            <para>
                Su Redhat 7.1, tftp viene eseguito da <command>xinetd</command>.
                Ce uno script per la partenza chiamato
                <filename>/etc/xinetd.d/tftp</filename> che contiene
                informazioni per la partenza di <command>tftpd</command>
            </para>
        </sect2>

        <sect2>
            <title>Il kernel non e' dove tftpd se laspetta</title>
            <para>
                Il kernel deve essere messo in un punto dove tftpd possa avere
                accesso. Se viene specificata lopzione -s per il
                <command>tftpd</command>, qualunque file richiesto deve trovarsi
                allinterno della directory
                <filename class="directory">/tftpboot</filename>. Quindi, se
                lopzione <command>filename</command> nel file
                <filename>/etc/dhcpd.conf</filename> e settata a
                <filename>/lts/vmlinuz-2.4.9-ltsp-5</filename>, il kernel deve
                trovarsi in <filename>/tftpboot/lts/vmlinuz-2.4.9-ltsp-5</filename>
            </para>
        </sect2>
    </sect1>

<!--
    <sect1>
        <title>Troubleshooting Kernel</title>
        <para>
            If you are using one of the standard LTSP supplied kernels, then
            about the only thing that you really need to look out for is that
            you are using the correct kernel that matches your hardware.  Most
            important is that the kernel knows about your network card.
        </para>

        <para>
            The standard LTSP kernel, called <command>vmlinuz.ltsp</command>
            knows about all supported network cards.
        </para>

        <para>
            A real good indicator that you are using the wrong kernel is
            messages like the following:
            <screen>
.
.
.
RAM disk driver initialized:  16 RAM disks of 1024K size
IP-Config: No Network devices available
Root-NFS: No NFS server available, giving up.
VFS: Unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device 02:00
Kernel panic: VFS: Unable to mount root fs on 02:00 </screen>
            Many people are thrown off by the "NFS" error and they miss
            the <command>No Network devices available</command> message.  That
            is the key to the problem.  The kernel  probed for known network
            cards, and didn't find any.  Keep in mind that the kernels are
            compiled with support for specific network cards.
            (Except the vmlinuz.all kernel, which contains support for ALL
            known cards).
        </para>
    </sect1>
-->

    <sect1>
        <title>Problemi con il filesystem di root NFS</title>
        <para>
            Ci sono molte cose che potrebbero impedire al filesystem di root di
            essere montato; alcune sono:
        </para>
        <sect2>
            <title>Messaggio No init found</title>
            <para>
                Se ottieni il seguente messaggio derrore:
                <screen>
Kernel panic: No init found.  Try passing init= option to kernel.  </screen>
                e probabile che tu stia montando la directory sbagliata, o che
                la directory <filename>/opt/ltsp/i386</filename> sia vuota.
            </para>
        </sect2>

        <sect2>
            <title>Il server da un errore -13</title>
            <para>
                Se ottieni:
                <screen>
Root-NFS: Server returned error -13 while mounting /opt/ltsp/i386 </screen>
                questo indica che la directory
                <filename class="directory">/opt/ltsp/i386</filename> non
                e inclusa nel file <filename>/etc/exports</filename>.
            </para>
            <para>
                Prova a guardare nel file <filename>/var/log/messages</filename>
                per vedere se puoi scoprire qualcosa. Una linea come questa:
                <screen>
Jul 20 00:28:39 jamlap rpc.mountd: refused mount request from ws004
                  for /opt/ltsp/i386 (/): no export entry </screen>
                conferma i nostri sospetti che il file
                <filename>/etc/exports</filename> non sia corretto.
            </para>
        </sect2>

        <sect2>
            <title>Problemi con i processi NFS (portmap, nfsd & mountd)</title>
            <para>
                Il servizio NFS puo essere difficile da correggere, ma capendo
                cosa deve essere regolato e quali strumenti abbiamo per farlo
                rendera la diagnosi piu facile.
            </para>
            <para>
                Ci sono tre processi che devono essere attivi per far si che NFS
                funzioni correttamente:  <command>portmap</command>,
                <command>nfsd</command> e <command>mountd</command>.
            </para>
            <sect3>
                <title>Il Portmapper (portmap)</title>
                <para>
                    Se ottieni un messaggio come questo:
                    <screen>
Looking up port of RPC 100003/2 on 192.168.0.254
portmap: server 192.168.0.254 not responding, timed out
Root-NFS: Unable to get nfsd port number from server, using default
Looking up port of RPC 100005/2 on 192.168.0.254
portmap: server 192.168.0.254 not responding, timed out
Root-NFS: Unable to get mountd port number from server, using default
mount: server 192.168.0.254 not responding, timed out
Root-NFS: Server returned error -5 while mounting /opt/ltsp/i386
VFS: unable to mount root fs via NFS, trying floppy.
VFS: Cannot open root device "nfs" or 02:00
Please append a correct "root=" boot option
Kernel panic: VFS: Unable to mount root fs on 02:00 </screen>
                    e molto probabile che il processo <command>portmap</command>
                    non sia attivo. Puoi ottenere una conferma con il comando
                    <command>ps</command>:
                    <screen>
ps -e | grep portmap </screen>
                    Se il processo e attivo, dovresti vedere qualcosa come:
                    like this:
                    <screen>
30455 ?        00:00:00 portmap </screen>
                    Unaltro test consiste nellusare <command>netstat</command>.
                    Il portmapper usa le porte TCP e UDP 111. Prova a lanciare:
                    <screen>
netstat -an | grep ":111 " </screen>
                    Dovresti vedere qualcosa come:
                    <screen>
tcp   0   0 0.0.0.0:111       0.0.0.0:*          LISTEN
udp   0   0 0.0.0.0:111       0.0.0.0:*                           </screen>
                    Se non vedi queste righe, il portmap non e attivo. Puoi 
                    farlo partire cosi:
                    <screen>
/etc/rc.d/init.d/portmap   start </screen>
                    Quindi, assicurati che il processo sia configurato per
                    partire automaticamente allavvio del server, usando
                    <command>ntsysv</command>.
                </para>
            </sect3>

            <sect3>
                <title>I processi  NFS e MOUNT (nfsd & mountd)</title>
                <para>
                    NFS ha 2 processi che devono essere attivi: 
                    <command>nfsd</command> e <command>mountd</command> e sono
                    tutti e due lanciati dallo script 
                    <filename>/etc/rc.d/init.d/nfs</filename>.
                </para>
                <para>
                    Puoi utilizzare il comando <command>ps</command> per sapere
                    se sono attivi.
                    <screen>
ps -e | grep nfs
ps -e | grep mountd </screen>
                    Se questo mostra che uno o entrambi i processi non sono
                    attivi, devi farli partire.
                </para>

                <para>
                    Solitamente, i processi vengono fatti partire richiamando
                    il loro init script con lopzione <command>restart</command>,
                    ma per qualche ragione lo script 
                    <filename>/etc/rc.d/init.d/nfs</filename> non fa ripartire
                    <command>nfsd</command> se usato in questo modo (bug?).
                    Quindi dovrai usare questa serie di comandi:
                    <screen>
/etc/rc.d/init.d/nfs  stop
/etc/rc.d/init.d/nfs  start </screen>
                    Potresti vedere degli errori durante il comando di 
                    <command>stop</command>, ma e tutto normale. Il comando di 
                    <command>start</command> dovrebbe mostrare un 
                    <command>OK</command> come risultato.
                </para>

                <para>
                    Se i processi stanno girando ma NFS ancora non funziona, 
                    puoi verificare che essi si siano registrati correttamente
                    con il portmapper usando il comando 
                    <command>rpcinfo</command>.
                    <screen>
rpcinfo -p localhost </screen>
                    Dovresti vedere quanto segue:
                    <screen>
program vers proto   port
 100000    2   tcp    111  portmapper
 100000    2   udp    111  portmapper
 100011    1   udp    856  rquotad
 100011    2   udp    856  rquotad
 100005    1   udp   1104  mountd
 100005    1   tcp   2531  mountd
 100005    2   udp   1104  mountd
 100005    2   tcp   2531  mountd
 100003    2   udp   2049  nfs </screen>
                    Questo indica che <command>nfs</command> (nfsd) e 
                    <command>mountd</command> sono entrambi attivi ed hanno 
                    registrato se stessi con il portmapper.
                </para>
            </sect3>
        </sect2>
    </sect1>

    <sect1>
        <title>Problemi con lXserver</title>
        <para>
            Oh ragazzi, probabilmente la parte piu difficile nel settare una
            workstation LTSP e riuscire a far funzionare correttamente lX 
            server. Se la tua scheda video e relativamente nuova, ed e 
            supportata da XFree86, e anche il tuo monitor e nuovo e puo
            gestire molte risoluzioni anche grandi, settare X dovrebbe essere
            abbastanza semplice. Normalmente, se anche cosi X non funziona,
            probabilmente hai scelto lX server sbagliato per la tua scheda 
            video.
        </para>
        <para>
            Quando un X server non va con la tua scheda video, e abbastanza 
            evidente: esso infatti puo non partire proprio, oppure visualizzare
            cose non corrette.
        </para>
        <para>
            Quando la workstation e pronta a far partire lX server, esegue lo
            script <filename>/tmp/start_ws</filename> che lo lancia in locale,
            con unopzione <command>-query</command> puntata al server dove il
            display manager, come <command>XDM</command>, <command>GDM</command>
            o <command>KDM</command>, sta girando.
        </para>

        <para>
            Siccome lX server viene fatto partire dallo script 
            <filename>start_ws</filename>, che e a sua volta lanciato dal 
            programma <command>init</command>, quando dovesse non funzionare,
            <command>init</command> cerchera di farlo ripartire.
            <command>init</command> ci riprovera per 10 volte e poi rinuncera,
            perche pensera che questo processo riparte un po troppo spesso
            per essere tutto normale. Dopo di che il messaggio derrore dellX 
            server dovrebbe rimanere sul video.
        </para>

        <para>
            Aspettare che lX server si chiuda e riparta per 10 volte puo dare
            fastidio; un metodo semplice per evitarlo e quello di partire con
            un runlevel 3 che non fa partire X in automatico e una volta giunti
            al prompt <command>bash</command>, possiamo far partire X in manuale
            con il seguente comando:
            <screen>
sh  /tmp/start_ws </screen>
            LX server provera a partire e, quando fallira, ritornerai al
            prompt bash, dove potrai vedere per quale ragione si e fermato.
        </para>
    </sect1>

    <sect1>
        <title>Problemi con il Display manager</title>
        <para>
            Il display manager e il processo che gira sul server in attesa di 
            un X server che si colleghi. Una volta stabilito il contatto, esso 
            mostra una finestra di login sullo schermo dando la possibilita 
            allutente di entrare nel server.
        </para>

        <para>
            I display managers piu usati sono:
            <itemizedlist>
                <listitem>
                    <para>
                        XDM - E in giro da sempre ed e incluso con il sistema
                        X standard.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        GDM - Il 'Gnome Display Manager'. Fa parte del pacchetto
                        Gnome.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        KDM - Il 'KDE Display Manager'. Fa parte del sistema K
                        Desktop.
                    </para>
                </listitem>
            </itemizedlist>
            La maggior parte delle recenti distribuzioni di GNU/Linux li 
            includono tutti e tre.
        </para>

        <sect2>
            <title>Schermo grigio con un grosso cursore a forma di X</title>
            <para>
                Questo significa che lX server e attivo, ma non e stato in
                grado di contattare il display manager. Alcune ragioni possono 
                essere:
                <orderedlist>
                    <listitem>
                        <para>
                            Il display manager potrebbe non essere attivo
                        </para>
                        <para>
                            Su versioni recenti di Redhat (7.1 e superiori), il
                            display manager e lanciato da
                            <command>init</command>. Nel file
                            <filename>/etc/inittab</filename> ce una linea che
                            riporta:
                            <screen>
x:5:respawn:/etc/X11/prefdm -nodaemon </screen>
                            Lo script <command>prefdm</command> determinera
                            quale display manager lanciare.
                        </para>

                        <para>
                            Il display manager di default dipende dai pacchetti
                            installati. Se Gnome e installato, GDM sara il
                            display manager di default. Se invece Gnome non e
                            installato, lo script prefdm controllera se KDE e
                            installato, lanciando in caso positivo KDM. Se
                            nemmeno KDE non e presente, XDM sara il display
                            manager di default.
                        </para>

                        <para>
                            Usando il comando <command>netstat</command>,
                            dovresti essere in grado di vedere il display
                            manager in uso. Sul server, lancia il comando:
                            <screen>
netstat -ap | grep xdmcp </screen>
                            Dovresti vedere un processo che ascolta sulla porta
                            xdmcp (177).
                            <screen>
udp     0   0 *:xdmcp            *:*               1493/gdm </screen>
                            Questo mostra chiaramente che <command>gdm</command>
                            sta girando con un numero di processo 1493, e che
                            sta ascoltando sulla porta xdmcp.
                        </para>

                        <para>
                            Se vedi una riga come quella, che dimostra che 
                            sicuramente il display manager e in ascolto, ed hai
                            ancora problemi, devi essere sicuro che la 
                            workstation invii le richieste XDMCP in modo
                            corretto.
                        </para>

                        <para>
                            Nel file <filename>lts.conf</filename>, devi avere 
                            una voce che indica lindirizzo IP del server dove
                            gira il display manager:
                            <screen>
XDM_SERVER  =  192.168.0.254 </screen>
                            Naturalmente, questo e un esempio. Il tuo server
                            potrebbe infatti avere un indirizzo diverso.
                        </para>

                        <para>
                            Se questa voce non e presente, verra utilizzato
                            lindirizzo nella voce 'SERVER' , se presente.
                            Altrimenti, verra usato lindirizzo fisso 
                            <command>192.168.0.254</command>.
                        </para>

                        <para>
                            In qualunque modo esso sia specificato, sevi
                            assicurarti che lindirizzo IP del server sia 
                            corretto e che corrisponda al server dove gira il
                            display manager.
                        </para>
                    </listitem>
                    <listitem>
                        <para>
                            Il display manager potrebbe essere configurato per 
                            ignorare richieste da hosts remoti.
                        </para>

                        <para>
                            Se sei sicuro che il display manager sia attivo, e
                            possibile che questo sia configurato per ignorare le
                            richieste XDMCP provenienti da hosts remoti. Dovrai
                            quindi controllare i files di configurazione del tuo
                            display manager.
                        </para>

                        <itemizedlist>
                            <listitem>
                                <para><command>XDM</command></para>
                                <para>
                                    La configurazione di default su Redhat e di
                                    disabilitare il login remoto tramite XDM. Lo
                                    script <command>ltsp_initialize</command> lo
                                    abilitera per te, ma se non dovesse 
                                    funzionare, dovresti controllare il file 
                                    <filename>/etc/X11/xdm/xdm-config</filename>.
                                    Cerca una riga che assomigli a questa:
                                    <screen>
DisplayManager.requestPort:     0 </screen>
                                    Questa riga DEVE essere commentata per far
                                    in modo che XDM possa accogliere richieste 
                                    esterne sulla porta 177.
                                </para>
                                <para>
                                    Unaltro file altrettanto importante per XDM
                                    e <filename>/etc/X11/xdm/Xaccess</filename>,
                                    che deve contenere una linea che inizia con
                                    un asterisco *. Il file normalmente
                                    contiene gia una riga con lasterisco, ma 
                                    viene commentata per motivi di sicurezza. Al
                                    solito, lo script 
                                    <command>ltsp_initialize</command> dovrebbe
                                    scommentare la riga per te, ma se XDM non
                                    funziona, controlla anche questo file. La 
                                    riga dovrebbe essere cosi:
                                    <screen>
*        #any host can get a login window </screen>
                                </para>
                            </listitem>

                            <listitem>
                                <para><command>KDM</command></para>
                                <para>
                                    Le nuove versioni di KDM hanno un file
                                    chiamato <command>kdmrc</command>. A seconda
                                    della distribuzione di Linux, questo file 
                                    puo trovarsi in vari posti; Per Redhat 7.2,
                                    e in <command>/etc/kde/kdm/kdmrc</command>.
                                    Per le altre distribuzioni, usa il comando
                                    <command>locate</command> per trovarlo.
                                </para>
                                <para>
                                    La voce che controlla laccesso remoto e 
                                    nella sezione <command>[Xdmcp]</command>.
                                    Devi essere sicuro che la voce 
                                    <command>Enable</command> sia settata su
                                    <command>true</command>.
                                </para>
                                <para>
                                    Versioni meno recenti di KDM usano i files
                                    di configurazione di XDM, situati in 
                                    /etc/X11/xdm.
                                </para>
                            </listitem>

                            <listitem>
                                <para><command>GDM</command></para>
                                <para>
                                    GDM usa uno schema di files diverso; sono 
                                    tutti nella directory 
                                    <filename class="directory">/etc/X11/gdm</filename>.
                                </para>

                                <para>
                                    Il file principale dove guardare e 
                                    <filename>gdm.conf</filename>; cerca la
                                    sezione <command>[xdmcp]</command> dove 
                                    dovresti vedere una voce chiamata Enable.
                                    Questa deve essere settata a 1 o true, a 
                                    seconda della versione di GDM. Ecco un
                                    esempio:
                                    <screen>
[xdmcp]
Enable=true
HonorIndirect=0
MaxPending=4
MaxPendingIndirect=4
MaxSessions=16
MaxWait=30
MaxWaitIndirect=30
Port=177 </screen>
                                </para>
                                <para>
                                    Nota la linea 'Enable=true'. Vecchie 
                                    versioni di GDM usano 0 e 1 per Disable e 
                                    Enable.
                                </para>
                            </listitem>
                        </itemizedlist>
                    </listitem>

                    <listitem>
                        <para>
                            Se il Display manager sta sicuramente girando,
                            e sta ascoltando per le richieste delle workstations,
                            potrebbe semplicemente non essere in grado di
                            mappare gli indirizzi IP con i nomi degli host.
                            La workstation deve infatti essere elencata o nel
                            file <filename>/etc/hosts</filename> oppure nella
                            tavola del server DNS.
                        </para>
                    </listitem>

                </orderedlist>
            </para>
        </sect2>
    </sect1>
</chapter>

<chapter>
    <title>I kernel</title>
    <para>
        Ci sono alcune scelte da fare riguardo al kernel che dovra girare sulla
        workstation. Devi infatti decidere se vuoi usare uno di quelli standard
        distribuiti da LTSP.org o uno compilato da te. E devi anche decidere se
        vuoi includere anche la schermata grafica con barra di caricamento 
        fornita dalla <command>Linux Progress Patch (LPP)</command>.
    </para>

    <sect1>
        <title>Kernels standard distribuiti con LTSP</title>
        <para>
            Il pacchetto dei kernel distribuito con LTSP include due kernels:
            uno ha la Linux Progress Patch gia applicata, laltro no.
        </para>

        <para>
            Entrambi invece hanno la patch per lo swap su NFS applicata.
        </para>
    </sect1>

    <sect1>
        <title>Costruire il tuo kernel</title>
        <para>
            Ci sono due vie per configurare un kernel per LTSP; il metodo di 
            default e quello di usare l'Initial Ram Disk', o initrd.
            Limmagine initrd e un piccolo filesystem appeso alla fine del 
            kernel. Esso viene caricato in memoria e una volta che il kernel e
            partito, montera questo filesystem come root. Ci sono dei vantaggi
            nellutilizzo di <command>initrd</command>: per prima cosa possiamo
            compilare i drivers
            delle schede di rete come moduli e caricare il modulo corretto 
            durante la partenza, permettendo di creare un solo kernel per tutte
            le schede di rete; laltro vantaggio e che possiamo contattare il 
            server DHCP usando un programma a se stante, e non il kernel in modo
            diretto; questo ci permette di avere maggior controllo sulle opzioni
            ricevute dal server, mantenendo anche il kernel un po piu snello.
            Laltro modo di configurare il kernel e ovviamente fare a meno di 
            initrd; questo impilca che i drivers per le schede di rete siano 
            inclusi dentro il kernel e inoltre che le opzioni IP-Autoconfig e 
            "Root filesystem on NFS" siano attivate. Il vantaggio di questa 
            soluzione e che limmagine da scaricare da rete e piu piccola,
            data lassenza del filesystem initrd, e loperazione di boot e un
            po piu veloce. Dopo la fase di boot, non ci sara differenza nel
            funzionamento delle workstations.
        </para>

        <para>
            The standard kernel for LTSP includes an Initial Ramdisk
            (initrd) that takes care of detecting the network card, and
            making a user-space DHCP request.  A major goal for the image
            was to make it as small as possible.  So, we chose the uClinux
            libc replacement library, and busybox for the utilities that
            we need during the boot.
        </para>

        <para>
            Il kernel standard per LTSP include un Initial Ramdisk (initrd) che
            riconosce automaticamente la scheda di rete e il programma per le
            richieste DHCP. Uno dei maggiori scopi di initrd era di essere il
            piu piccolo possibili, quindi abbiamo scelto la libreria libc 
            uClinux libc, e busybox per le utility che ci servono per fare il boot.
        </para>

        <sect2>
            <title>Scaricare i sorgenti del kernel</title>
 
            <para>
                Quando si costruisce un  proprio kernel, e bene partire dai 
                sorgenti originali scaricati da 
                <command>ftp.kernel.org</command>. Il motivo di questa scelta e
                che le distribuzioni, come RedHat, applicano molte patch ai loro
                kernel, che fa si che questi non siano piu uguali a quelli 
                ufficiali.
            </para>
    
            <para>
                Scarica i sorgenti della versione che preferisci e salvali nella
                directory <filename class="directory">/usr/src</filename>. I
                kernels sono situati nella directory 
                <filename class="directory">/pub/linux/kernel</filename> del 
                server ftp ftp.kernel.org. Avrai bisogno di una versione recente
                della serie 2.4.x series del kernel, perche hai bisogno del 
                supporto per il filesystem <command>devfs</command>.
            </para>

            <para>
                Inoltre, se vuoi avvalerti dei vantaggi forniti dallo swap su 
                NFS o dalla Linux Progress Patch (LPP), sevi essere sicuro di
                scaricare le versioni corrette di queste patch per il tuo kernel.
                Mentre viene scritto questo documento,il kernel 2.4.9 e il piu
                recente a supportare queste caratteristiche.
            </para>

            <para>
                Nel nostro esempio, useremo il kernel 2.4.9. Il path completo e
                <filename>ftp://ftp.kernel.org/pub/linux/kernel/v2.4/linux-2.4.9.tar.bz2</filename>
            </para>

            <para>
                Scompatta i sorgenti nella directory 
                <filename class="directory">/usr/src</filename>; devi fare 
                attenzione quando scompatti, perche verra creata una directory
                chiamata <filename>linux</filename>. Potresti avere gia una
                directory con questo nome che contiene unaltra serie di 
                sorgenti, percui se non vuoi rovinarli, rinomina la tua
                directory prima di procedere.
            </para>

            <para>
                I sorgenti che abbiamo scaricato sono stati compressi con 
                lutility <command>bzip2</command>; quindi, dobbiamo 
                scompattarli prima di mandarli al programma 
                <command>tar</command>. Puoi usare il seguente comando:
                <screen>
bunzip2 &#60;linux-2.4.9.tar.bz2 | tar xf - </screen>
                Quando loperazione termina, avrai ottenuto una directory
                chiamata <filename>linux</filename> contenente lintero set di
                sorgenti. A questo punto, mi piace rinominare la directory in
                qualcosa di piu significativo.
                <screen>
mv linux linux-2.4.9 </screen>
                Una volta rinominata, entriamo nella directory:
                <screen>
cd linux-2.4.9 </screen>
            </para>
            <para>
                Mi piace anche modificare il <filename>Makefile</filename> prima
                di configurare il nuovo kernel: vicino allinizio del file, ce
                una variabile chiamata <command>EXTRAVERSION</command>. Io setto
                questa variabile a 'ltsp-1', in modo tale che la versione del
                kernel risulti essere '2.4.9-ltsp-1'; in questo modo il kernel 
                e piu riconoscibile. La parte iniziale del file Makefile 
                dovrebbe apparire cosi:
                <screen>
VERSION = 2
PATCHLEVEL = 4
SUBLEVEL = 9
EXTRAVERSION = -ltsp-1

KERNELRELEASE=$(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) </screen>
            </para>
        </sect2>

        <sect2>
            <title>Patches per il kernel</title>
            <para>
                Dopo aver scompattato il kernel, potresti voler applicare alcune
                patch, come ad esempio lNFS Swap patch o la Linux Progress 
                Patch; queste DEVONO essere applicate prima di configurare il 
                kernel.
            </para>
            <sect3>
                <title>NFS Swap patch</title>
                <para>
                    LNFS Swap patch permettera al kernel della workstation di
                    usare il server tramite NFS per lo swap file. Nonostante sia
                    consigliabile avere sufficiente RAM per il funzionamento 
                    senza ricorrere allo swap, puo essere in alcuni casi 
                    impossibile aggiungere RAM, come su PC vecchi. Quindi questa
                    caratteristica puo rendere alcuni PC obsoleti in grado di
                    funzionare.
                </para>
                <para>
                    Se la directory corrente e /usr/src/linux-2.4.9, e la patch
                    si trova in /usr/src, devi dare questo comando per 
                    verificare la patch:
                    <screen>
patch -p1 --dry-run &#60;../linux-2.4.9-nfs-swap.diff </screen>
                    Questo testera la patch, per essere sicuri che possa essere
                    applicata. Se non ci sono errori, puoi applicarla tramite lo
                    stesso comando senza lopzione <command>--dry-run</command>.
                    <screen>
patch -p1 &#60;../linux-2.4.9-nfs-swap.diff </screen>
                </para>
            </sect3>
            <sect3>
                <title>Linux Progress Patch (LPP)</title>
                <para>
                    La Linux Progress Patch (LPP) ti permettera di configurare
                    un logo grafico da visualizzare durante la partenza; i 
                    normali messaggi del kernel sono rediretti ad unaltro 
                    schermo tty, e alcune istruzioni speciali sono aggiunte allo
                    script di boot per far muovere correttamente la barra di
                    avanzamento.
                </para>
                <para>
                    Come per lNFS Swap patch, puoi testare la patch prima di 
                    applicarla:
                    <screen>
patch -p1 --dry-run &#60;../lpp-2.4.9 </screen>
                    Se il test non rileva errori, puoi realmente applicare la
                    patch:
                    <screen>
patch -p1 &#60;../lpp-2.4.9 </screen>
                </para>
            </sect3>
        </sect2>

        <sect2>
            <title>Configurare le opzioni del kernel</title>
            <para>
                Puoi ora lanciare il programma di configurazione che preferisci:
                <itemizedlist>
                    <listitem>
                        <para>make xconfig</para>
                        <para>
                            Versione X Windows del configuratore (grafico).
                        </para>
                    </listitem>
                    <listitem>
                        <para>make menuconfig</para>
                        <para>
                            Versione basata sulle librerie curses del 
                            configuratore (testo con menu).
                        </para>
                    </listitem>
                    <listitem>
                        <para>make config</para>
                        <para>
                            Versione su singola riga del configuratore.
                        </para>
                    </listitem>
                </itemizedlist>
            </para>
 
            <sect3>
                <title>Configurazione del kernel con initrd</title>
                <para>

                    La configurazione del kernel per utilizzare initrd richiede
                    le seguenti opzioni:
                    <itemizedlist>

                        <listitem>
                            <para>
                                File systems -> /dev filesystem support
                            </para>
                            <para>
                                Il supporto per il filesystem /dev deve essere 
                                abilitato. NON attivare 'Automatically mount at
                                boot', in quanto il mount viene eseguito dallo
                                script /linuxrc.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Block devices -> RAM disk support
                            </para>
                            <para>
                                Le workstations LTSP richiedono che il kernel
                                supporti un RAM disk. Questa opzione e nella
                                sezione 'Block devices'.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Block devices -> Initial RAM disk (initrd)
                                support
                            </para>
                            <para>
                                Anche questo deve essere abilitato.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Processor type and features -> Processor family
                            </para>
                            <para>
                                Devi essere sicuro che il kernel che stai 
                                costruendo sia in grado di essere eseguito sul
                                processore della tua workstation: puoi scegliere
                                larchitettura con questo parametro. Dovresti 
                                anche disattivare il supporto SMP, a meno che tu
                                non abbia una macchina multiprocessore.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> Network file systems -> NFS
                                Client support
                            </para>
                            <para>
                                La workstation montera il filesystem di root 
                                tramite NFS, quindi il supporto NFS client e
                                richiesto.
                            </para>
                        </listitem>
                    </itemizedlist>
                    Questo dovrebbe essere sufficiente. Puoi anche disattivare
                    altre opzioni del kernel in modo da ridurne le dimensioni.
                </para>
            </sect3>

            <sect3>
                <title>Configurazione del kernel senza initrd</title>
                <para>
                    La configurazione del kernel senza initrd differisce da 
                    quella precedente in alcuni punti:
                    <itemizedlist>
                        <listitem>
                            <para>
                                Block devices -> RAM disk support
                            </para>
                            <para>
                                Le workstations LTSP richiedono il supporto del
                                RAM disk.
                            </para>
                        </listitem>

                        <listitem>
                            <para>
                                Block devices -> Initial RAM disk (initrd)
                                support
                            </para>
                            <para>
                                Questo deve essere disabilitato.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Networking options -> IP:kernel level
                                autoconfiguration
                            </para>
                            <para>
                                Questo deve essere abilitato: dira infatti al
                                kernel di configurare automaticamente la scheda
                                di rete eth0, in base ai parametri specificati
                                tramite la riga comandi del kernel.
                            </para>
                            <para>
                                Non e necessario specificare le opzioni DHCP,
                                BOOTP o RARP perche la bootrom Etherboot ha 
                                gia fatto una richiesta al DHCP o al BOOTP, e
                                passa i dati ottenuti sulla riga di comandi del
                                kernel. Questo risparmia al kernel la fatica di
                                eseguire unulteriore sua richiesta.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                Network device support -> Ethernet (10 or
                                100Mbit)
                            </para>
                            <para>
                                Quando non usi initrd, devi scegliere una driver
                                per la scheda di rete che utilizzi; esso DEVE
                                essere compilato nel kernel, NON COME MODULO,
                                perche la scheda di rete deve essere 
                                funzionante prima che sia montato il filesystem
                                di root. Questa e una differenza grande nel 
                                funzionamento tra questa configurazione e quella
                                con initrd.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> /dev filesystem support
                            </para>
                            <para>
                                A partire dalla versione 2.09pre2 di LTSP, il
                                supporto per <command>devfs</command> e
                                richiesto, indipendentemente dalluso o meno di
                                initrd.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> Automatically mount at boot
                            </para>
                            <para>
                                Quando non si usa initrd, il filesystem /dev 
                                deve essere montato in automatico dal kernel,
                                durante loperazione di boot. Rispondi Y qui.
                            </para>
                        </listitem>
                        <listitem>
                            <para>
                                File systems -> Network file systems -> NFS
                                Client support
                            </para>
                            <para>
                                La workstation montera il proprio filesystem di
                                root tramite NFS, quindi  NFS client support 
                                deve essere abilitato.
                            </para>
                        </listitem>
                    </itemizedlist>
                </para>
            </sect3>
        </sect2>

        <sect2>
            <title>Compilare il kernel</title>
 
            <para>
                Per rendere le cose un po piu semplici, una copia del file 
                <filename>.config</filename> viene inclusa nel pacchetto 
                ltsp_initrd_kit; puoi copiarlo nella directory 
                <filename>/usr/src/linux-2.4.9</filename>.
            </para>

            <para>
                Una volta selezionate le opzioni del kernel, lo devi compilare:
                i seguenti comandi devono essere eseguiti:
                <screen>
make dep
make clean
make bzImage
make modules
make modules_install </screen>
                Puoi metterli tutti su una riga in questo modo:
                <screen>
make dep &amp;&amp; make clean &amp;&amp; make bzImage &amp;&amp; make modules &amp;&amp; make modules_install </screen>
                La doppia e commerciale (&amp;) significa che i comandi devono
                essere eseguiti uno dopo laltro se quello precedente viene 
                completato con successo.
            </para>
            <para>
                Quando la compilazione e terminata, il nuovo kernel si trovera
                in <filename class="directory">/usr/src/linux-2.4.7/arch/i386/boot/bzImage</filename>.
            </para>
        </sect2>

        <sect2>
            <title>Taggare il kernel per Etherboot</title>
            <para>
                Per fare in modo che Etherboot possa gestire il kernel, 
                questultimo deve essere preparato: questa operazione e
                chiamata 'Taggare il kernel. Questoperazione aggiungera del
                codice al kernel e sara eseguito prima che il controllo sia 
                passato al kernel stesso. Lo strumento per taggare il kernel e
                chiamato '<command>mknbi-linux</command>'.
            </para>
            <para>
                Il pacchetto ltsp_initrd_kit include uno script chiamato 
                <command>buildk</command> che include tutti i comandi necessari
                a preparare un kernel per il boot da rete.
            </para>
        </sect2>
    </sect1>
</chapter>

<!--
<chapter>
    <title>Advanced Topic: Making bootroms</title>
    <para>
        Burning eproms with Etherboot code
    </para>
</chapter>
-->

<!--
<chapter>
    <title>Advanced Topic: Display Managers</title>
    <para>
        Burning eproms with Etherboot code
    </para>
</chapter>
-->

<!--
<chapter>
    <title>Advanced Topic: Font Server</title>
    <para>
        Burning eproms with Etherboot code
    </para>
</chapter>
-->

<!--
<chapter>
    <title>Advanced Topic: Configuring a Chooser</title>
    <para>
        Burning eproms with Etherboot code
    </para>
</chapter>
-->

<!--
<chapter>
    <title>Advanced Topic: Local Applications</title>
    <para>
        Burning eproms with Etherboot code
    </para>
</chapter>
-->

<!--
<chapter>
    <title>Advanced Topic: Accessing local peripherals</title>
    <para>
        Burning eproms with Etherboot code
    </para>
</chapter>
-->

<chapter>
    <title>Il file lts.conf</title>
    <para>
        Quando abbiamo disegnato LTSP, uno dei problemi che sapevamo di dover 
        affrontare era la differenza di hardware tra le varie workstations. 
        Sicuramente, qualsiasi combinazione di processore, scheda di rete e
        scheda video disponibile oggi, non lo sara piu tra 3 mesi, quando
        vorremo aggiungere altre workstations.
    </para>
    <para>
        Quindi, abbiamo pensato ad un sistema per specificare la configurazione
        della singola workstation; questa configurazione e memorizzata nel file
        <filename>lts.conf</filename> che risiede nella directory 
        <filename class="directory">/opt/ltsp/i386/etc</filename>.
    </para>

    <para>
        Il formato di questo file precede settaggi di default e settaggi
        specifici per ogni workstation. Se tutte le tue workstation fossero 
        uguali, potresti usare solo la sezione di default.
    </para>

    <sect1>
        <title>Esempio di lts.conf</title>
        <para>
            Ecco un esempio del file lts.conf:
            <screen>
[Default]
        SERVER             = 192.168.0.254
        X_MOUSE_PROTOCOL   = "PS/2"
        X_MOUSE_DEVICE     = "/dev/psaux"
        X_MOUSE_RESOLUTION = 400
        X_MOUSE_BUTTONS    = 3
        USE_XFS            = N
        RUNLEVEL           = 5

[ws001]
        XSERVER            = auto
        X_MOUSE_PROTOCOL   = "Microsoft"
        X_MOUSE_DEVICE     = "/dev/ttyS1"
        X_MOUSE_RESOLUTION = 50
        X_MOUSE_BUTTONS    = 3
        X_MOUSE_BAUD       = 1200

[ws002]
        XSERVER            = XF86_Mach64

[ws003]
        RUNLEVEL           = 3 </screen>
        </para>
    </sect1>

    <sect1>
        <title>Parametri disponibili in lts.conf</title>
        <sect2>
            <title>Parametri generali</title>
            <variablelist>

                <varlistentry>
                    <term><command>Commenti</command></term>
                    <listitem>
                        <para>
                            I commenti partono tutti con il simbolo del
                            cancelletto '#' e continuano fino al termine della
                            riga.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>LTSP_BASEDIR</command></term>
                    <listitem>
                        <para>
                            Questo indica dove situato il filesystem di root
                            di LTSP; il default e <filename>/opt/ltsp</filename>
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SERVER</command></term>
                    <listitem>
                        <para>
                            Questo e il server usato come XDM_SERVER, 
                            TELNET_HOST, XFS_SERVER e SYSLOG_HOST, se nessuno di
                            questi e a sua volta specificato esplicitamente. Se
                            hai un solo server per tutti questi servizi, non
                            dovrai fare altro che specificarne lindirizzo in 
                            questo parametro. Se questo parametro non e
                            specificato, verra utilizzato il valore 
                            <command>192.168.0.254</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SYSLOG_HOST</command></term>
                    <listitem>
                        <para>
                            Se vuoi inviare i messaggi di log ad una macchina 
                            differente dal server, puoi specificare il suo 
                            indirizzo qui. Se questo parametro non viene 
                            specificato, viene utilizzato il valore del
                            parametro 'SERVER' desritto sopra.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NFS_SERVER</command></term>
                    <listitem>
                        <para>
                            Specifica lindirizzo IP del server NFS usato per
                            montare la directory <filename>/home</filename>. Il
                            default e lo stesso indirizzo indicato nel
                            parametro <command>SERVER</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>USE_NFS_SWAP</command></term>
                    <listitem>
                        <para>
                            Setta questo a <command>Y</command> se vuoi usare lo
                            swap su NFS; il default e <command>N</command>
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SWAPFILE_SIZE</command></term>
                    <listitem>
                        <para>
                            Qui puoi controllare la dimansione del file di swap;
                            il default e <command>64m</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SWAP_SERVER</command></term>
                    <listitem>
                        <para>
                            Il file di swap puo essere messo su qualsiasi 
                            server sulla rete che sia in grado di gestirlo: puoi
                            specificare qui il suo indirizzo. Il default e lo
                            stesso valore del parametro NFS_SERVER.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NFS_SWAPDIR</command></term>
                    <listitem>
                        <para>
                            La directory sul server dello swap che viene 
                            esportata tramite NFS; il default e 
                            <filename>/var/opt/ltsp/swapfiles</filename>. 
                            Assicurati che la directory sia esortata nel file
                            <filename>/etc/exports</filename>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>TELNET_HOST</command></term>
                    <listitem>
                        <para>
                            Se la workstation e configurata per avere 
                            uninterfaccia testuale, questo parametro definisce
                            lhost a cui connettersi tramite telnet. Se questo
                            parametro non viene settato, verra usato 
                            lindirizzo nel parametro <command>SERVER</command>.
                        </para>
                        <para>
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>DNS_SERVER</command></term>
                    <listitem>
                        <para>
                            Viene usato per costruire il file resolv.conf.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SEARCH_DOMAIN</command></term>
                    <listitem>
                        <para>
                            Viene usato per costruire il file resolv.conf.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>MODULE_01</command> fino a
                          <command>MODULE_10</command></term>
                    <listitem>
                        <para>
                            Possono essere specificati fino a 10 moduli da 
                            caricare tramite questi parametri; quoi inserire
                            lintera riga di comando che useresti per caricare i
                            moduli con insmod. Per esempio:
                            <screen>
MODULE_01   = uart401.o
MODULE_02   = sb.o io=0x220 irq=5 dma=1
MODULE_03   = opl3.o </screen>
                        </para>

                        <para>
                            Se il valore settato e un nome di file completo di
                            path, verra usato <command>insmod</command> per 
                            caricare il modulo. Altrimenti, verra usato 
                            <command>modprobe</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>RAMDISK_SIZE</command></term>
                    <listitem>
                        <para>
                            Quando la workstation parte, crea un ramdisk e lo 
                            monta sulla directory /tmp. Puoi controllare la 
                            grandezza di questo filesystem con questo parametro,
                            specificando la dimansione in kbytes (1024 bytes).
                            Per creare un ramdisk di 1 megabyte, usa 
                            <command>RAMDISK_SIZE = 1024</command>
                        </para>
                        <para>
                            Se cambi questo valore, dovrai cambiare la 
                            dimensione del ramdisk anche nel kernel: questa puo
                            essere scelta in fase di compilazione, oppure 
                            specificata quando tagghi il kernel con mknbi-linux.
                        </para>
                        <para>
                            Il valore di default e 1024 ( 1 mb )
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>RCFILE_01</command> fino a
                          <command>RCFILE_10</command></term>
                    <listitem>
                        <para>
                            Altri script possono essere eseguiti dallo script
                            principale rc.local; dovrai solo metterli nella
                            directory /etc/rc.d, e specificarne il nome in uno
                            di questi parametri.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>SOUND</command></term>
                    <listitem>
                        <para>
                            Se il pacchetto LTSP Sound e installato, devi
                            mettere <command>Y</command> qui in modo che lo
                            script <command>rc.sound</command> venga eseguito
                            per configurare la scheda sonora e il processo che
                            la controlla. Il default e <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

            </variablelist>
        </sect2>

        <sect2>
            <title>Parametri del sistema X-Windows</title>
            <variablelist>
                <varlistentry>
                    <term><command>XDM_SERVER</command></term>
                    <listitem>
                        <para>
                            Se vuoi puntare XDM ad una macchina diversa del
                            server di default, specifica il suo indirizzo in 
                            questo parametro. Se non specifichi nulla, verra
                            usato il parametro 'SERVER' descritto precedentemente.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XSERVER</command></term>
                    <listitem>
                        <para>
                            Questo parametro definisce quale X server deve 
                            partire sulla workstation; per le schede video PCI o
                            AGP, questo parametro non dovrebbe essere richiesto,
                            poiche lo script rc.local dovrebbe riconoscere in 
                            automatico la scheda. Puoi anche settare questo 
                            parametro ad <command>auto</command> per indicare
                            che la scheda video dovrebbe essere riconosciuta
                            automaticamente.
                        </para>

                        <para>
                            Per le schede video ISA, o per specificare un
                            Xserver, puoi usare il nome specifico del driver o
                            dellXserver da usare.
                        </para>
                        <para>
                            Se questo valore inizia con <command>XF86_</command>,
                            verra utilizzato XFree86 3.3.6. Altrimenti verra
                            lanciato XFree86 4.1.x. Il default e 
                            <command>auto</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MODE_0</command> fino a
                          <command>X_MODE_2</command></term>
                    <listitem>
                        <para>
                            Qui possono essere configurate fino a 3 risoluzioni 
                            video per la workstation. Questo parametro accetta 
                            due tipi di valori: una risoluzione oppure una 
                            modeline completa.
                            <programlisting width=80>
X_MODE_0 = 800x600

   or

X_MODE_0 = 800x600 60.75 800 864 928 1088 600 616 621 657 -HSync -VSync
                            </programlisting>
                        </para>
                        <para>
                            Se non viene specificata alcuna voce X_MODE_x , 
                            verranno usate quelle interne e verranno abilitate 
                            le risoluzioni 1024x768, 800x600 e 640x480.
                        </para>
                        <para>
                            Se una o piu linee X_MODE_x vengono configurate,
                            andranno a sovrascrivere completamente quelle 
                            interne.
                        </para>
                          
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_PROTOCOL</command></term>
                    <listitem>
                        <para>
                            Qui puo essere messo un qualunque valore che
                            funzioni con il protocollo XFree86 Pointer Protocol;
                            tipicamente questi valori sono "Microsoft" e "PS/2".
                            Il default e settato a <command>"PS/2"</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_DEVICE</command></term>
                    <listitem>
                        <para>
                            Questo e il nodo dove viene collegato il mouse 
                            (nodo = file in /dev). Se il mouse e seriale, qui
                            dovrebbe essere riportata una porta seriale, come
                            <command>/dev/ttyS0</command> o 
                            <command>/dev/ttyS1</command>. Se invece e PS/2,
                            questo valore sara <command>/dev/psaux</command>. 
                            Il default e <command>/dev/psaux</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_RESOLUTION</command></term>
                    <listitem>
                        <para>
                            Questo parametro corrisponde al valore 'Resolution'
                            nel file <command>XF86Config</command>. Un valore
                            tipico per un mouse seriale e <command>50</command>,
                            mentre per uno PS/2 e <command>400</command> . Il
                            default e <command>400</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_BUTTONS</command></term>
                    <listitem>
                        <para>
                            Qui possiamo dire al sistema quanti pulsanti ha il
                            nostro mouse; normalmente viene settato a 
                            <command>2</command> o <command>3</command>. Il
                            default e <command>3</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_EMULATE3BTN</command></term>
                    <listitem>
                        <para>
                            Questo dice allX server di emulare il terzo tasto 
                            del mouse su un mouse s 2 pulsanti, cliccando 
                            assieme il tasto di sinistra piu quello di destra.
                            Il valore di default e <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_MOUSE_BAUD</command></term>
                    <listitem>
                        <para>
                            Per mouse seriali, e la velocita di comunicazione 
                            con la seriale. Il default e <command>1200</command>
                            (baud).
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_COLOR_DEPTH</command></term>
                    <listitem>
                        <para>
                            Questo e il numero di bit da usere per la 
                            profondita del colore. Valori accettati sono 
                            <command>8</command>, <command>15</command>, 
                            <command>16</command>, <command>24</command> e 
                            <command>32</command>. 8 bits dara 256 colori, 16 
                            ne dara 65536, 24 ne dara 16 milioni e 32 bits ne
                            dara 4.2 miliardi! Non tutti gli X servers 
                            supportano tutti questi valori. Il default e
                            <command>16</command>
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>USE_XFS</command></term>
                    <listitem>
                        <para>
                            Hai la possibilita di usare lX Font Server (XFS) o
                            di caricare le fonts attraverso il filesystem NFS.
                            Il font server da la possibilita di mantenere tutte
                            le fonts in un unico punto sul server, ma ci sono 
                            stati problemi quando le workstations aumentano di
                            numero fino ad arrivare ad una quarantina circa. I
                            due valori accettati qui sono <command>Y</command> 
                            e <command>N</command>. Il default e 
                            <command>N</command>. Se vuoi usare il font server,
                            puoi specificarne la macchina server usando il 
                            parametro <command>XFS_SERVER</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XFS_SERVER</command></term>
                    <listitem>
                        <para>
                            Se usi lX Font Server per distribuire le fonts, 
                            puoi usare questo parametro per specificare 
                            lindirizzo IP della macchina che funge da font
                            server. Se non la specifichi, verra usato 
                            lindirizzo specificato nel parametro 
                            <command>SERVER</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_HORZSYNC</command></term>
                    <listitem>
                        <para>
                            Questo setta il parametro 
                            <command>HorizSync</command> di XFree86. Il default
                            e <command>"31-62"</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_VERTREFRESH</command></term>
                    <listitem>
                        <para>
                            Questo setta il parametro 
                            <command>VertRefresh</command> di XFree86. Il
                            default e <command>"55-90"</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XF86CONFIG_FILE</command></term>
                    <listitem>
                        <para>
                            Se vuoi crearti un file XF86Config completo, puoi
                            metterlo nella directory
                            <command>/opt/ltsp/i386/etc</command>. Poi,
                            metti il nome di questo file in questo parametro.
                            Ad esempio:
                            <screen>
XF86CONFIG_FILE = XF86Config.ws004 </screen>
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Parametri per il touch screen</title>
            <variablelist>
                <varlistentry>
                    <term><command>USE_TOUCH</command></term>
                    <listitem>
                        <para>
                            Se collegherai un touch screen alla workstation,
                            puoi abilitarlo mettendo <command>Y</command>: in
                            questo caso, altri parametri verranno esaminati per
                            configurare altri particolari del tuo touch screen.
                            Il default e <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>X_TOUCH_DEVICE</command></term>
                    <listitem>
                        <para>
                            Un touch screen lavora come un mouse, e normalmente
                            viene collegato ad una porta seriale: qui puoi
                            specificare quale porta usare; ad esempio potresti
                            mettere <command>/dev/ttyS0</command>. Non ce un 
                            valore predefinito.
                        </para>
                    </listitem>
                </varlistentry>
    
                <varlistentry>
                    <term><command>X_TOUCH_MINX</command></term>
                    <listitem>
                        <para>
                            Valore di calibrazione per i touch screen EloTouch.
                            Default a <command>433</command>.
                        </para>
                    </listitem>
                </varlistentry>
         
                <varlistentry>
                    <term><command>X_TOUCH_MAXX</command></term>
                    <listitem>
                        <para>
                            Valore di calibrazione per i touch screen EloTouch.
                            Default a <command>3588</command>.
                        </para>
                    </listitem>
                </varlistentry>
         
                <varlistentry>
                    <term><command>X_TOUCH_MINY</command></term>
                    <listitem>
                        <para>
                            Valore di calibrazione per i touch screen EloTouch.
                            Default a <command>569</command>.
                        </para>
                    </listitem>
                </varlistentry>
         
                <varlistentry>
                    <term><command>X_TOUCH_MAXY</command></term>
                    <listitem>
                        <para>
                            Valore di calibrazione per i touch screen EloTouch.
                            Default a <command>3526</command>.
                        </para>
                    </listitem>
                </varlistentry>
         
                <varlistentry>
                    <term><command>X_TOUCH_UNDELAY</command></term>
                    <listitem>
                        <para>
                            Valore di calibrazione per i touch screen EloTouch.
                            Default a <command>10</command>.
                        </para>
                    </listitem>
                </varlistentry>
         
                <varlistentry>
                    <term><command>X_TOUCH_RPTDELAY</command></term>
                    <listitem>
                        <para>
                            Valore di calibrazione per i touch screen EloTouch.
                            Default a <command>10</command>.
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Parametri per le applicazioni locali</title>
            <variablelist>
                <varlistentry>
                    <term><command>LOCAL_APPS</command></term>
                    <listitem>
                        <para>
                            Se vuoi abilitare le applicazioni locali sulla 
                            workstation, setta questa variabile a 
                            <command>Y</command>; dovrai comunque configurare
                            molti altri aspetti del tuo server per far 
                            funzionare le applicazioni in locale: per ulteriori
                            informazioni, da unocchiata alla sezione 
                            Applicazioni locali. Il valore di default e 
                            <command>N</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NIS_DOMAIN</command></term>
                    <listitem>
                        <para>
                            Se decidi di abilitare LOCAL_APPS, avrai bisogno di
                            un server NIS sulla rete. Questo parametro serve a
                            specificare il nome del dominio NIS, e deve 
                            ovviamente essere uguale a quello del server; 
                            inoltre, questo dominio NON ha niente a che vedere 
                            con quello DNS. Il default e <command>ltsp</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>NIS_SERVER</command></term>
                    <listitem>
                        <para>
                            Metti qui lindirizzo IP del server NIS, se non vuoi
                            che la workstation mandi una richiesta broadcast per
                            scoprirlo.
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Parametri per la tastiera</title>
            <para>
                Tutti i files di supporto per la tastiera sono inclusi nella 
                directory /opt/ltsp/i386, quindi bisogna solo configurare correttamente
                XFree86 per avere una tastiera funzionante in modo corretto;
                sono disponibili diverse opzioni per fare questo.
            </para>
            <para>
                I valori per i seguenti parametri sono presi dalla
                documentazione di XFree86, quindi qualunque valore valido per
                XFree86 puo essere utilizzato.
            </para>
            <para>
                Vorremmo anche aggiungere informazioni piu precise per ogni
                configurazione internazionale: se riesci a configurare la tua
                tastiera in modo ottimale, manda due righe al gruppo principale
                di ltsp: saranno molto apprezzate!
            </para>
            <variablelist>
                <varlistentry>
                    <term><command>XkbTypes</command></term>
                    <listitem>
                        <para>
                            Il default e la parola '<command>default</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbCompat</command></term>
                    <listitem>
                        <para>
                            Il default e la parola '<command>default</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbSymbols</command></term>
                    <listitem>
                        <para>
                            The default value for this is
                            '<command>us(pc101)</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbModel</command></term>
                    <listitem>
                        <para>
                            Il default e' '<command>pc101</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>XkbLayout</command></term>
                    <listitem>
                        <para>
                            Il default e' '<command>us</command>'.
                        </para>
                    </listitem>
                </varlistentry>
            </variablelist>
        </sect2>

        <sect2>
            <title>Parametri per la configurazione della stampante</title>
            <para>
                Possono essere connesse alla workstation fino a tre stampanti;
                qualsiasi combinazione di stampanti parallele e seriali puo 
                essere configurata tramite il file <command>lts.conf</command>:
            </para>

            <variablelist>
                <varlistentry>
                    <term><command>PRINTER_0_DEVICE</command></term>
                    <listitem>
                        <para>
                            Il dispositivo su cui e collegata la stampante,
                            come <command>/dev/lp0</command>,
                            <command>/dev/ttyS0</command> o
                            <command>/dev/ttyS1</command>.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_TYPE</command></term>
                    <listitem>
                        <para>
                            Il tipo di collegamento della stampante: 
                            '<command>P</command>' per parallela e 
                            '<command>S</command>' per seriale.
                        </para>
                    </listitem>
                </varlistentry>
               
                <varlistentry>
                    <term><command>PRINTER_0_PORT</command></term>
                    <listitem>
                        <para>
                            La porta TCP/IP da utilizzare; il default e 
                            '<command>9100</command>'
                        </para>
                    </listitem>
                </varlistentry>
                   
                <varlistentry>
                    <term><command>PRINTER_0_SPEED</command></term>
                    <listitem>
                        <para>
                            Se la stampante e seriale, puoi settarne qui la 
                            velocita in baud; il default e 
                            '<command>9600</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_FLOWCTRL</command></term>
                    <listitem>
                        <para>
                            Sempre per le stampanti seriali, stabilisce il tipo
                            di controllo di flusso: '<command>S</command>' per
                            quello software (XON/XOFF), o '<command>H</command>'
                            per quello hardware (CTS/RTS). Se non viene 
                            specificato, verra usato '<command>S</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_PARITY</command></term>
                    <listitem>
                        <para>
                            Per le stampanti seriali, stabilisce la parita da
                            usare: '<command>E</command>'-Even, 
                            '<command>O</command>'-Odd o
                            '<command>N</command>'-Nessuna. Se non specificato,
                            verra usata '<command>N</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_0_DATABITS</command></term>
                    <listitem>
                        <para>
                            Per le stampanti seriali, stabilisce il numero di
                            bits da usare: 
                            '<command>5</command>', '<command>6</command>',
                            '<command>7</command>' e '<command>8</command>' 
                            sono le scelte possibili. Se non specificato, verra
                            usato '<command>8</command>'.
                        </para>
                    </listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_DEVICE</command></term>
                    <listitem><para>Dispositivo a cui e collegata la seconda
                                    stampante</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_TYPE</command></term>
                    <listitem><para>Tipo della seconda stampante</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_PORT</command></term>
                    <listitem><para>La seconda porta TCP/IP da usare</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_SPEED</command></term>
                    <listitem><para>Velocita della seconda stampante (seriale)
                              </para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_FLOWCTRL</command></term>
                    <listitem><para>Second printer flow
                            control (serial)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_PARITY</command></term>
                    <listitem><para>Controllo di flusso della seconda stampante
                              (seriale)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_1_DATABITS</command></term>
                    <listitem><para>Bits della seconda stampante 
                              (serial)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_DEVICE</command></term>
                    <listitem><para>Dispositivo a cui e collegata la terza
                              stampante</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_TYPE</command></term>
                    <listitem><para>Tipo della terza stampante</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_PORT</command></term>
                    <listitem><para>Porta TCP/IP della terza 
                              stampante</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_SPEED</command></term>
                    <listitem><para>Velocita della terza stampante 
                              (seriale)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_FLOWCTRL</command></term>
                    <listitem><para>Controllo di flusso della terza stampante 
                              (seriale)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_PARITY</command></term>
                    <listitem><para>Third printer parity (seriale)</para></listitem>
                </varlistentry>

                <varlistentry>
                    <term><command>PRINTER_2_DATABITS</command></term>
                    <listitem><para>Bits della terza stampante 
                              (seriale)</para></listitem>
                </varlistentry>
            </variablelist>
        </sect2>
    </sect1>
</chapter>

<chapter>
    <title>Local Applications</title>
    <para>
        In un ambiente LTSP, hai la possibilita di scegliere se far girare le
        applicazioni localmente sulla workstation, o sul server.
    </para>

    <para>
        Il modo piu semplice, e di molto, e quello di far girare le 
        applicazioni sul server, cioe usando la CPU e la memoria del server, e 
        il monitor, tastiera e mouse della workstation.
    </para>

    <para>
        Questa e una delle principali caratteristiche del sistema X Windows,
        dove la workstation lavora come un terminale grafico.
    </para>

    <para>
        Per far girare le applicazioni in locale, la workstation deve conoscere
        alcune informazioni sullutente:
        <itemizedlist>
            <listitem>
                <para>
                    Id dellutente
                </para>
            </listitem>
            <listitem>
                <para>
                    Gruppo primario di appartenenza dellutente
                </para>
            </listitem>
            <listitem>
                <para>
                    Home directory dellutente
                </para>
            </listitem>
        </itemizedlist>
        LTSP si affida al Network Information Service - NIS, (un tempo chiamato
        <emphasis role="strong">Yellow Pages</emphasis>) per rendere disponibili
        queste informazioni alle workstation tramite la rete.
    </para>

    <sect1>
        <title>Vantaggi delle applicazioni che girano in locale</title>
        <para>
            Ci sono alcuni vantaggi facendo girare le applicazioni in locale.
        </para>
        <para>
            <itemizedlist>
                <listitem>
                    <para>
                        Si riduce il carico sul server: in configurazioni di 
                        rete grandi, dove si usano applicazioni voraci di 
                        memoria come Netscape, far girare le applicazioni sulla
                        workstation da prestazioni migliori, ammesso che la 
                        workstation sia abbastanza performante.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        Applicazioni che dovessero bloccarsi non influenzano gli
                        altri utenti.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        Il supporto sonoro e molto piu semplice da configurare,
                        quando lapplicazione che lo produce gira sulla stessa 
                        macchina dove lo si ascolta.
                    </para>
                </listitem>
            </itemizedlist>
        </para>
    </sect1>

    <sect1>
        <title>Svantaggi delle applicazioni che girano in locale</title>
        <para>
            Configurare le applicazioni locali richiede molto di piu.
            <itemizedlist>
                <listitem>
                    <para>
                        Requisiti piu pesanti sulla workstation, che deve avere
                        piu ram e una CPU piu performante: un buon punto di
                        partenza sono 64mb di memoria.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        NIS  Per far girare le applicazioni in locale, prima
                        devi farti riconoscere dalla workstation; questo 
                        richiede una qualche forma di autenticazione delle
                        password. E stato scelto il metodo NIS.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        Ulteriori directory devono essere esportate dal server
                        attraverso NFS.
                    </para>
                </listitem>
                <listitem>
                    <para>
                        Le applicazioni partono piu lentamente, poiche vengono
                        lette via rete tramite NFS, accrescendo il traffico di 
                        rete. Oltretutto, visto che ogni applicazione gira su 
                        una CPU diversa, non puoi avvalerti della capacita di 
                        Linux, e piu in generale di Unix, o *nix, di 
                        condividere parti di codice tra piu sessioni dello 
                        stesso programma, che riduce notevolmente i tempi di
                        attesa della seconda e delle successive invocazioni del
                        programma stesso.
                    </para>
                </listitem>
            </itemizedlist>
        </para>
    </sect1>

    <sect1>
        <title>Configurazione del server per le applicazioni locali</title>
        <sect2>
            <title>Parametri in lts.conf</title>
            <para>
                Alcuni parametri devono essere settati nel file 
                <filename>lts.conf</filename>:
                <variablelist>
                  <varlistentry>
                    <term><command>LOCAL_APPS</command></term>
                    <listitem>
                      <para>
                        Questo deve essere settato a <command>Y</command>: 
                        questo portera la workstation a fare le seguenti cose 
                        durante la partenza:
                        <orderedlist>
                          <listitem>
                            <para>
                              Viene montata la directory 
                              <filename>/home</filename> del server tramite NFS.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              Viene creato il file 
                              <filename>/var/yp/nicknames</filename> sulla
                              workstation.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              Viene lanciato il processo 
                              <command>portmapper</command> sulla workstation.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              <command>xinetd</command> viene fatto partire 
                              sulla workstation.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              Viene creato il file
                              <filename>/etc/yp.conf</filename> sulla
                              workstation.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              Viene lanciato il comando 
                              <command>domainname</command> con il valore 
                              <command>NIS_DOMAIN</command> dal file lts.conf.
                            </para>
                          </listitem>
                          <listitem>
                            <para>
                              Viene fatto partire il processo 
                              <command>ypbind</command> sulla workstation.
                            </para>
                          </listitem>
                        </orderedlist>
                      </para>
                    </listitem>
                  </varlistentry>
                  <varlistentry>
                    <term><command>NIS_DOMAIN</command></term>
                    <listitem>
                      <para>
                        Con il NIS, tutti i nodi della rete che vogliono essere
                        associati ad un server NIS, devono appartenere allo 
                        stesso dominio NIS (che non e in alcun modo collegato
                        al dominio DNS). Puoi usare questa voce per specificare 
                        il nome del dominio NIS a cui apparterra la workstation.
                      </para>
                    </listitem>
                  </varlistentry>
                  <varlistentry>
                    <term><command>NIS_SERVER</command></term>
                    <listitem>
                      <para>
                        Il NIS cerchera o di collegarsi con un server NIS 
                        specifico, oppure inviera sulla rete una richiesta
                        broadcast cercando un server disponibile. Se vuoi usare
                        un server specifico, metti qui il suo indirizzo IP.
                      </para>
                    </listitem>
                  </varlistentry>
                </variablelist>
            </para>
        </sect2>

        <sect2>
            <title>Network Information Service - NIS</title>
            <para>
                Il NIS e un servizio di tipo Client/Server. Sul server, ce un
                servizio chiamato <command>ypserv</command> che accetta 
                richieste dalle workstation.
            </para>
            <para>
                Sulle workstation, ce un processo chiamato 
                <command>ypbind</command>; quando questa ha bisogno di 
                informazioni sullutente, come una password o la sua home
                directory, usera ypbind per stabilire una connessione con 
                ypserv sul server.
            </para>
            <para>
                Se hai gia un server NIS nella tua rete, e inutile configurare
                anche il server LTSP come NIS server; potrai semplicemente 
                configurare le voci  NIS_DOMAINNAME e NIS_SERVER nel file 
                lts.conf per rispecchiare la tua configurazione.
            </para>
            <para>
                Se invece non hai gia un server NIS, devi configurarne uno.
            </para>
            <para>
                Per avere informazioni piu' dettagliate su come settare un 
                server NIS, leggi lHOWTO al sito LDP (Linux Documentation 
                Project) chiamato 
                <emphasis role="strong">The Linux NIS(YP)/NYS/NIS+ HOWTO</emphasis>.
                Fai riferimento alla sezione altre risorse di informazioni
                alla fine di questo documento.
            </para>
        </sect2>
    </sect1>

    <sect1>
        <title>Configurazione delle applicazioni</title>
        <para>
            Per poter far funzionare unapplicazione sulla workstation, devi
            metterne tutti i componenti in un punto in cui la workstation possa
            vederli.
        </para>

        <para>
            Con le versioni precedenti di LTSP (2.08 e precedenti), molte 
            directory venivano esportate dal server e montate dalla workstation,
            come <filename>/bin</filename>, <filename>/usr/bin</filename>, 
            <filename>/lib</filename> e <filename>/usr</filename>.
        </para>

        <para>
            Il problema, in questo caso, era che la workstation e il server 
            dovevano avere per forza la stessa architettura, perche i files 
            condivisi potevano essere compilati per un processore diverso da 
            quello della workstation; anche piccole differenze, come un server
            Pentium II (i686) e una workstation Pentium (i586), potevano essere
            un problema, poiche alcune librerie i686 non funzionavano con 
            architetture i386, i486 o i586.
        </para>

        <para>
            Quindi, il modo migliore per procedere e quello di avere una serie
            completa di files binari e librerie di cui la workstation avra
            bisogno, indipendentemente dai files del server.
        </para>

        <para>
            Configurare unapplicazione per lesecuzione in locale vuol dire
            mettere tutti i pezzi nel posto giusto. Uno dei pacchetti LTSP
            scaricabili, il Local netscape package, e un bellesempio di 
            applicazione locale, che mette molti files in 
            <filename>/opt/ltsp/i386/usr/local/netscape</filename>. Cose come le
            classi java, i files di help e gli eseguibili sono messi qui.
        </para>

        <para>
            Netscape non richiede alcuna libreria di sistema addizionale, quindi
            non bisogna aggiungere nulla in 
            <filename>/opt/ltsp/i386/lib</filename>. Ma molte altre applicazioni
            ne hanno bisogno.
        </para>

        <para>
            Quindi, come puoi fare a sapere quali librerie sono necessarie?
            Ecco lutilita del comando <command>ldd</command>.
        </para>
        <para>
            Poniamo che tu voglia far girare una certa applicazione in locale; 
            prenderemo il programma <command>gaim</command> come esempio.
            <command>gaim</command> e un client per la rete AOL Instant 
            Messenger, che permette di comunicare con altri utenti del sistema
            AOL.
        </para>
        <para>
            La prima cosa che bisogna fare e trovare leseguibile di 
            <command>gaim</command>. Su Redhat 7.2 si trova in 
            <filename>/usr/bin</filename>.
        </para>
        <para>
            Una volta trovato, possiamo far girare <command>ldd</command> su
            gaim:
            <programlisting>
[jam@server /]$ ldd /usr/bin/gaim
        libaudiofile.so.0    => /usr/lib/libaudiofile.so.0 (0x40033000)
        libm.so.6            => /lib/i686/libm.so.6 (0x40051000)
        libnsl.so.1          => /lib/libnsl.so.1 (0x40074000)
        libgnomeui.so.32     => /usr/lib/libgnomeui.so.32 (0x4008a000)
        libart_lgpl.so.2     => /usr/lib/libart_lgpl.so.2 (0x4015d000)
        libgdk_imlib.so.1    => /usr/lib/libgdk_imlib.so.1 (0x4016c000)
        libSM.so.6           => /usr/X11R6/lib/libSM.so.6 (0x40191000)
        libICE.so.6          => /usr/X11R6/lib/libICE.so.6 (0x4019a000)
        libgtk-1.2.so.0      => /usr/lib/libgtk-1.2.so.0 (0x401b1000)
        libdl.so.2           => /lib/libdl.so.2 (0x402df000)
        libgdk-1.2.so.0      => /usr/lib/libgdk-1.2.so.0 (0x402e3000)
        libgmodule-1.2.so.0  => /usr/lib/libgmodule-1.2.so.0 (0x40319000)
        libXi.so.6           => /usr/X11R6/lib/libXi.so.6 (0x4031d000)
        libXext.so.6         => /usr/X11R6/lib/libXext.so.6 (0x40325000)
        libX11.so.6          => /usr/X11R6/lib/libX11.so.6 (0x40333000)
        libgnome.so.32       => /usr/lib/libgnome.so.32 (0x40411000)
        libgnomesupport.so.0 => /usr/lib/libgnomesupport.so.0 (0x40429000)
        libesd.so.0          => /usr/lib/libesd.so.0 (0x4042e000)
        libdb.so.2           => /usr/lib/libdb.so.2 (0x40436000)
        libglib-1.2.so.0     => /usr/lib/libglib-1.2.so.0 (0x40444000)
        libcrypt.so.1        => /lib/libcrypt.so.1 (0x40468000)
        libc.so.6            => /lib/i686/libc.so.6 (0x40495000)
        libz.so.1            => /usr/lib/libz.so.1 (0x405d1000)
        /lib/ld-linux.so.2   => /lib/ld-linux.so.2 (0x40000000) </programlisting>
        </para>
        <para>
            Il listato elenca tutte le librerie richieste dal programma 
            <command>gaim</command>.
        </para>
        <para>
            Molti programmi che necessitano di librerie condivise, si basano sul
            caricatore dinamico <command>ld-linux</command> per trovare tutte leł
            librerie richieste. Altri programmi, invece, caricano le librerie
            manualmente usando la funzione <command>dlopen()</command>; per
            queste applicazioni, <command>ldd</command> non riuscira a
            mostrarci le librerie richieste: <command>strace</command> puo
            allore essere usato come alternativa, tracciando lesecuzione del
            programma, e tu potrai vedere le chiamate <command>dlopen()</command>,
            che contengono i nomi delle librerie.

        </para>
        <para>
            Una volta prese le librerie, devono essere copiate nel posto giusto
            della directory <filename>/opt/ltsp/i386</filename>.
        </para>
        
    </sect1>

    <sect1>
        <title>Lanciare le applicazioni locali</title>
        <para>
            In X Windows, i programmi normalmente girano relativamente a dove 
            gira il window manager, cioe se il window manager gira sul server,
            mostrando la propria grafica sullo schermo della workstation, allora
            qualunque programma lanciato girera sul server, mandando il proprio
            output sulla workstation.
        </para>
        <para>
            Il trucco sta nel far in modo che il server dica alla workstation di
            lanciare il programma; questo viene fatto tramite il comando
            <command>rsh</command>.
        </para>
        <para>
            Ecco un esempio di come far partire <command>gaim</command> sulla
            workstation:
            <programlisting>
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
rsh ${HOST} /usr/bin/gaim -display ${DISPLAY} </programlisting>
        </para>
        <para>
            Lesempio sopra riportato puo venire inserito allinterno di una 
            finestra <command>xterm</command>, oppure puo essere inserito in
            uno script ed essere lanciato tramite unicona sul desktop.
        </para>
        <para>
            Lanciare una sessione di Netscape in locale e simile, ma dovremo
            anche settare delle variabili dambiente particolari di cui il
            programma ha bisogno.
            <programlisting>
HOST=`echo $DISPLAY | awk -F: '{ print $1 }'`
rsh ${HOST} MOZILLA_HOME=/usr/local/netscape \
       /usr/local/netscape/netscape -display ${DISPLAY} </programlisting>
        </para>
    </sect1>

</chapter>

<chapter>
    <title>Esempi di configurazioni</title>
    <para>
        Praticamente, qualunque aspetto della workstation puo' essere
        configurato tramite le voci del file <filename>lts.conf</filename>,
        che si trova nella directory <filename>/opt/ltsp/i386/etc</filename>.
    </para>
    <sect1>
        <title>Mouse seriale</title>
        <para>
            Ecco un'esempio delle voci in <filename>lts.conf</filename> che
            servono a configurare un mouse seriale standard a 2 pulsanti:
            <screen>
X_MOUSE_PROTOCOL    = "Microsoft"
X_MOUSE_DEVICE      = "/dev/ttyS0"
X_MOUSE_RESOLUTION  = 400
X_MOUSE_BUTTONS     = 2
X_MOUSE_EMULATE3BTN = Y
</screen>
        </para>
    </sect1>

    <sect1>
        <title>Mouse PS/2 Wheel (con rotellina)</title>
        <para>
            Questo e' un esempio di voci per un Intellimouse:
            <screen>
X_MOUSE_PROTOCOL    = "IMPS/2"
X_MOUSE_DEVICE      = "/dev/psaux"
X_MOUSE_RESOLUTION  = 400
X_MOUSE_BUTTONS     = 5
X_ZAxisMapping      = "4 5"
</screen>
        </para>
    </sect1>

    <sect1>
        <title>Stampante USB collegata ad un ThinkNic</title>
        <para>
            Il ThinkNIC ha una porta USB che puo' essere usata per
            collegare una stampante. Eccone la configurazione:
            <screen>
MODULE_01           = usb-ohci
MODULE_02           = printer
PRINTER_0_DEVICE    = /dev/usb/lp0
PRINTER_0_TYPE      = S
</screen>
        </para>
    </sect1>

    <sect1>
        <title>Forzare il caricamento di XFree86 3.3.6 sulla workstation</title>
        <para>
            Per default viene sempre caricata la versione 4.1.0 di XFree.
            Se vuoi invece forzare la workstation a caricare la vecchia
            release 3.3.6, devi prima installare il pacchetto Xserver 3.3.6
            corretto. Poi, dovrai inserire delle voci nel file
            <filename>lts.conf</filename>, come in questo esempio:
            <screen>
XSERVER             = XF86_SVGA
</screen>
        </para>
    </sect1>


</chapter>

<chapter>
    <title>Altre fonti di informazioni</title>
    <sect1>
        <title>Riferimenti online</title>
        <para>
            <orderedlist>
                <listitem>
                    <para>
                        Il sito di LTSP&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.LTSP.org">
                            <citetitle>www.LTSP.org</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        Documento Diskless-Nodes HOW-TO per Linux&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.linuxdoc.org/HOWTO/Diskless-HOWTO.html">
                            <citetitle>www.linuxdoc.org/HOWTO/Diskless-HOWTO.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        Il sito di Etherboot&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://etherboot.sourceforge.net">
                            <citetitle>etherboot.sourceforge.net</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        Il sito Rom-O-Matic&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.rom-o-matic.net">
                            <citetitle>www.Rom-O-Matic.net</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        XFree86-Video-Timings-HOWTO&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.linuxdoc.org/HOWTO/XFree86-Video-Timings-HOWTO.html">
                            <citetitle>www.linuxdoc.org/HOWTO/XFree86-Video-Timings-HOWTO.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        La versione Linux di NIS(YP)/NYS/NIS+ HOWTO&nbsp;&nbsp;
                    </para>
                    <para>
                        <ulink url="http://www.linuxdoc.org/HOWTO/NIS-HOWTO.html">
                            <citetitle>www.linuxdoc.org/HOWTO/NIS-HOWTO.html</citetitle>
                        </ulink>
                    </para>
                    <para>
                    </para>
                </listitem>


            </orderedlist>
        </para>
    </sect1>

    <sect1>
        <title>Publicazioni su carta</title>
        <para>
            <orderedlist>
                <listitem>
                    <para>
                        <literalLayout>
Managing NFS and NIS
Hal Stern
O'Reilly &amp; Associates, Inc.
1991
ISBN 0-937175-75-7
                        </literalLayout>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <literalLayout>
TCP/IP Illustrated, Volume 1
W. Richard Stevens
Addison-Wesley
1994
ISBN 0-201-63346-9
                        </literalLayout>
                    </para>
                </listitem>

                <listitem>
                    <para>
                        <literalLayout>
X Window System Administrator's Guide
Linda Mui and Eric Pearce
O'Reilly &amp; Associates, Inc.
1993
ISBN 0-937175-83-8
(Volume 8  of the The Definitive Guides to the X Window System)
                        </literalLayout>
                    </para>
                </listitem>
            </orderedlist>
        </para>
    </sect1>
</chapter>

</book>

