Sophie

Sophie

distrib > Mandriva > 9.1 > i586 > by-pkgid > f1098342ec4a2b28475e34123ce17201 > files > 1383

howto-html-it-9.1-0.5mdk.noarch.rpm

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<HTML>
<HEAD>
<TITLE>Diskless Linux Mini Howto</TITLE>


</HEAD>
<BODY>
<H1>Diskless Linux Mini Howto</H1>

<H2>di Robert Nemkin <CODE>buci@math.klte.hu</CODE>. Tradotto da Salvatore Meschini <CODE> 
<A HREF="mailto:smeschini@ermes.it">smeschini@ermes.it</A></CODE></H2>v0.0.3, 12 Settembre 1996. Tradotto il 30 agosto 1998.
<P><HR>
<EM> Questo documento descrive come impostare un sistema Linux privo di unit&agrave; disco ed i diritti d'autore appartengono a Robert
Nemkin. La polizza del copyright &egrave; GPL. L'autore ringrazia Bela Kis
&lt;bkis@cartan.math.klte.hu&gt; per aver tradotto in inglese questo
documento. </EM>
<HR>
<H2><A NAME="s1">1. Modifiche</A></H2>

<P>
<UL>
<LI>v0.0.3 12 Settembre 1996: Correzione di alcuni errori</LI>
</UL>
<P>
<H2><A NAME="s2">2. Come impostare un Linux box senza avere unit&agrave; a disco</A></H2>

<P>Questo documento tratta l'impostazione di una stazione Linux priva di
dischi ("diskless"). Ci&ograve; pu&ograve; essere necessario per eseguire Linux su
PC che non ha n&eacute; dischi rigidi n&eacute; floppy drive. Se si opera in una rete con un altro sistema 
Unix fornito di bootp, tftp, un server NFS, ed &egrave; disponibile un programmatore 
di eprom allora &egrave; possibile configurare ed usare Linux senza avere drive.
<P>
<H2><A NAME="s3">3. Altra documentazione</A></H2>

<P>
<UL>
<LI>NFS-root Mini Howto</LI>
<LI>Linux NET-2/3-HOWTO a cura di
 Terry Dawson, <CODE>94004531@postoffice.csu.edu.au</CODE></LI>
<LI><CODE>/usr/src/linux/README</CODE> configurazione e compilazione di nuovi kernel</LI>
</UL>
<P>
<H2><A NAME="s4">4. Hardware</A></H2>

<P>Tutto ci&ograve; che &egrave; descritto nel documento &egrave; stato provato con la configurazione
seguente:
<UL>
<LI>Sun-OS 4.1.3 come boot server</LI>
<LI>Slackware 2.3 + Linux 1.2.8 + wd 8013 ethercard.</LI>
<LI>Una LAN Ethernet funzionante</LI>
</UL>
<P>
<H2><A NAME="s5">5. Idee basilari</A></H2>

<P>L'idea fondamentale &egrave; la seguente: il PC prender&agrave; il suo indirizzo IP dal 
boot server attraverso il protocollo bootp. &Egrave; necessario usare 0.0.0.0
come indirizzo IP iniziale ed il kernel del server mediante il protocollo tftp.
<BLOCKQUOTE>La fase di avvio fatta attraverso dei segmenti (via router) non &egrave; cosa
da poco, dunque conviene mettere sia il server che i terminali senza dischi nello
stesso segmento LAN oppure configurare un indirizzo di sostegno UDP nel router verso
l'indirizzo del server. Fate riferimento al manuale del vostro router per ottenere
ulteriori informazioni.</BLOCKQUOTE>
<P>Seguite i passi indicati:
<P>
<H2>5.1 Impostazione del PC</H2>

