buci@math.klte.hu
. Tradotto da Salvatore Meschini
smeschini@ermes.it
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.
94004531@postoffice.csu.edu.au
/usr/src/linux/README
configurazione e compilazione di nuovi kernel
Tutto ciò che è descritto nel documento è stato provato con la configurazione seguente:
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:
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.
Fate riferimento a patch(1)
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.
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:
# tftp dgram udp wait root /usr/sbin/in.tftpd tftpd /export
# bootps dgram udp wait root /usr/sbin/in.bootpd bootpd
bootps 67/tcp # BOOTP server
tftp 69/udp # TFTP server
kill -HUP <id del processo inetd>.
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:
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:
/export/root/machine1
.
Quando invece si usa il tftp sicuro con /export come directory di root, /export
diviene / ed il campo hd deve essere /root/macchina1
.
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:
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.
È 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>
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.
Io ho provato questo metodo solo con la Slackware 2.3; per altre distribuzioni/versioni i numeri seguenti possono cambiare.
buci@math.klte.hu
. Grazie.