TFTP: File transfer nel mondo embedded

7d91d8110ca160fcedd9e8e82f337a9ePer molti versi il tftp è un protocollo ormai superato, principalmente perché di alcune features tipiche dei protocolli più evoluti come ftp o sftp, tuttavia ha un grandissimo vantaggio: è estremamente semplice.

Per questo motivo è ancora molto utilizzato nelle applicazioni embedded per caricare files su dispositivi che non hanno grandi dimensioni delle memorie di massa e CPU votate più alla riduzione dei consumi che alle prestazione.

Non a caso il tftp è integrato in u-boot che si può considerare il boot-loader leader del mondo embedded.

Vediamo come installarlo in pochi semplici passi. Prendiamo come riferimento una distribuzione Debian o Ubuntu ma tutte le operazioni sono facilmente applicabili ad ogni altra distribuzione.

I pacchetti disponibili in Debian che offrono questo tipo di servizio sono (dal più spartano al più evoluto):

  • tftpd – Trivial file transfer protocol server.
  • atftpd – Advanced TFTP server.
  • tftpd-hpa – HPA’s tftp server.
  • dnsmasq – Lightweight DNS, TFTP and DHCP server.

Partiamo con installare i pacchetti necessari per la versione più semplice e spartana (tftpd) ma comunque più che sufficiente alla maggioranza delle necessità:

sudo apt-get install xinetd tftpd tftp

tftpd è molto semplice e viene gestito tramite il super demone xined.d (alcune versioni più evolute installano tftp come servizio indipendente ed è quindi possibile saltare questo passaggio).
Creaiamo il file /etc/xinetd.d/tftp inserendo il seguente contentuo:


service tftp
{
protocol = udp
port = 69
socket_type = dgram
wait = yes
user = nobody
server = /usr/sbin/in.tftpd
server_args = /opt/tftpboot
disable = no
}

Creiamo la directory necessaria:


$ sudo mkdir /opt/tftpboot
$ sudo chmod -R 777 /opt/tftpboot
$ sudo chown -R nobody /opt/tftpboot

Facciamo ripartire xined con uno (scegliete quello piu indicato per la vostra distribuzione)


$ sudo /etc/init.d/xinetd restart
o
$ sudo service xinetd restart
o
$ sudo restart xined

Installazione completata. E’ possibile testare l’installazione con:


$ echo "Grazie ZioGeek." > /opt/tftpboot/test.txt
$ cd tmp
tftp 127.0.0.1
tftp>get test.txt
Received 17 bytes in 0. seconds
tftp>quit
$ cat test.txt
Grazie ZioGeek.

Tag: