Diskless Linux Mini Howto

di Robert Nemkin buci@math.klte.hu. Tradotto da Salvatore Meschini smeschini@ermes.it

v0.0.3, 12 Settembre 1996. Tradotto il 30 agosto 1998.


Questo documento descrive come impostare un sistema Linux privo di unità disco ed i diritti d'autore appartengono a Robert Nemkin. La polizza del copyright è GPL. L'autore ringrazia Bela Kis <bkis@cartan.math.klte.hu> per aver tradotto in inglese questo documento.

1. Modifiche

2. Come impostare un Linux box senza avere unità a disco

Questo documento tratta l'impostazione di una stazione Linux priva di dischi ("diskless"). Ciò può essere necessario per eseguire Linux su PC che non ha né dischi rigidi né floppy drive. Se si opera in una rete con un altro sistema Unix fornito di bootp, tftp, un server NFS, ed è disponibile un programmatore di eprom allora è possibile configurare ed usare Linux senza avere drive.

3. Altra documentazione

4. Hardware

Tutto ciò che è descritto nel documento è stato provato con la configurazione seguente:

5. Idee basilari

L'idea fondamentale è la seguente: il PC prenderà il suo indirizzo IP dal boot server attraverso il protocollo bootp. È necessario usare 0.0.0.0 come indirizzo IP iniziale ed il kernel del server mediante il protocollo tftp.

La fase di avvio fatta attraverso dei segmenti (via router) non è 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.

Seguite i passi indicati:

5.1 Impostazione del PC

Prendete il pacchetto nfsboot (il pacchetto è disponibile su diversi mirror, nella directory /pub/Linux/system/Linux-boot. Nfsboot contiene un'immagine booteprom della scheda wd8013 che può essere programmata direttamente nella EPROM.

Ci sono anche metodi alternativi per preparare il PC:

Se preferite adottare la seconda soluzione allora dovete scrivere l'immagine su un floppy utilizzando il comando dd

Queste immagini contengono un client bootp ed uno tftp. Dovete preparare un Linux kernel che supporti l'opzione nfs-root.

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.

5.2 Impostazione di bootpd sul server

Bootpd può essere reperito nel pacchetto bootpd-2.4.tar.gz (disponibile nella directory /pub/Linux/system/Network/boot.net del vostro Linux mirror preferito). Scaricate il pacchetto, compilatelo ed installatelo. Se il sistema Unix presente sul server è Slackware Linux allora potete saltare questo passo poiché la distribuzione contiene un bootpd. Il demone può essere eseguito direttamente digitando il comando


        bootpd -s

oppure usando inetd. In questo caso avete bisogno di editare:

5.3 Configurazione di bootpd sul server.

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à a disco. Un esempio del file /etc/bootptab:



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:

global.prof è un modello generale per le entrate host, dove

Inoltre ogni macchina deve avere una linea:

5.4 Capire tftp

TFTP (Trivial File Transfer Protocol) è un protocollo per il trasferimento di file, come ftp, ma molto più semplice da codificare nelle EPROM. TFTP può essere usato in due modi:

Quasi tutte le implementazioni di Unix contengono il server tftp, probabilmente non ci sarà bisogno di installarne uno.

5.5 Impostazione di una configurazione minimale di Linux su un server remoto.

Una configurazione minimale dovrebbe contenere i pacchetti a, ap, n ed x della distribuzione Slackware. Installare altri pacchetti non è un errore, comunque i pacchetti appena menzionati sono sufficienti ai fini di creare un terminale X senza unità disco. Per l'installazione c'è 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ù macchine senza unità disco, allora il setup tradizionale non funzionerà perché alcuni file e directory devono risultare private per la macchina. Il problema può 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:


/export/linux/macchina1/bin
/export/linux/macchina1/sbin
/export/linux/macchina1/lib
/export/linux/macchina1/etc
/export/linux/macchina1/var
/export/linux/macchina1/usr

Dopo i cambiamenti la struttura diventerà:


/export/linux/macchina1/bin
/export/linux/macchina1/sbin
/export/linux/macchina1/lib
/export/linux/macchina1/etc
/export/linux/macchina1/var
/export/linux/usr

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à possibile usare il seguente script bash per impostare le altre directory


        
        cd /export/linux
        for x in macchina2 macchina3 ; do
                mkdir $x; cd $x
                (cd ../macchina1; tar cf - *) | tar xvf -
        done

Poi create il seguente export:

nel modo seguente
il formato di questo esempio è conforme alla sintassi del SunOs 4.1.3 per i file exports
:

        
# Questo file è /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

Non dimenticate di eseguire exportfs -a.

5.6 Configurazione del server tftp

È giunto il momento di configurare il server tftp. Se non avete bisogno del tftp sicuro allora tutto è abbastanza facile ed i vostri client possono essere avviati dalla directory /export.

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à 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:


      mkdir -p /tftpboot/export/linux/macchina1
      cd /tftpboot/export/linux/macchina1
      cp /export/linux/macchina1/<nome del kernel> . 

In seguito digitate:


      mkdir -p /tftpboot/export/linux/macchina2
      cd ../macchina2 
      ln -s ../macchina2/<nome del kernel> 

5.7 Parte finale

Infine dovete inserire


   /sbin/mount nfs_server:/export/linux/usr /usr

come prima linea di


   /export/linux/<macchinax>/etc/rc.d/rc.S

dove <macchinax> sta per macchina1, macchina2, ecc.

6. Requisiti relativi alla memoria e allo spazio su disco; velocità

Io ho provato questo metodo solo con la Slackware 2.3; per altre distribuzioni/versioni i numeri seguenti possono cambiare.

7. Problemi

8. Errori e possibili ulteriori espansioni di questo documento