<P>Prendete il pacchetto nfsboot (il pacchetto &egrave; disponibile su diversi mirror, 
nella directory <CODE>/pub/Linux/system/Linux-boot</CODE>. 
Nfsboot contiene un'immagine booteprom della scheda wd8013 che pu&ograve; essere 
programmata direttamente nella EPROM.
<P>Ci sono anche metodi alternativi per preparare il PC:
<UL>
<LI> 
Se la vostra macchina ha una qualche unit&agrave; disco, allora &egrave; possibile usare
un programmino DOS oppure </LI>
<LI>l'immagine binaria per floppy contenuta nel pacchetto
precedentemente indicato.</LI>
</UL>
<P>Se preferite adottare la seconda soluzione allora dovete scrivere l'immagine
su un floppy utilizzando il comando dd
<P>Queste immagini contengono un client bootp ed uno tftp. Dovete preparare un
Linux kernel che supporti l'opzione nfs-root.
<UL>
<LI>Se state usando l'ultimo kernel stabile, linux-1.2.13, allora dovete applicare
il patch al kernel sfruttando il file incluso nel pacchetto nfsboot 
<BLOCKQUOTE>Fate riferimento a patch(1)</BLOCKQUOTE>
</LI>
<LI>Se decidete di usare l'ultimo kernel della serie linux-1.3.x, allora sar&agrave; 
necessario configurare l'opzione nfs-root.</LI>
</UL>
<P>Potete scegliere se configurare o meno il supporto per il block device 
(floppy o hard disk), ma dovete configurare il supporto per tcp/ip, per le
schede ethernet e per il filesystem nfs. Poi ricompilate il kernel come fate di
solito.
<P>
<P>
<H2>5.2 Impostazione di bootpd sul server</H2>

<P>Bootpd pu&ograve; essere reperito nel pacchetto <CODE>bootpd-2.4.tar.gz</CODE>
(disponibile nella directory <CODE>/pub/Linux/system/Network/boot.net</CODE> del
vostro Linux mirror preferito). Scaricate il pacchetto, compilatelo ed 
installatelo. Se il sistema Unix presente sul server &egrave; Slackware Linux allora
potete saltare questo passo poich&eacute; la distribuzione contiene un bootpd.
Il demone pu&ograve; essere eseguito direttamente digitando il comando
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
        bootpd -s
</PRE>
<HR>
</CODE></BLOCKQUOTE>

oppure usando inetd. In questo caso avete bisogno di editare:
<UL>
<LI> /etc/inetd.conf per rimuovere il simbolo hash (#) dall'inizio di
queste righe:

<BLOCKQUOTE><CODE>
<HR>
<PRE>
# tftp   dgram   udp     wait    root    /usr/sbin/in.tftpd     tftpd /export
# bootps dgram   udp     wait    root    /usr/sbin/in.bootpd    bootpd
</PRE>
<HR>
</CODE></BLOCKQUOTE>

</LI>
<LI> inserite o decommentate le seguenti due linee in /etc/services:

<BLOCKQUOTE><CODE>
<HR>
<PRE>
bootps          67/tcp          # BOOTP server
tftp            69/udp          # TFTP server
</PRE>
<HR>
</CODE></BLOCKQUOTE>

</LI>
<LI>riavviate inetd con

<BLOCKQUOTE><CODE>
<HR>
<PRE>
        kill -HUP &lt;id del processo inetd>.
</PRE>
<HR>
</CODE></BLOCKQUOTE>
</LI>
</UL>
<P>
<H2>5.3 Configurazione di bootpd sul server.</H2>

<P>Per prima cosa, bootpd ha un file di configurazione chiamato bootpdtab che
di solito si trova in /etc. Bisogna modificarlo inserendo gli indirizzi IP del
vostro gateway, del server dns e gli indirizzi ethernet della macchina sprovvista
di unit&agrave; a disco.
Un esempio del file /etc/bootptab:
<BLOCKQUOTE><CODE>
<HR>
<PRE>

global.prof:\
        :sm=255.255.255.0:\
        :ds=192.168.1.5:\
        :gw=192.168.1.19:\
        :ht=ethernet:\
        :bf=linux:
macchina1:hd=/export/root/machine1:tc=global.prof:ha=0000c0863d7a:ip=192.168.1.140:
macchina2:hd=/export/root/machine2:tc=global.prof:ha=0800110244e1:ip=192.168.1.141:
macchina3:hd=/export/root/machine3:tc=global.prof:ha=0800110244de:ip=192.168.1.142:
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>global.prof &egrave; un modello generale per le entrate host, dove 
<UL>
<LI>il campo sm contiene il subnet mask</LI>
<LI>il campo ds contiene l'indirizzo del Domain Name Server</LI>
<LI>il campo gw contiene l'indirizzo del gateway predefinito</LI>
<LI>il campo ht contiene il tipo di hardware LAN</LI>
<LI>il campo bf contiene il nome del file di avvio</LI>
</UL>
<P>Inoltre ogni macchina deve avere una linea:
<UL>
<LI>il primo campo contiene il nome dell'host, </LI>
<LI>il campo hd contiene la directory del file di avvio,</LI>
<LI>il modello globale pu&ograve; essere incluso con il campo tc,</LI>
<LI>il campo ha contiene l'indirizzo hardware della scheda ethernet,</LI>
<LI>il campo ip contiene l'indirizzo IP assegnato.</LI>
</UL>
<P>
<P>
<H2>5.4 Capire tftp</H2>

<P>TFTP (<CODE>Trivial File Transfer Protocol</CODE>) &egrave; un protocollo per il 
trasferimento di file, come ftp, ma molto pi&ugrave; semplice da codificare nelle
EPROM. TFTP pu&ograve; essere usato in due modi:
<UL>
<LI> tftp ingenuo: significa che il client pu&ograve; accedere all'intero file
system della vostra macchina. &Egrave; semplice ma rappresenta un enorme buco
nella sicurezza del sistema (chiunque pu&ograve; prelevare il vostro file delle 
password con tftp).</LI>
<LI> tftp sicuro: il server tftp usa una chiamata di sistema di tipo chroot.2
per cambiare la propria directory root. Qualunque cosa all'esterno della nuova
directory root sar&agrave; completamente inaccessibile. Poich&eacute; la directory chroot 
diventa la nuova directory root, il parametro hd presente nel file bootpdtab 
deve riflettere la nuova situazione. Per esempio: quando si usa il tftp ingenuo,
il campo hd contiene il percorso completo alla directory di boot: <CODE>/export/root/machine1</CODE>.
Quando invece si usa il tftp sicuro con /export come directory di root, /export
diviene / ed il campo hd deve essere <CODE>/root/macchina1</CODE>.</LI>
</UL>

Quasi tutte le implementazioni di Unix contengono il server tftp, probabilmente
non ci sar&agrave; bisogno di installarne uno.
<P>
<H2>5.5 Impostazione di una configurazione minimale di Linux su un server remoto.</H2>

<P>Una configurazione minimale dovrebbe contenere i pacchetti a, ap, n ed x della
distribuzione Slackware. Installare altri pacchetti non &egrave; un errore, comunque
i pacchetti appena menzionati sono sufficienti ai fini di creare un terminale
X senza unit&agrave; disco. Per l'installazione c'&egrave; bisogno di un sistema Linux 
funzionante. Trovate dello spazio libero sul disco della macchina remota ed
esportatelo come lettura-scrittura. Montate la directory esportata da qualche
parte (es. /mnt) sul file system del terminale Linux. Avviate il setup di 
Linux e cambiate l'opzione root nel setup da / a /mnt. Poi installate i pacchetti
che ritenete necessari come fate di solito. Se volete usare al massimo un 
terminale Linux allora non dovete apportare nessun altro cambiamento. 
Se invece pensate di aver bisogno di pi&ugrave; macchine senza unit&agrave; disco, allora
il setup tradizionale non funzioner&agrave; perch&eacute; alcuni file e directory devono
risultare private per la macchina. Il problema pu&ograve; essere risolto spostando la
directory /usr (non contiene dati privati) e creando una sotto-directory 
separata per ogni terminale. Per esempio, se /export/linux/macchina1 fosse 
montata su /mnt allora la struttura delle directory dopo il setup iniziale
risulterebbe simile a questa:
<BLOCKQUOTE><CODE>
<HR>
<PRE>
/export/linux/macchina1/bin
/export/linux/macchina1/sbin
/export/linux/macchina1/lib
/export/linux/macchina1/etc
/export/linux/macchina1/var
/export/linux/macchina1/usr
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>Dopo i cambiamenti la struttura diventer&agrave;:
<BLOCKQUOTE><CODE>
<HR>
<PRE>
/export/linux/macchina1/bin
/export/linux/macchina1/sbin
/export/linux/macchina1/lib
/export/linux/macchina1/etc
/export/linux/macchina1/var
/export/linux/usr
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>Ora dovete creare le sotto-directory per le altre macchine. Da adesso in poi
si assuma che i sistemi senza dischi siano chiamati macchina1, macchina2, 
macchina3, ecc.;
In seguito sar&agrave; possibile usare il seguente script bash per impostare le
altre directory
<BLOCKQUOTE><CODE>
<HR>
<PRE>
        
        cd /export/linux
        for x in macchina2 macchina3 ; do
                mkdir $x; cd $x
                (cd ../macchina1; tar cf - *) | tar xvf -
        done
</PRE>
<HR>
</CODE></BLOCKQUOTE>
        
<P>Poi create il seguente export:
<UL>
<LI>/export/linux/usr           sola lettura per tutti.</LI>
<LI>/export/linux/macchina1             solo alla macchina1 con diritti rw,root.</LI>
<LI>/export/linux/macchina2             solo alla macchina2 con diritti rw,root.</LI>
<LI>/export/linux/macchina3             solo alla macchina3 con diritti rw,root.</LI>
</UL>

nel modo seguente
<BLOCKQUOTE> il formato di questo esempio &egrave; conforme alla 
sintassi del SunOs 4.1.3 per i file exports</BLOCKQUOTE>
:
<BLOCKQUOTE><CODE>
<HR>
<PRE>
        
# Questo file &egrave; /etc/export
# per terminali remoti Linux X (by Buci)
# questa linea va indicata una sola volta
/export/root/usr             -access=linuxnet
# queste linee vanno indicate una volta per ogni host
/export/root/machine1       rw=machine1,root=machine1
/export/root/machine2       rw=machine2,root=machine2
/export/root/machine3       rw=machine3,root=machine3
</PRE>
<HR>
</CODE></BLOCKQUOTE>
        
Non dimenticate di eseguire exportfs -a.
<P>
<H2>5.6 Configurazione del server tftp</H2>

<P>
<P>&Egrave; giunto il momento di configurare il server tftp. Se non avete
bisogno del tftp sicuro allora tutto &egrave; abbastanza facile ed i vostri
client possono essere avviati dalla directory /export.
<P>Se preferite usare il tftp sicuro allora dovete creare una struttura delle
directory /export/linux completa sotto /tftpboot (con un solo kernel reale e
links simbolici per le altre macchine), oppure lasciate che /export sia la
directory di avvio del tftpd sicuro. Se avete una directory 
tftpboot separata allora ci sar&agrave; bisogno solo della struttura
delle directory originale con un solo kernel e links simbolici per gli altri
terminali. Potete ottenere questo setup digitando i comandi seguenti:
<BLOCKQUOTE><CODE>
<HR>
<PRE>
      mkdir -p /tftpboot/export/linux/macchina1
      cd /tftpboot/export/linux/macchina1
      cp /export/linux/macchina1/&lt;nome del kernel> . 
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>In seguito digitate:
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
      mkdir -p /tftpboot/export/linux/macchina2
      cd ../macchina2 
      ln -s ../macchina2/&lt;nome del kernel> 
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>
<H2>5.7 Parte finale</H2>

<P>
<P>Infine dovete inserire 
<BLOCKQUOTE><CODE>
<HR>
<PRE>
   /sbin/mount nfs_server:/export/linux/usr /usr
</PRE>
<HR>
</CODE></BLOCKQUOTE>
<P>come prima linea di 
<P>
<BLOCKQUOTE><CODE>
<HR>
<PRE>
   /export/linux/&lt;macchinax>/etc/rc.d/rc.S
</PRE>
<HR>
</CODE></BLOCKQUOTE>

dove &lt;macchinax&gt; sta per macchina1, macchina2, ecc.
<P>
<H2><A NAME="s6">6. Requisiti relativi alla memoria e allo spazio su disco; velocit&agrave;</A></H2>

<P> 
Io ho provato questo metodo solo con la Slackware 2.3; 
per altre distribuzioni/versioni i numeri seguenti possono cambiare.
<UL>
<LI>Spazio su disco: 28MB + 6.5MB/per ogni macchina</LI>
<LI> RAM: Io uso X con 8 MB. Per sistemi con solo 4MB suppongo sia necessario
dello spazio swap, createlo -- separatamente per ogni macchina -- in /tmp. 
Non dimenticate di lanciare il comando mkswap.</LI>
<LI> Velocit&agrave;: non ho avuto problemi con un 486 DX2/66 con 8 mega di RAM.</LI>
</UL>
<P>
<H2><A NAME="s7">7. Problemi</A></H2>

<P> 
<UL>
<LI> Mi sono imbattuto in uno strano errore: nella sotto-directory /dev SunOS
ha rovinato i dispositivi, perci&ograve; ho dovuto rieseguire MAKEDEV montando le
sotto-directory su un sistema Linux dotato di unit&agrave; disco (la causa
del problema sta nelle differenze tra il nfs (network filesystem)  
di Linux e quello di SunOS: tutti e due usano 32 bit per indicare il numero
Major e Minor del dispositivo, ma Linux usa campi a 16 bit per entrambi, SunOs
usa campi a 14 bit per la parte Major e a 18 bit per quella Minor.).</LI>
<LI>Quando il sistema Linux senza unit&agrave; disco viene avviato, esiste un unico
instradamento incluso nella tabella di instradamento al server tftp, cos&igrave; avete
bisogno di impostare correttamente le tabelle di instradamento. Potete contare su due possibili
scelte:
<UL>
<LI> configurare a mano ogni rc.S per ogni macchina </LI>
<LI> usare un client bootp e scrivere uno script di configurazione generalizzato</LI>
</UL>
</LI>
</UL>
<P>
<H2><A NAME="s8">8. Errori e possibili ulteriori espansioni di questo documento</A></H2>

<P>
<UL>
<LI>Elenco corretto degli altri documenti disponibili</LI>
<LI>SunOs &egrave; basato su BSD. Inclusione della configurazione del server 
basato su SVR4 (cio&egrave; Solaris)</LI>
<LI> Nonostante Linux sia abbastanza simile a SunOs come server bootp/tftp,
un esempio di server basato su Linux potrebbe essere utile.</LI>
<LI> Aggiornamento di questo documento al pacchetto etherboot corrente.</LI>
<LI> Elenco delle differenze tra il network filesystem del kernel 1.2.13 e
quello del pi&ugrave; recente 1.3.x che contiene il patch nfs-root.</LI>
<LI> Necessit&agrave; di provare altre schede ethernet oltre alla wd8013</LI>
<LI> Aggiunta delle informazioni di configurazione per bootpc, un client
bootp per Linux utile ad impostare le tabelle di instradamento corrette.</LI>
<LI> Refusi ed altri errori: per favore segnalateli a
<CODE>buci@math.klte.hu</CODE>. Grazie.</LI>
</UL>
<P>
</BODY>
</HTML>