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 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.
Nota | |
---|---|
Su un server Debian GNU/Linux è raccomandato |
Un server DHCP libero è dhcpd di ISC. In Debian GNU/Linux si raccomanda il pacchetto isc-dhcp-server
. Segue un esempio del file di configurazione per questo server (di solito /etc/dhcp/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.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/isc-dhcp-server restart
.
Questo è un altro esempio di dhcp.conf
che usa il metodo PXE (Pre-boot Execution Environment) di TFTP.
option domain-name "example.com"; default-lease-time 600; max-lease-time 7200; allow booting; allow bootp; # The next paragraph needs to be modified to fit your case subnet 192.168.1.0 netmask 255.255.255.0 { range 192.168.1.200 192.168.1.253; option broadcast-address 192.168.1.255; # the gateway address which can be different # (access to the internet for instance) option routers 192.168.1.1; # indicate the dns you want to use option domain-name-servers 192.168.1.3; } group { next-server 192.168.1.3; host tftpclient { # tftp client hardware address hardware ethernet 00:10:DC:27:6C:15; filename "pxelinux.0"; } }
Notare che con l'avvio PXE, il nome del file client pxelinux.0
è il bootloader, non l'immagine del kernel (si consulti Sezione 4.5.4, «Posizionamento delle immagini TFTP»).
Chi utilizza una macchina con avvio UEFI deve indicare un boot loader idoneo, per esempio
group { next-server 192.168.1.3; host tftpclient { # tftp client hardware address hardware ethernet 00:10:DC:27:6C:15; filename "debian-installer/amd64/bootnetx64.efi"; } }
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 isc-dhcp-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.5.4, «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.5.1, «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 in /etc/dhcp/dhcpd.conf
e riavviare dhcpd usando /etc/init.d/isc-dhcp-server restart
.
Per avere un server TFTP pronto all'uso è necessario assicurarsi che tftpd sia attivo.
Il servizio tftpd-hpa
può funzionare in due modalità. Può essere avviato su richiesta dal demone di sistema inetd
oppure come demone indipendente. La scelta della modalità di esecuzione è fatta durante l'installazione del pacchetto e può essere modificata riconfigurando il pacchetto.
Nota | |
---|---|
Storicamente i server TFTP hanno usato |
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.
Spostare le immagini TFTP di cui si ha bisogno (come descritto in Sezione 4.2.1, «Dove trovare i file 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.
Tutte le operazioni necessarie per l'avvio con PXE sono già state preparate in netboot/netboot.tar.gz
. Estrarre questo tarball nella directory delle immagini di avvio tftpd e assicurarsi che il server dhcp sia configurato per passare pxelinux.0
come nome del file da avviare a tftpd. Su macchine UEFI è necessario passare il nome di un'immagine di avvio EFI (quale /debian-installer/amd64/bootnetx64.efi
).