Avanti Indietro Indice


2. Introduzione al boot via rete e all'Etherboot

 

2.1 Cosa è il boot via rete

Il boot via rete è una vecchia idea; l'idea di base è che il computer abbia un qualche codice di bootstrap nella memoria non volatile, cioè un chip ROM o un floppy, che gli permetterà di contattare un server per ottenere i file di sistema attraverso un collegamento di rete.

 

2.2 Come funziona

Perché sia possibile un boot attraverso la rete il computer deve ricevere:


1. un'identità, (SERVER DHCP)


2. un'immagine del sistema operativo e, (SERVER TFTP)


3. un file system funzionante. (SERVER NFS)

 

Consideriamo un computer diskless (DC) che abbia una floppy per il boot via rete. Potrebbe essere uno di vari DC identici, come possiamo distinguere questo computer dagli altri? C'è una informazione che è unica per quel computer (in realtà per il suo adattatore di rete) ed è il suo indirizzo Ethernet (MAC Address). Ogni adattatore Ethernet nel mondo ha un indirizzo Ethernet univoco di 48 bit; ciò perché ad ogni costruttore di hardware Ethernet sono stati assegnati dei blocchi di indirizzi. Per convenzione tali indirizzi sono scritti con cifre esadecimali, con i due punti che separano ogni gruppo di due cifre; ad esempio: 00:60:08:C7:A3:D8.

I protocolli usati per ottenere un indirizzo IP, dato un indirizzo Ethernet, sono chiamati Boot Protocol (BOOTP) e Dynamic Host Configuration Protocol (DHCP, protocollo di configurazione dinamica dell'host). DHCP è una evoluzione di BOOTP. Nella nostra configurazione utilizziamo il DHCP SERVER.

Un esempio di scambio DHCP funziona così:

DC : Salve, il mio indirizzo hardware è 00:60:08:C7:A3:D8, per favore dammi il mio indirizzo IP.

server DHCP : (guardando nel database degli indirizzi) Il tuo nome è 486, il tuo indirizzo IP è 172.16.0.51, il tuo server è 172.16.1.1, il file da cui effettuare il boot è tftpboot/172.16.0.51/vmlinuz.prova (più qualche altra informazione).

Da notare che il file dal quale il DC deve effettuare il bootstrap e' contenuto nella directory 'tftpboot/172.16.0.51/vmlinux.prova' dove 172.16.0.51 indica l'indirizzo ip della macchina.

Ci si potrebbe chiedere come ha fatto il DC a trovare l'indirizzo del server DHCP la prima volta. La risposta è che non l'ha fatto; la richiesta DHCP è stata diffusa in broadcast sulla rete locale e qualsiasi server DHCP in grado di rispondere lo ha fatto.

Dopo aver ottenuto un indirizzo IP, il DC deve scaricare l'immagine di un sistema operativo ed eseguirlo. Qui viene usato un altro protocollo Internet chiamato Trivial File Transfer Protocol (TFTP – protocollo elementare per il trasferimento file). Il TFTP è una specie di versione ridotta dell'FTP ---> non c'è autenticazione e funziona sullo User Datagram Protocol (UDP) invece che sul Transmission Control Protocol (TCP). È stato scelto l'UDP al posto del TCP a causa della semplicità; l'implementazione dell'UDP sul DC può essere abbastanza piccola da permettere di farne facilmente entrare il codice in una ROM. Visto che l'UDP è un codice orientato ai blocchi, al contrario di uno orientato al protocollo, il trasferimento avviene blocco per blocco, in questo modo:

DC: Dammi il blocco 1 di /tftpboot/172.16.0.51/vmlinuz.prova

server TFTP: Eccolo.

DC: Dammi il blocco 2.


...e così via, finché non viene trasferito l'intero file. L'handshaking è basato su una semplice conferma di ogni blocco e la perdita di pacchetti è gestita ritrasmettendo dopo un timeout. Quando sono stati ricevuti tutti i pacchetti la ROM di boot della rete passa il controllo all'entry point dell'immagine del sistema operativo.
 

Concludendo, per poter eseguire un sistema operativo deve essere fornito un filesystem principale. Il protocollo usato da Linux e da altri Unix di solito è il Network File System (NFS - file system di rete), sebbene siano possibili altre scelte. In questo caso il codice non deve risiedere nella ROM ma può essere parte del sistema operativo che si è appena scaricato. Comunque il sistema operativo deve essere capace di girare con un file system principale che sia un NFS invece che un vero disco. Linux ha le variabili di configurazione necessarie per compilare una versione che possa farlo.

 

 


Avanti Indietro Indice