4.3. Preparazione dei file per l'avvio TFTP da rete

Se la propria macchina è connessa a una rete locale allora è possibile avviarla tramite TFTP da un'altra macchina. Se si vuole avviare il sistema d'installazione da un'altra macchina è necessario che i file d'avvio siano contenuti in particolari directory di questa macchina e che sia configurata per gestire l'avvio della propria macchina.

È necessario attivare un server TFTP e, per più macchine un server DHCP o un server RARP o un server BOOTP.

Il RARP (Reverse Address Resolution Protocol) è un metodo per comunicare ai client quale indirizzo IP usare. In alternativa è possibile usare il protocollo BOOTP. BOOTP è un protocollo IP che comunica a un computer qual è il proprio indirizzo IP e dove può recuperare dalla rete un'immagine per l'avvio. Il DHCP (Dynamic Host Configuration Protocol) è una estensione più flessibile ma compatibile all'indietro di BOOTP. Alcuni sistemi possono essere configurati solo tramite DHCP.

Il TFTP (Trivial File Transfer Protocol) è usato per fornire l'immagine di avvio al client. Teoricamente si può usare un qualsiasi server, su qualsiasi architettura che implementi questo protocollo. Negli esempi di questa sezione sono presentati i comandi per SunOS 4.x, SunOS 5.x (noti come Solaris) e GNU/Linux.

4.3.1. Attivazione di un server RARP

Per impostare un server RARP è necessario conoscere l'indirizzo Ethernet (noto anche come indirizzo MAC) dei computer client da installare. Se non si conoscono queste informazioni è possibile leggerlo nei primi messaggi durante l'avvio di OpenPROM, usare il comando .enet-addr di OpenBoot oppure avviare in modalità «Ripristino» (p.e. da un dischetto di ripristino) e usare il comando /sbin/ifconfig eth0.

Su un server RARP con kernel Linux 2.4 o 2.6, oppure con Solaris/SunOS, usare il programma rarpd. Assicurarsi che l'indirizzo Ethernet del client sia elencato nel database «ethers» (nel file /etc/ethers o tramite NIS/NIS+) e nel database «hosts». Poi si deve avviare il demone RARP eseguendo (da root): /usr/sbin/rarpd -a per la maggior parte dei sistemi Linux e SunOS 5 (Solaris 2), /usr/sbin/in.rarpd -a per alcuni sistemi Linux oppure /usr/etc/rarpd -a per SunOS 4 (Solaris 1).

4.3.2. Attivazione di un server BOOTP

Per GNU/Linux sono disponibili due server BOOTP. Il primo è bootpd di CMU, l'altro è un server DHCP: dhcpd di ISC. Questi server sono rispettivamente contenuti nei pacchetti Debian GNU/Linux bootp e dhcp3-server.

Per usare bootpd di CMU è necessario togliere i commenti (o aggiungere) la relativa riga in /etc/inetd.conf. Su Debian GNU/Linux è possibile usare update-inetd --enable bootps e poi /etc/init.d/inetd reload per fare questa operazione. Solo nel caso in cui il proprio server BOOTP non sia Debian, la riga in questione dovrebbe essere simile a questa:

bootps  dgram  udp  wait  root  /usr/sbin/bootpd  bootpd -i -t 120

Adesso è necessario creare il file /etc/bootptab. Questo file ha lo stesso formato criptico dei file printcap, termcap e disktab di BSD. Vedere la pagina di manuale di bootptab per maggiori informazioni. Per bootpd di CMU è necessario conoscere qual è l'indirizzo hardware (MAC) del client. Questo è un esempio di /etc/bootptab:

client:\
  hd=/tftpboot:\
  bf=tftpboot.img:\
  ip=192.168.1.90:\
  sm=255.255.255.0:\
  sa=192.168.1.1:\
  ha=0123456789AB:

È necessario cambiare almeno l'opzione «ha» che specifica l'indirizzo hardware del client. L'opzione «bf» specifica quale file deve essere recuperato dal client tramite TFTP; si consulti Sezione 4.3.5, «Posizionamento delle immagini TFTP» per ulteriori dettagli.

Al contrario l'impostazione di BOOTP con dhcpd di ISC è veramente semplice poiché tratta i client BOOTP come un caso moderatamente speciale dei client DHCP. Alcune architetture richiedono una complessa configurazione dei client per l'avvio con BOOTP, se si possiede una di queste leggere la sezione Sezione 4.3.3, «Attivazione di un server DHCP». In caso contrario per proseguire è sufficiente aggiungere la direttiva allow bootp al blocco di configurazione della subnet a cui appartiene il client e riavviare dhcpd usando /etc/init.d/dhcpd3-server restart.

4.3.3. Attivazione di un server DHCP

