How to configure TFTP server in Linux

About TFTP from wiki page
Trivial File Transfer Protocol (TFTP) is a simple, lockstep, File Transfer Protocol which allows a client to get a file from or put a file onto a remote host. One of its primary uses is in the early stages of nodes booting from a local area network. TFTP has been used for this application because it is very simple to implement.
As explained above we use TFTP server mostly for performing PXE netboot on client nodes within the network.

Manually install tftp rpm on your linux distribution. This can be done depending upon your distribution.


On RHEL system you must have an active subscription to RHN or you can configure a local offline repository using which "yum" package manager can install the provided rpm and it's dependencies.

On RedHat and CentOS you can use "yum install tftp", while on SuSE distro you can use "zypper install tftp"
Once you have successfully installed tftp rpm follow the below steps

# rpm -qa | grep tftp

Create the directiry which you plan on using for TFTP share

# mkdir /tftpboot

NOTE: I will change permission of my tftp dir to 777 as I am going to demonstrate my server by uploading few files which will be done as 'nobody' user so I would need fill access to my tftp directory. Generally if you just plan on using it for PXE environment then 644 permission is more than enough.

# chmod 777 /tftpboot

Make the necessary changes to your tftp config file as below

# vi /etc/xinetd.d/tftp
# default: off
# description: tftp service is provided primarily for booting or when a
#       router need an upgrade. Most sites run this only on machines acting as
#       "boot servers".
service tftp
        socket_type             = dgram
        protocol                = udp
        wait                    = yes
        flags                   = IPv4  <-- If you also have IPv6 in your network, mention both values (eg. IPv4  IPv6)
        port                    = 69
        user                    = root
        server                  = /usr/sbin/in.tftpd
        server_args             = -c -s /tftpboot  <-- This is the tftp directory which will contain all files which can be picked by client
        disable                 = no  <-- Make sure this is 'no'

Save and exit the file
Restart the xinetd services

# /etc/init.d/xinetd restart
Shutting down xinetd: (waiting for all children to terminate)                  done
Starting INET services. (xinetd)                                               done

Let us test our tftp server
For this example I am going to use my Onboard Administrator from my HPE enclosure and will attempt to upload supportdump from the OA to my tftp server (

Login to OA CLI using Puttylogin as: HPadmin
WARNING: This is a private system.  Do not attempt to login unless you are an
authorized user.  Any authorized or unauthorized access and use may be moni-
tored and can result in criminal or civil prosecution under applicable law.
Firmware Version: 4.50
Built: 07/24/2015 @ 04:06
OA Bay Number:  1
OA Role:       Active
HPadmin@'s password:
HP BladeSystem Onboard Administrator
(C) Copyright 2006-2015 Hewlett-Packard Development Company, L.P.
Type 'HELP' to display a list of valid commands.
Bangalore1-01-01> upload SUPPORTDUMP tftp://
Starting background task to collect debug data. Return status will be displayed when it is done. You can continue working during this process or log off.
Successfully uploaded file

Let us go back and check our tftp server if the files are successfully uploaded

cc01-nds-ins:/tftpboot # ll
total 624
-rw-rw-rw- 1 nobody nobody 605352 Sep 13 16:16 log1

Well looks like our TFTP server is working as expected.