Un server DHCP libero è dhcpd di ISC. In Debian GNU/Linux si raccomanda il pacchetto dhcp3-server. Segue un esempio del file di configurazione per questo server (di solito /etc/dhcp3/dhcpd.conf):

option domain-name "example.com";
option domain-name-servers ns1.example.com;
option subnet-mask 255.255.255.0;
default-lease-time 600;
max-lease-time 7200;
server-name "servername";

subnet 192.168.1.0 netmask 255.255.255.0 {
  range 192.168.1.200 192.168.1.253;
  option routers 192.168.1.1;
}

host clientname {
  filename "/tftpboot/tftpboot.img";
  server-name "servername";
  next-server servername;
  hardware ethernet 01:23:45:67:89:AB;
  fixed-address 192.168.1.90;
}

In questo esempio c'è una macchina servername che fa da server DHCP, da server TFTP e da gateway di rete. Sicuramente è necessario cambiare le opzioni domain-name, il nome del server e anche l'indirizzo hardware del client. Il valore dell'opzione filename deve essere il nome del file che verrà recuperato tramite TFTP.

Dopo aver modificato il file di configurazione di dhcpd riavviarlo con /etc/init.d/dhcpd3-server restart.

4.3.4. Attivazione di un server TFTP

Per avere un server TFTP pronto all'uso è necessario assicurarsi che tftpd sia attivo. Di solito viene attivato da una riga simile a questa in /etc/inetd.conf:

tftp dgram udp wait nobody /usr/sbin/tcpd in.tftpd /tftpboot

Solitamente i pacchetti Debian impostano correttamente il server durante l'installazione.

Nota

Storicamente i server TFTP hanno usato /tftpboot come directory dalla quale servire le immagini. Invece, i pacchetti Debian GNU/Linux potrebbero usare una directory diversa in modo da essere conformi al Filesystem Hierarchy Standard. Per esempio tftpd-hpa usa /var/lib/tftpboot; potrebbe essere necessario modificare gli esempi presenti in questa sezione in base alla propria configurazione.

Cercare all'interno del file /etc/inetd.conf la directory usata come argomento di in.tftpd e prenderne nota[2], sarà necessaria in seguito. Se è stato necessario modificare /etc/inetd.conf si deve passare la nuova configurazione al processo inetd in esecuzione, su una macchina Debian eseguire /etc/init.d/inetd reload; su macchine diverse si deve scoprire qual è l'ID del processo inetd ed eseguire kill -HUP pid-di-inetd.

4.3.5. Posizionamento delle immagini TFTP

Spostare le immagini TFTP di cui si ha bisogno (come descritto in Sezione 4.2.1, «Dove trovare le immagini per l'installazione») nella directory delle immagini di avvio per TFTP. Potrebbe essere necessario fare un link da questa directory al file che tftpd dovrà utilizzare per l'avvio di un particolare client. Sfortunatamente il nome del file è stabilito dal client TFTP e non esiste uno standard.

4.3.5.1. Avvio di macchine SPARC con TFTP

Alcune architetture SPARC aggiungono il nome della sottoarchitettura al nome del file, per esempio «SUN4M» o «SUN4C». Di conseguenza se la sottoarchitettura del proprio sistema è SUN4C e il suo indirizzo IP è 192.168.1.3, il nome del file dovrebbe essere C0A80103.SUN4C. Purtroppo ci sono anche altre sottoarchitetture che usano file il cui nome è semplicemente ip-del-client-in-hex. Un modo semplice per determinare il codice in esadecimale dell'indirizzo IP è eseguire il seguente comando nella shell (si suppone che l'IP della macchina sia 10.0.0.4).

$ printf '%.2x%.2x%.2x%.2x\n' 10 0 0 4

Per ottenere il corretto nome del file è necessario cambiare tutte le lettere in maiuscole e, se necessario, aggiungere il nome della sottoarchitettura.

Se tutti i passi sono stati eseguiti correttamente, usando il comando boot net da OpenPROM dovrebbe iniziare il caricamento dell'immagine. Se non è possibile trovare l'immagine, controllare nei log del server tftp quale nome è stato usato per richiederla.

È anche possibile forzare alcuni sistemi sparc a cercare un particolare file aggiungendone il nome alla fine del comando boot di OpenPROM, per esempio boot net my-sparc.image. Questo file deve essere nella directory in cui il server TFTP ricerca i file.



[2] Tutte le versioni di in.tftpd disponibili in Debian registrano le richieste TFTP sul log di sistema e alcune versioni supportano l'opzione -v per aumentare la verbosità. In caso di problemi d'avvio, si raccomanda di verificare i messaggi nel log poiché sono un ottimo punto di partenza per la diagnosi della causa degli errori.